Después de varios días para aprender cómo funciona Android, decidí crear mi primera aplicación: una aplicación simple que muestra el GMap desde una dirección proporcionada por el usuario con un simple widget EditText
.
Uso Geocoder
para hacer eso.Error RPC con Geocoder
Después de un poco de control de errores con Logcat, aquí es la excepción devuelto por 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)
Y ahora aquí está el código señalado por el seguimiento de la pila:
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();
}
Obviamente, este código es una parte de una instanciación MapActivity
.
Hice algunas pruebas con diferentes versiones de Google APIS (8, 7, 4) y diferentes versiones de la plataforma SDK (2.2, 2.1, 1.6), pero no tuve suerte. Me di cuenta de que Google API 8 contiene un error conocido y devolvió un Service Unavailable Exception
en lugar de RPC Failed 1
.
Por otro lado, traté de ejecutar mi aplicación directamente en mi dispositivo (HTC Desire 2.1) y noté el mismo comportamiento (es decir: sin comportamiento, un mapa con EE. UU. En el centro).
Aquí viene la facilidad de uso de la autorización de manifiesto de Android:
<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" />
¿Ha logrado encontrar la causa de esto? ¡Tengo exactamente el mismo problema! –
¿Ha configurado correctamente la clave API para Google Maps? No puede usar Geocodificación sin usar Google Maps también. Para la clave, consulte aquí http://code.google.com/intl/de-DE/android/maps-api-signup.html – Stefan
¿Ha verificado que su servicio de geocodificación esté presente? p.ej. geocoder.isPresent() devuelve verdadero? – Kyle