如何在Android中从name或lat、long获取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的名称或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

最新更新