如何从 Android 中的名称或纬度获取 PlaceID?
How to get PlaceID from name, or lat, long in Android?
这是我的代码:
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
的经纬度名称
然后在下面调用 google api
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"
}
在那里你会得到地点编号。
Note: Please enable the GeoLocation Api from Google Developer Console otherwise it return the error msg :This API project is not authorized to use this API.
您也可以使用 直接 搜索代替 nearbysearch
https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&key=YOUR_API_KEY
这两种提议的方式都需要花钱,我认为人们应该提一下。我们有来自 Google 的 -$200,但这完全取决于您拥有多少用户以及您需要使用地理编码的频率。每月向地理编码器发出 6 万次请求 - 使用地理编码 https API :
只需 300 美元
2018 年 11 月 1 日至 30 日
地理编码 API 地理编码:6073 次 - 30.38 美元
不要在回复中过滤您需要的内容,就像我们在其他帖子的请求中一样?期待更多:
2018 年 11 月 1 日至 30 日
地点 API 地点详情:2389 个 40.61 美元
2018 年 11 月 1 日至 30 日
地点 API 联系数据:2385 次计数 $7.17
2018 年 11 月 1 日至 30 日
地点 API 大气数据:2385 次计数 $11.95
我确实建议使用这样获取地点 ID。这比直接调用 API 更好。
我整天都在为这个问题绊倒。所以我希望这会有所帮助。谁正在寻找出路以从您当前的位置获取地点 ID。
android
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
这是我的代码:
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
的经纬度名称
然后在下面调用 google api
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"
}
在那里你会得到地点编号。
Note: Please enable the GeoLocation Api from Google Developer Console otherwise it return the error msg :This API project is not authorized to use this API.
您也可以使用 直接 搜索代替 nearbysearch
https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&key=YOUR_API_KEY
这两种提议的方式都需要花钱,我认为人们应该提一下。我们有来自 Google 的 -$200,但这完全取决于您拥有多少用户以及您需要使用地理编码的频率。每月向地理编码器发出 6 万次请求 - 使用地理编码 https API :
只需 300 美元2018 年 11 月 1 日至 30 日 地理编码 API 地理编码:6073 次 - 30.38 美元
不要在回复中过滤您需要的内容,就像我们在其他帖子的请求中一样?期待更多:
2018 年 11 月 1 日至 30 日 地点 API 地点详情:2389 个 40.61 美元
2018 年 11 月 1 日至 30 日 地点 API 联系数据:2385 次计数 $7.17
2018 年 11 月 1 日至 30 日 地点 API 大气数据:2385 次计数 $11.95
我确实建议使用这样获取地点 ID。这比直接调用 API 更好。 我整天都在为这个问题绊倒。所以我希望这会有所帮助。谁正在寻找出路以从您当前的位置获取地点 ID。 android
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