Android Geocoder 和 Google Geocoding Web 服务之间的不同结果
Posted
技术标签:
【中文标题】Android Geocoder 和 Google Geocoding Web 服务之间的不同结果【英文标题】:Different results between Android Geocoder and Google Geocoding web service 【发布时间】:2014-07-23 23:04:47 【问题描述】:我正在创建一个 android 应用程序,我需要使用地理位置。
我已经开始使用来自 Android (android.location.geocoder) 的 Geocoder API,但它会导致一些问题(等待服务器响应超时),这似乎根据我所读到的内容是常见的。
为了让我的应用程序在发生此类错误时正常工作,我使用了地理编码网络服务。
现在,该应用程序每次都能正常工作。问题是API的geocoder和web service的geocoder返回的结果不一样。
例如,Web 服务仅返回 3 个地址,其中仅包含城市名称和国家/地区,而来自 API 的地理编码返回大约 8 个地址,其中包含要素名称、通道、地区......
问题是:有没有办法让 Web 服务的结果与 API 的结果完全相同?
编辑
这是我的 MainGeocoder 类:
public class MainGeocoder
private Geocoder geocoderAPI;
private GeocoderRest geocoderRest;
public MainGeocoder(Context context)
geocoderAPI = new Geocoder(context);
geocoderRest = new GeocoderRest(context);
public List<Address> getFromLocationName(String search, int maxResults)
List<Address> addresses;
try
addresses = geocoderAPI.getFromLocationName(search, maxResults);
return addresses;
catch (IOException e)
e.printStackTrace();
try
addresses = geocoderRest.getFromLocationName(search, maxResults);
return addresses;
catch (IOException e1)
return null;
catch (LimitExceededException e1)
return null;
它基本上尝试从 API Geocoder 获取地址列表。如果抛出 IO 异常,它会使用从此处粘贴的 GeocoderRest 类从 Web 服务获取此列表:https://***.com/a/15117087/3571822
【问题讨论】:
你能发布你的代码来调用地理编码器和网络服务吗?我也使用了类似的技术,但是从地理编码网络服务返回的 json 很大 我在编辑中添加了代码。 【参考方案1】:有没有办法让网络服务的结果完全符合 与 API 中的相同?
根本没有。在大多数尝试中,这两个地理编码器之间总会存在差异。因为android.location.Geocoder 在内部使用了一个服务,你无法在源代码中找到它,所以你现在永远不会知道具体的区别在哪里,而是询问谷歌。而且我认为他们不会泄露这些信息。
顺便说一句,您使用的 GeocoderRest 类甚至不会解析响应中包含的一半信息。通常 Web 服务比 SDK 中的 API 更可靠。
【讨论】:
它不会解析所有信息,但在某些情况下我需要的信息不可用(例如通道)......似乎对于法国来说,API 提供的信息比网络服务更多.感谢您的帮助以上是关于Android Geocoder 和 Google Geocoding Web 服务之间的不同结果的主要内容,如果未能解决你的问题,请参考以下文章
geocoder.getFromLocationName 仅返回 null
在 typescript/javascript 的 google.maps.Geocoder().geocode() 上使用全局变量
使用 google.maps.geocoder 检索位置的纬度/经度
Google map v3 Geocoder 向后兼容性 [重复]