web-dev-qa-db-ja.com

Androidで名前または緯度からPlaceIDを取得するにはどうすればよいですか?

これは私のコードです:

Geocoder geocoder = new Geocoder(this, Locale.getDefault());
    List<Address> addresses = geocoder.getFromLocationName(text, 10);
    test.clear();
    for (int i = 0; i < addresses.size(); i++) {
        Address address = addresses.get(i);
        for (int j=0;j<address.getMaxAddressLineIndex();j++) {
            test.add(address.getAddressLine(j) + ", " + address.getCountryName());
//                address.getLatitude();
//                address.getLatitude();
            }
        }

しかし、address.getPlaceID()のようなものが見つかりません。

たぶん私は別のAPIを使用して、上記のコードから長い名前または緯度からPlaceIDを取得します。ありがとう!

8
rome 웃

これを見てください docsAddressのlat、long、nameを取得し、これをgoogleapiの下で呼び出します。

https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=-33.8670522,151.1957362&radius=500&types=food&name=cruise&key=YOUR_API_KEY

このような応答があります

{
  "html_attributions" : [],
  "results" : [
    {
      "geometry" : {
        "location" : {
          "lat" : -33.870775,
          "lng" : 151.199025
        }
      },
      ...
      "place_id" : "ChIJrTLr-GyuEmsRBfy61i59si0",
      ...
    }
  ],
  "status" : "OK"
}

そこで、place-idを取得します。

注:GeoLocation Apiを Google Developer Console から有効にしてください。有効にしないと、エラーメッセージが返されます:このAPIプロジェクトはこのAPIの使用を許可されていません。

9
Soham

nearbysearchhttps://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&key=YOUR_API_KEYの代わりにdirect検索を使用することもできます

ジオコーディング入門 をご覧ください

3
Yvgen

提案された方法は両方ともお金がかかります、そして私は人々がそれについて言及するべきだと思います。 Googleから-$ 200がありますが、それはすべて、ユーザーの数とジオコードを使用する必要がある頻度によって異なります。ジオコーダーへの月額60,000件のリクエスト-ジオコードhttpsAPIを使用する場合にのみ簡単に$ 300

2018年11月1日〜30日ジオコーディングAPIジオコーディング:6073カウント-30.38ドル

他の投稿からのリクエストのように、レスポンスで必要なものをフィルタリングしないでください。もっと期待してください:

2018年11月1日から30日プレイスAPIプレイスの詳細:2389カウント$ 40.61

2018年11月1日から30日までPlacesAPIの連絡先データ:2385カウント$ 7.17

2018年11月1日から30日までの場所API雰囲気データ:2385カウント$ 11.95

1
Alex

このようにプレイスIDを取得することをお勧めします。 APIを直接呼び出すよりも良いでしょう。私は一日中この問題につまずきます。だから私はそれが助けになることを願っています。あなたの現在の場所から場所IDを取得する方法を見つけている人。アンドロイド用

Kotlin

val mPlaceDetectionClient = Places.getPlaceDetectionClient(this.context!!)  
val placeResult =  mPlaceDetectionClient.getCurrentPlace(null) 
placeResult.addOnCompleteListener(object : OnCompleteListener<PlaceLikelihoodBufferResponse>{
    override fun onComplete(p0: Task<PlaceLikelihoodBufferResponse>) {
        val likelyPlaces = p0.result
        if(likelyPlaces.any()){
            // get the place ID from code below
            placeId = likelyPlaces[0].place.id  }
    }

})

または、Javaなどの別の言語で実装または開発している場合。以下のリファレンスに従ってコードを実装できます。

Java

https://developers.google.com/places/Android-sdk/googleapi-migration

0
Sup.Ia