在了解了 Android 的工作原理几天后,我决定构建我的第一个应用程序:一个简单的应用程序,它通过一个简单的 EditText
小部件从用户提供的地址显示 GMap。
我使用 Geocoder
来做到这一点。
在使用 logcat 进行一些错误跟踪后,以下是 adb 返回的异常:
E/LocationMasfClient( 53): forwardGeocode(): RPC failed with status 1
W/System.err( 262): java.io.IOException: RPC failed with status 1
W/System.err( 262): at android.location.Geocoder.getFromLocationName(Geocoder.java:166)
W/System.err( 262): at fr.meetopia.tinymap.MapViewActivity.testGeoCoder(MapViewActivity.java:104)
W/System.err( 262): at fr.meetopia.tinymap.MapViewActivity.onCreate(MapViewActivity.java:38)
W/System.err( 262): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
W/System.err( 262): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
W/System.err( 262): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
W/System.err( 262): at android.app.ActivityThread.access$2200(ActivityThread.java:119)
W/System.err( 262): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
现在这里是堆栈跟踪指向的代码:
Geocoder geoCoder = new Geocoder(this);
MapView mapView = (MapView) findViewById(R.id.mapview);
MapController mc = mapView.getController();
GeoPoint p;
try {
List<Address> addresses = geoCoder.getFromLocationName("paris france", 50);
if (addresses.size() > 0) {
p = new GeoPoint(
(int) (addresses.get(0).getLatitude() * 1E6),
(int) (addresses.get(0).getLongitude() * 1E6));
mc.animateTo(p);
mapView.invalidate();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
显然,这段代码是 MapActivity
实例化的一部分。
我使用不同版本的 Google APIS(8、7、4)和不同版本的
SDK平台(2.2、2.1、1.6),但没有运气。我刚刚注意到 Google API 8 包含一个已知错误并返回 Service Unavailable Exception
而不是 RPC Failed 1
。
另一方面,我尝试直接在我的设备 (HTC Desire 2.1) 上运行我的应用程序,但我注意到了相同的行为(也就是说:没有行为,中心是美国的 map )。
Android Manifest 的用户权限来了:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
最佳答案
请访问我的帖子 Can't mark while showing the current location in 'mapview' 我认为通过事先修改,您可以做任何您想做的事情。
关于java - 地理编码器的 RPC 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4337013/