これは私のコードです:
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を取得します。ありがとう!
これを見てください docs 。 Address
の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の使用を許可されていません。
nearbysearchhttps://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&key=YOUR_API_KEY
の代わりにdirect検索を使用することもできます
ジオコーディング入門 をご覧ください
提案された方法は両方ともお金がかかります、そして私は人々がそれについて言及するべきだと思います。 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
このようにプレイス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