地理编码器在 Android 移动设备上的实施范围有多广?

Posted

技术标签:

【中文标题】地理编码器在 Android 移动设备上的实施范围有多广?【英文标题】:How widespread is Geocoder implementation on Android mobile devices? 【发布时间】:2012-08-25 13:59:10 【问题描述】:

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

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


【问题讨论】:

【参考方案1】:

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

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

【讨论】:

【参考方案2】:

GeoCoder 客户端随 Google Maps 一起提供,因此任何带有 Google Maps 的设备都应该有一个有效的 GeoCoder 实现。总的来说,Android 设备都安装了 Google 地图。除此之外,可能没有 Google Maps 和其他一些可用的 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();

【讨论】:

以上是关于地理编码器在 Android 移动设备上的实施范围有多广?的主要内容,如果未能解决你的问题,请参考以下文章

如何获得地理编码器在 LatLng 国家语言上的结果?

3G/Edge/GPRS IP 地址和地理编码

为移动 Chrome 上的本地文件启用地理定位

地理定位 API 在某些 Android 设备上不起作用

如何在 HTML 中存储地理位置? [关闭]

HarmonyOS之设备定位的使用与地理编码的转化