Geocoder在Android移动设备上的实施有多广泛?

时间:2012-08-25 13:59:10

标签: android geolocation geocoding mobile-devices

我需要按街道名称获取经度和纬度。我看到Geocoder能做到这一点。文档告诉我们“Geocoder类需要一个未包含在核心android框架中的后端服务”。这意味着我无法确定Geocoder是否在Android设备中实现。

我的问题是,Geocoder的实施有多广泛。如果没有Geocoder的设备很少,我可以忍受,但如果有很多设备,我必须重新考虑我的应用程序的这个功能。


2 个答案:

答案 0 :(得分:2)

我们应该使用GeoCoder类的isPresent()方法来决定。

http://developer.android.com/reference/android/location/Geocoder.html#isPresent()

答案 1 :(得分:1)

GeoCoder客户端与Google地图一起提供,因此任何使用Google地图的设备都应具有可用的GeoCoder实施方案。总体而言,Android设备已安装Google地图。除此之外,可能没有谷歌地图,以及其他一些GeoCoder后端。在这种情况下,您可以使用以下代码来确定设备是否具有可用的GeoCoder实现:

final Geocoder geocoder = new Geocoder(this);
final String locName = "1600 Amphitheatre Parkway, Mountain View, CA";
try {
    final List<Address> list = geocoder.getFromLocationName(locName, 1);
    if ( ! (list == null || list.isEmpty()) ) {
        final Address address = list.get(0);
        System.out.println("Geocoder backend present, (lat,lon) = (" + address.getLatitude() + ", " + address.getLongitude() + ")");
    }
    else {
        System.out.println("Geocoder backend not present");
    }
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}