【发布时间】:2015-08-26 20:42:48
【问题描述】:
我刚刚深入研究了全球定位系统 (GPS) 的世界,发现了以下有趣的事实:
1) Android 类android.location.Geocoder 在通过反向地理编码获取地址时总是返回null。我使用的代码是:
Geocoder mGeocoder = new Geocoder(context, locale);
List<Address> addresses = mGeocoder.getFromLocation(latitude, longitude, 1);
if (!addresses.isEmpty()) {
// do something.
} else {
// Display a message regarding no address available.
}
原因说明here:
Geocoder 类需要一个不包含在 核心android框架。
因此,基本上我要么必须自己提供离线地理定位数据以进行反向地理编码,要么我的 Android 应用必须连接到 Internet 并从 Google 查找地理定位数据(例如通过 http://maps.googleapis.com/maps/api/geocode/json?latlng=)。或者使用其他地理定位提供商,例如OpenStreetMap 等。
2) 谷歌地图等安卓应用需要互联网连接;而像 TomTom 这样的离线提供商将离线地理定位数据与他们的应用程序捆绑在一起,因此不需要互联网连接。
除了上述事实之外,是否有另一种方法可以在不使用离线反向地理数据或使用 Internet 连接的情况下检索地理位置地址?
如果您对 Android 中的地理编码和反向地理编码有一些经验,请发表您的想法。
谢谢。
【问题讨论】:
-
除了您在帖子中所述的方法外,我不知道还有其他反向地理编码的方法。
-
对于基于 OSM 的地理编码,您可以尝试使用 Telenav SDK,因为它们带有离线地理编码和反向地理编码:developer.skobbler.com/getting-started/android#sec019
标签: android geolocation google-places-api android-location google-geocoding-api