这是我的代码:
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来自name或lat,从上面的代码获取PlaceID。谢谢!
答案 0 :(得分:8)
看看这个docs。
您将获得https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=-33.8670522,151.1957362&radius=500&types=food&name=cruise&key=YOUR_API_KEY
的lat,long名称
然后在google api下面调用它
{
"html_attributions" : [],
"results" : [
{
"geometry" : {
"location" : {
"lat" : -33.870775,
"lng" : 151.199025
}
},
...
"place_id" : "ChIJrTLr-GyuEmsRBfy61i59si0",
...
}
],
"status" : "OK"
}
你会得到这样的回复
{{1}}
在那里,你将得到地方ID。
注意:请从Google Developer Console启用GeoLocation Api,否则会返回错误消息:此API项目无权使用此API。
答案 1 :(得分:3)
您还可以使用直接搜索代替 nearbysearch
<table id="isc_U5" class="OBFormFieldSelectControl" cellspacing="0" cellpadding="0" style="cursor:default;WIDTH:307px;" $9a="$9f" $89="isc_OBFKComboItem_8" role="presentation">
<tbody>
<tr>
<td style="white-space:nowrap;">
<input id="isc_U3" class="OBFormFieldSelectInputRequired" type="TEXT" tabindex="4078" style="WIDTH:281px;HEIGHT:17px;-moz-user-focus:normal;" autocomplete="OFF" onselect="isc_OBFKComboItem_8.$1162()" oninput="isc_OBFKComboItem_8._handleInput()" spellcheck="true" $9a="$9b" $89="isc_OBFKComboItem_8" handlenativeevents="false" name="transactionDocument"/>
</td>
<td id="isc_U7" class="OBFormFieldSelectPickerIcon" style="font-size:21px;">
</tr>
</tbody>
</table>
答案 2 :(得分:0)
这两种提议的方式都要花钱,我认为人们应该提一下。 Google提供了-200美元,但这取决于您拥有多少用户以及您需要使用地理编码的频率。每月向地址解析器发送6万个请求-仅需300美元即可使用地址解析器https API:
2018年11月1日至30日 地理编码API地理编码:6073个计数-$ 30.38
不过滤您在响应中需要的内容,就像我们在其他帖子的请求中一样吗?期待更多:
2018年11月1日至30日 Places API位置详情:2389个计数$ 40.61
2018年11月1日至30日 地方API联系数据:2385计数$ 7.17
2018年11月1日至30日 地方API大气数据:2385计数$ 11.95
答案 3 :(得分:0)
我建议您像这样使用“获取位置ID”。比直接调用API更好。 我整日为这个问题而迷迷糊糊。所以我希望这会有所帮助。谁在寻找从当前位置获取位置ID的出路。 对于Android
科特琳
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