Android Geocoder是否仅适用于互联网连接?
我正试图通过onMapLongClickListener(LatLng点)在谷歌地图上获取点击地址,使用点的lat和lng,并使用地理编码器将它们转换为地址。如果我连接到互联网,效果很好,但如果我不是,则应用程序会崩溃,因为getFromLocation方法会给出空结果。 所以我假设Geocoder类只在连接被启用的情况下工作。是这样吗?有没有办法让地址保持脱机状态 这就是方法的代码:Android Geocoder是否仅适用于互联网连接?,android,google-geocoder,android-maps-v2,Android,Google Geocoder,Android Maps V2,我正试图通过onMapLongClickListener(LatLng点)在谷歌地图上获取点击地址,使用点的lat和lng,并使用地理编码器将它们转换为地址。如果我连接到互联网,效果很好,但如果我不是,则应用程序会崩溃,因为getFromLocation方法会给出空结果。 所以我假设Geocoder类只在连接被启用的情况下工作。是这样吗?有没有办法让地址保持脱机状态 这就是方法的代码: public void onMapLongClick(LatLng point) {
public void onMapLongClick(LatLng point) {
List<Address> addresses = null;
try {
addresses = geocoder.getFromLocation(point.latitude, point.longitude, 1);
} catch (IOException e) {
e.printStackTrace();
}
String address = addresses.get(0).getAddressLine(0);
String city = addresses.get(0).getAddressLine(1);
String country = addresses.get(0).getAddressLine(2);
String str = address + ", " + city + ", " + country;
gMap.addMarker(new MarkerOptions()
.position(point)
.title("Clicked Point")
.draggable(false)
.snippet(address + ", " + city + ", " + country));
Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
v.vibrate(50);
}
public void onMapLongClick(LatLng点){
列表地址=空;
试一试{
addresses=geocoder.getFromLocation(点.纬度,点.经度,1);
}捕获(IOE异常){
e、 printStackTrace();
}
字符串地址=地址.get(0).getAddressLine(0);
字符串city=addresses.get(0).getAddressLine(1);
字符串country=addresses.get(0).getAddressLine(2);
字符串str=地址+”,“+城市+”,“+国家;
gMap.addMarker(新的MarkerOptions()
.位置(点)
.标题(“点击点”)
.draggable(错误)
.snippet(地址+”、“+城市+”、“+国家”);
可控震源v=(可控震源)getSystemService(Context.可控震源_服务);
v、 振动(50);
}
以下是权限:
<uses-permission android:name="com.example.mappine.permission.MAPS_RECEIVE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.VIBRATE" />
是。你知道完整的地理编码器需要多少数据吗?你没有将其存储在手机上。我肯定某个地方有人提供离线地理编码数据库,但有人不是谷歌,他们的产品可能不是免费的。谷歌的地理编码API是免费的,有条件的(请参阅)。地理编码员需要映射世界上的所有地址(或者至少是应用程序使用的地区)到经纬度坐标。这是大量的数据。然而,像TomTom、Navigon等地理编码提供商通过将离线地理编码数据捆绑到他们的Android应用程序中,并将其安装到您的Android设备上,实现了这一点。我看不出离线地理编码数据有什么问题。通过互联网连接使用反向地理编码只适用于那些有大数据计划的人。那些使用有限数据计划的人最好选择离线数据选项。首先,它占据了很大的空间,任何真正的准确度-我们谈论的是演出。您在这些应用程序中拥有有限的子集。其次,准确性-下载的版本不是最新的。第三,他询问了一位特定的地理编码器。那个没有离线模式。如果你想提供一个,你必须使用另一个服务,而不是谷歌的。