【发布时间】:2011-06-01 19:40:09
【问题描述】:
在过去两天里,当我尝试从地址中获取坐标时,我在 Android 代码中收到 IllegalArgumentException 错误,甚至是反向,从经度和纬度中获取地址时,我一直在发疯。这是代码,但我看不到错误。这是一个标准代码 sn-p,在 Google 搜索中很容易找到。
public GeoPoint determineLatLngFromAddress(Context appContext, String strAddress) {
Geocoder geocoder = new Geocoder(appContext, Locale.getDefault());
GeoPoint g = null;
try {
System.out.println("str addres: " + strAddress);
List<Address> addresses = geocoder.getFromLocationName(strAddress, 5);
if (addresses.size() > 0) {
g = new GeoPoint(
(int) (addresses.get(0).getLatitude() * 1E6),
(int) (addresses.get(0).getLongitude() * 1E6)
);
}
} catch (Exception e) {
throw new IllegalArgumentException("locationName == null");
}
return g;
}
这些是 manifest.xml 文件中的权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
我也声明了 Google API 密钥:<uses-library android:name="com.google.android.maps" />
从上面的代码sn-p,geocoder不是null,address或appContext也不是,我在这里绊了一下:geocoder.getFromLocationName(strAddress, 5);
我做了很多谷歌搜索,没有找到任何有用的信息,我找到的最重要的信息是:
Geocoder 类需要一个不包含在核心 android 框架中的后端服务。
Sooo,我现在很困惑。我必须调用、导入、添加、在代码中使用什么......才能完成这项工作? 我正在使用 Google API 2.2,API 级别 8。 如果有人找到了解决方案或文档指针,我没有发现的东西,请告诉我们。
【问题讨论】:
标签: android google-geocoder illegalargumentexception