Android Geocoder和Google Geocoding网络服务之间的结果不同

G.T*_*.T. 6 android google-geocoding-api google-maps-android-api-2

我正在创建一个Android应用程序,我需要使用地理位置.

我已经开始使用Android的Geocoder API(android.location.geocoder),但它会导致一些问题(等待服务器响应的时间超时),根据我所读的内容,这似乎很常见.

为了使我的应用程序在发生此类错误时正常工作,我使用了Geocoding Web服务.

现在,应用程序每次都有效.问题是地理编码器从API返回的结果和来自Web服务的地理编码器的结果不一样.

例如,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;
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

它基本上试图从API Geocoder获取地址列表.如果抛出IO异常,它将使用从此处粘贴的GeocoderRest类从Web服务获取此列表:https://stackoverflow.com/a/15117087/3571822

Ste*_*ett 1

有没有办法让 Web 服务的结果与 API 的结果完全相同?

根本不。在大多数尝试中,这两个地理编码器之间总是存在差异。因为android.location.Geocoder在内部使用了一个 Service,你无法在源代码中找到它,所以你永远不会现在确切的区别在哪里,而是询问 Google。我认为他们不会泄露这些信息。

顺便说一句,您使用的 GeocoderRest 类甚至不解析响应中包含的一半信息。通常 Web 服务比 SDK 中的 API 更可靠。