我正在尝试将从Marker检索到的LatLng反转GeoCode以获取地址。我很容易得到街道地址,但getFromLocation()返回的地址从不包含商业名称(例如Tim Hortons)。我知道问题不在于坐标,因为当我使用" getFromLocationName()"在我的代码的不同部分返回相同的结果时相反,我得到友好的名字。我看不出为什么getFromLocation()的返回应该与getFromLocationName()' s不同。
以下是相关代码:
private String holderAddress;
...
mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
getAddress(marker.getPosition());
...
private void getAddress(LatLng latLng){
Geocoder reverseGeo = new Geocoder(this, Locale.getDefault());
Address processAddress = null;
try {
processAddress = reverseGeo.getFromLocation(latLng.latitude,
latLng.longitude, 1).get(0);
}catch(Exception e){
Log.v("Reverse Geocode failed", e.getMessage());
}
if (processAddress != null) {
holderAddress = processAddress.getAddressLine(0);
} else {
holderAddress = "(" + latLng.latitude + "," + latLng.longitude + ")";
}
}
我尝试检索多个结果并阅读所有地址行以及功能名称。好像" getFromLocation()"永远不会返回商业名称,而" getFromLocationName()"总是设法抓住友好的名字。
对于我获得此结果的原因或可能的解决方法建议的任何见解都表示赞赏。
感谢。
答案 0 :(得分:0)
我的结论是,地理编码根本不适用于实时查找地点。虽然有一个getFeatureName()字段,但它似乎只返回对精确GPS坐标有用的任何内容,因此丢弃一个引脚几乎不会产生有用的fetaure名称。
我已转而使用Google Places API进行商家名称查询,为了保持一致性,我现在也使用Places API附近的搜索进行搜索而不是地理编码。