【发布时间】:2013-04-21 22:53:08
【问题描述】:
我正在尝试使用 onMapLongClickListener(LatLng 点)在 Google 地图上获取点击的地址,使用该点的 lat 和 lng 并使用地理编码器将它们转换为地址。如果我已连接,它可以正常工作到 Internet,但如果我不是应用程序崩溃,因为 getFromLocation 方法给出了 null 结果。 所以我想 Geocoder 类只在启用连接的情况下工作。是这样吗?有没有办法让地址保持离线状态?
这是方法的代码:
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);
}
这些是权限:
<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" />
【问题讨论】:
-
我确信某处有人提供离线地理编码数据库,但有人不是 Google,他们的产品可能不是免费的。
-
Google 的地理编码 API 有条件免费(参见 here)。
标签: android google-geocoder android-maps-v2