地理编码器的 RPC 错误
经过几天的学习Android是如何工作的,我决定建立我的第一个应用程序:一个简单的应用程序,它从用户提供的地址显示GMap,并提供一个简单的小部件。
我曾经这样做过。EditText
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)上运行我的应用程序,我注意到相同的行为(也就是说:没有行为,以美国为中心的地图)。
以下是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" />