Android MapActivity: No se pudo obtener el cliente de fábrica de conexión

Estoy tratando de obtener las demostraciones de mapa funcionando, como se proporciona en los proyectos de ejemplo de la API de Google. Estoy utilizando AVDs y he intentado con las versiones 8, 10 y 11 y obtener el mismo problema.

He generado mi propia clave de depuración y agregado al proyecto. Puedo ver el mapa en la puesta en marcha de la aplicación, y puede ampliar, etc – por lo que estoy recibiendo los azulejos del mapa, bien. Sí – Tengo los permisos y la biblioteca correctos fijados en el archivo del manifiesto (según muestras).

Pero, no puedo establecer una ubicación en el mapa, ya sea a través de DDMS o Telnet. Veo el error siguiente en LogCat: MapActivity: No podría conseguir el cliente de la fábrica de la conexión

He leído numerosos hilos con respecto a este problema, pero siempre parecen ser como resultado de una clave de API mal; Que no tengo, como estoy recuperando azulejos del mapa.

Así que he creado mi propio proyecto para probar esto más lejos, y estoy ejecutando el siguiente código en la inicialización de mi mapa:

myLocationOverlay = new MyLocationOverlay(this, mapView);        mapView.getOverlays().add(myLocationOverlay);        myLocationOverlay.enableCompass();        myLocationOverlay.enableMyLocation();        Log.i("funkatron: ", "ABOUT TO CALL RUN ON FIRST FIX");        myLocationOverlay.runOnFirstFix(new Runnable() {            public void run() {              String loc = "we have a location, executing AnimateTo(). "+myLocationOverlay.getMyLocation().toString();                Log.i("funkatron:",loc); mapController.animateTo(myLocationOverlay.getMyLocation());            }        }); 

Veo mi primera declaración de registro, pero nunca la segunda, y "MapActivity: No se pudo obtener el cliente de fábrica de conexión" se escribe en LogCat en ese momento.

He leído que hubo problemas con los emuladores SDK v8, por lo que he intentado con v10 y 11 – pero todavía no hay alegría. Todavía no he probado esto en un dispositivo real – lo haré pronto.

Cualquier ayuda en este tema sería muy apreciada – es realmente desconcertante me;)

aclamaciones

Tuve exactamente la misma situación inicial que describiste.

Cuando ves los azulejos del mapa hay obviamente algunos que faltan para ver una posición en el mapa:

1. usted necesita un lugar . I reconoció que el establecimiento de sólo una posición geográfica a través de vista DDMS para el emulador no es suficiente. Tiene que presionar explícitamente cada vez que el botón "Enviar" en DDMS para activar una actualización de ubicación en su emulador. (Sólo para mencionar: en un dispositivo real que tiene a veces a caminar un poco para que su dispositivo obtener una actualización de la ubicación;), yo estaba tan cabreado hasta que caminaba alrededor pensando en qué hacer ahora ^^)

2. necesita una implementación correcta de ItemizedOverlay con un OverlayItem correcto . Escribí mi propia superposición que consiguió poco "complicado". Si no está seguro si su implementación es correcta, utilice esta guía para crear una implementación con mínimos cambios.

O utilice esto:

 private class MyItemizedOverlay extends ItemizedOverlay { private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>(); public MyItemizedOverlay(Drawable defaultMarker) { super(boundCenterBottom(defaultMarker)); } public void addOverlay(OverlayItem overlay) { mOverlays.add(overlay); populate(); } @Override protected OverlayItem createItem(int i) { return mOverlays.get(i); } @Override public int size() { return mOverlays.size(); } } private void updateLocationOverlay() { if (location == null) { return }; List<Overlay> mapOverlays = mapView.getOverlays(); Drawable drawable = this.getResources().getDrawable(R.drawable.XXXX); MyItemizedOverlay myItemizedOverlay = new MyItemizedOverlay(drawable); GeoPoint point = new GeoPoint((int)(location.getLatitude() * 1E6), (int)(location.getLongitude() * 1E6)); OverlayItem overlayitem = new OverlayItem(point, "Hola, Mundo!", "I'm in Mexico City!"); myItemizedOverlay.addOverlay(overlayitem); mapOverlays.add(myItemizedOverlay); } 

Quiero señalar especialmente que usted debe llamar a boundCenter o boundCenterBottom en el drawable. De lo contrario no se dibujará. Tenga cuidado también si utiliza marcadores diferentes en la misma superposición con overlayItem.setMarker, que u lo llama allí también.

3. tienes que mover la vista en el mapa a tu punto . Usted puede lograr esto como esto:

 MapController mapController = mapView.getController(); mapController.setCenter(point) 

I reconoció que la función mapController.zoomToSpan no funciona. (Al menos para mí, todavía estoy desarrollando en esta aplicación). Tal vez sea lo mismo con animateTo . No lo intenté Establecer obras de centro. (Y el nivel setZoom también).

Tal vez hay algo en los puntos que he mencionado que podría llevar a que su mapa no funciona como usted quiere.

¡Buena suerte!

Edit: me olvidé de mencionar que todavía estoy recibiendo que el error de cliente de fábrica, incluso funciona para obtener una ubicación válida, real en el dispositivo y falso en el emulador a través de ddms enviar). Sólo ignoro por ahora.

Asegúrese de que utiliza permisos en su aplicación AndroidManifest.xml.

Agrega estas 3 líneas en AndroidManifest.xml

 <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"/> 

Y también asegúrese de que keystore esté apuntando al almacén de claves que ha creado.

En la ventana de comprobación de eclipse -> Preferencias -> Android -> Construir: Predeterminar almacén de claves de depuración, está apuntando a la clave que creó utilizando keytool, si no utilice el botón Examinar y apunte a la tecla real.

Hola compañeros desarrolladores,

Yo también experimenté este problema y pasé casi medio día tratando de averiguar qué estaba pasando. Inicialmente, la actividad del mapa no se mostraría en absoluto y estaba recibiendo un error que decía: "No se pudo obtener el cliente de fábrica de conexión", que a su vez creó otro error, "java.io.IOException: Server returned 3".

La causa de esto es que Google no ha podido comunicarse eficazmente con su base de desarrollo que, mientras que en el desarrollo, es decir, antes de firmar y liberar su aplicación, debe firmar su aplicación con una clave de depuración que se utiliza durante la prueba. Para ello, siga el método que se describe a continuación reemplazando [contraseña] y [contraseña clave] por sus propias contraseñas.

En el directorio .android, ejecute el siguiente comando:

 keytool -list -alias androiddebugkey -keystore debug.keystore storepass [password] -keypass [key password] 

Al hacer lo anterior, estará encantado de recibir su huella digital del certificado MD5 que puede utilizar para registrarse en la clave de la API de Google Maps. Reemplace la clave de la API de Google Maps en su proyecto, realice un proyecto limpio y vuelva a ejecutar su aplicación. Ahora deberías poder ver tu Mapa de Google y eliminar tus molestos errores.

Cómo obtener una clave de API de Google Maps para Android

Tuve el mismo problema con "MapActivity No se pudo obtener cliente de fábrica de conexión" La forma en que arreglé el problema era muy simple! Acabo de desinstalar toda la aplicación y lo reinstalé. ¡¡¡Funcionó!!!

Me enfrenté al mismo problema y el problema fue que me perdí cuando establecí el diseño apropiado para MapActivity el código era

 setContentView(R.layout.main); 

El archivo de diseño main.xml no contiene ninguna vista de mapa

se convirtió

 setContentView(R.layout.mapview) 

Que tienen el siguiente código XML

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/main" android:layout_width="fill_parent" android:layout_height="fill_parent"> <com.google.android.maps.MapView android:layout_width="fill_parent" android:layout_height="fill_parent" android:enabled="true" android:clickable="true" android:apiKey="YOU_API_KEY" /> </LinearLayout> 

El mapa está funcionando fid ahora, espero que esto ayudará

También puede comprobar si ha añadido algo a su diseño de vista de mapa, ya que la adición de estas vistas resultaría en este error

Parece haber varias razones para que esto suceda. Lo he arreglado alterando mi objetivo de construcción de proyecto a api 10 (rclick en el proyecto / Propiedades / Android) y luego ejecutar en un emulador en api nivel 15 (aunque muy, muy lentamente!).

Tuve el mismo problema con below main.xml

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <com.google.android.maps.MapView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/mapview" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" android:apiKey="Your API-KEY" /> </LinearLayout> 

Entonces cambié el main.xml a como abajo, el problema fue resuelto

 <?xml version="1.0" encoding="utf-8"?> <com.google.android.maps.MapView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/mapview" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" android:apiKey="Your API-KEY" /> 

Alguien allá arriba ya lo dijo en un comentario: Reinicia el teléfono. O si está ejecutando en emulador: Reinicie el emulador.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.