我刚刚深入研究全球定位系统(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应用必须连接到互联网并查找来自Google的地理定位数据(例如通过http://maps.googleapis.com/maps/api/geocode/json?latlng=
)。或者使用其他地理定位提供商,例如OpenStreetMap等。
2)Google地图等Android应用需要互联网连接;而像TomTom这样的离线提供商将离线地理位置数据与他们的应用程序捆绑在一起,因此不需要互联网连接。
除上述事实外,还有另一种方法可以在不使用离线反向地理数据或使用互联网连接的情况下检索地理定位地址吗?
如果您在Android中有地理编码和反向地理编码方面的经验,请发表您的想法。
感谢。
答案 0 :(得分:0)
每种方法至少有一种方式。
对于反向地理编码,您让用户使用gps标记地址的地理位置。
对于地理编码,您让用户搜索一组坐标,然后让他阅读街道名称和他发现自己的地址。
答案 1 :(得分:0)
很少有离线库可用于反转Geocode offilne。建议你浏览这些库。我个人没有使用过这些库。如果你还有任何问题,请告诉我。
https://developers.arcgis.com/android/
链接示例代码:
https://github.com/Esri/arcgis-runtime-samples-android/tree/master