这是我的代码:
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的名称或lat。谢谢
看看这些文档。您将获得Address
的lat、long名称然后调用下面的谷歌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"
}
因为在那里你会得到位置。
注意:请从Google开发者控制台启用GeoLocation Api,否则它将返回错误消息:此Api项目未被授权使用此Api。
您也可以使用直接搜索,而不是近邻搜索https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&key=YOUR_API_KEY
查看地理编码入门
这两种提议的方式都很花钱,我认为人们应该提到这一点。我们从谷歌那里得到了-200美元,但这完全取决于你有多少用户以及你需要使用地理编码的频率。每月向地理编码器发送60k个请求-仅使用地理编码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
我建议使用这样的get the Place 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