Fragmento Google Maps de Google Maps en el xml. Me sale "prefijo de espacio de nombres inesperado"
Estoy tratando de aprender android, y después de haber seguido las instrucciones sobre cómo usar la API de Google Maps V.2 ahora lo tengo funcionando. Sin embargo, las instrucciones sobre cómo configurar el estado inicial de los mapas, que se encuentran en developers.google.com , sugieren un espacio de nombres definido en el archivo xml, en este caso "mapa".
El código xml siguiente da med el error "prefijo de espacio de nombres inesperado" mapa " ". Tratando de definir el xmlns: mapa dentro de la etiqueta de fragmento dio el mismo error, pero con "xmlns".
- Quiero analizar Google Map API para el geocódigo inverso en Android
- C: ¿Cómo analizar XML en android?
- No se puede resolver el símbolo HttpEntity, HttpResponse
- Excepción de Android asynctask
- Obtener elementos por nombre de etiqueta de un nodo en documento de Android (XML)?
Estoy obviamente perdiendo algunos conocimientos xml fundamentales aquí, ¿alguien puede ayudarme?
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:map="http://schemas.android.com/apk/res-auto" <!-- Definition --> android:layout_width="match_parent" android:layout_height="match_parent"> <fragment android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" class="com.google.android.gms.maps.SupportMapFragment" map:cameraBearing="112.5"/> <!-- PROBLEM --> </RelativeLayout>
- NetworkOnMainThread
- Cómo quitar caracteres de acento de un InputStream
- SimpleXML, org.simpleframework.xml.core.PersistenceException
- División de XML en varios archivos xml
- Analizar el feed RSS de Android
- ¿Cómo leer XML arbitrario en un objeto genérico en Android?
- Pasar recurso XML a XMLReader
- ¿Cómo puedo analizar XML android?
Usted tiene que hacer dos cosas:
Primero: https://docs.google.com/document/pub?id=19nQzvKP-CVLd7_VrpwnHfl-AE9fjbJySowONZZtNHzw
Agregue la dependencia a Google Play Services en su proyecto
Project -> Properties -> Android -> Library, Add -> google-play-services_lib
Segundo: https://developers.google.com/maps/documentation/android/intro
Seleccione Proyecto> Propiedades, seleccione Ruta de construcción de Java y navegue a Bibliotecas. Seleccione Agregar tarros externos, incluya los siguientes archivos jar y haga clic en Aceptar:
<android-sdk-folder>/extras/android/compatibility/v4/android-support-v4.jar
Ahora mi proyecto no muestra más errores 🙂 saludos, marcel
Yo tuve este problema también. Hice Project / Clean y el error se fue y funciona bien ahora.
Tengo el mismo problema hoy. Actualizé el SDK anoche y no vi este problema antes. Tuve el proyecto de demostración de mapa de Android V2 cargado también y hoy en día el archivo "multimap_demo.xml" está mostrando el "prefijo de espacio de nombres inesperado" mapa "encontrado para el fragmento de etiqueta" error. He aplicado el xml incluido sugerido y está funcionando de nuevo. Le daría un +1, pero no tiene crédito.
ACTUALIZACIÓN: Me olvidé de este problema y reelaborado mi código de hoy y eliminado el incluir. Por supuesto, el error volvió. Encontré esto y lo agregué al diseño en la estrofa del fragmento:
tools:ignore="MissingPrefix"
Parece al menos enmascarar el problema.
Actualización: Este error aparentemente sucede debido a un error en Android Lint Tool. Consulte el problema https://code.google.com/p/gmaps-api-issues/issues/detail?id=5002
Hay otra solución que le permite seguir configurando todo en archivos de diseño en lugar de en el código Java. Dado que el error sólo parece ocurrir cuando el SupportMapFragment
es un hijo de un ViewGroup
en el archivo de diseño, se puede extraer el elemento <fragment>
en su propio archivo de diseño y luego sólo se incluyen en el diseño deseado más grande.
Por ejemplo, dado que está intentando hacer esto:
My_awesome_layout.xml
... <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:map="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <fragment android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" class="com.google.android.gms.maps.SupportMapFragment" map:cameraBearing="112.5"/> </RelativeLayout>
En su lugar podría romperlo así:
Include_map_fragment.xml
<?xml version="1.0" encoding="utf-8"?> <fragment xmlns:android="http://schemas.android.com/apk/res/android" xmlns:map="http://scheams.android.com/apk/res-auto" android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" class="com.google.android.gms.maps.SupportMapFragment" map:cameraBearing="112.5"/>
My_awesome_layout.xml
... <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <include android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" layout="@layout/include_map_fragment" /> </RelativeLayout>
Bueno, yo sé, esto no es realmente una solución para el problema de espacio de nombres, tal vez esto podría ayudar.
Como no conozco ninguna solución XML, lo hice de forma programática:
mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap(); mMap.setTrafficEnabled(true); setupMapView(); private void setupMapView(){ UiSettings settings = mMap.getUiSettings(); mMap.animateCamera(CameraUpdateFactory.newCameraPosition( new CameraPosition(new LatLng(50.0, 10.5), 13.5f, 30f, 112.5f))); // zoom, tilt, bearing mMap.setTrafficEnabled(true); settings.setAllGesturesEnabled(true); settings.setCompassEnabled(true); settings.setMyLocationButtonEnabled(true); settings.setRotateGesturesEnabled(true); settings.setScrollGesturesEnabled(true); settings.setTiltGesturesEnabled(true); settings.setZoomControlsEnabled(true); settings.setZoomGesturesEnabled(true); }
Así que el mapa de Google se inicializa por defecto pero obtiene sus parámetros directamente después de que desde el código.
Tengo exactamente el mismo problema. El ejemplo proporcionado
<fragment xmlns:android="http://schemas.android.com/apk/res/android" xmlns:map="http://schemas.android.com/apk/res-auto" android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" class="com.google.android.gms.maps.SupportMapFragment" map:cameraBearing="112.5" map:cameraTargetLat="-33.796923" map:cameraTargetLng="150.922433" map:cameraTilt="30" map:cameraZoom="13" map:mapType="normal" map:uiCompass="false" map:uiRotateGestures="true" map:uiScrollGestures="false" map:uiTiltGestures="true" map:uiZoomControls="false" map:uiZoomGestures="true"/>
Funciona bien, pero si intenta agregarlo a un elemento padre se niega a aceptar los xmlns. Si mueve la declaración xmlns al elemento superior, todavía se niega a aceptar el prefijo de mapa en el fragmento:
Unexpected namespace prefix "map" found for tag fragment
Ahora, si amplía SupportMapFragment y utiliza una vista personalizada como esta:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:map="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="5dp"> <com.google.android.gms.maps.MapView android:id="@+id/map_view" android:layout_width="match_parent" android:layout_height="match_parent" map:cameraBearing="0" map:cameraTargetLat="54.25" map:cameraTargetLng="-4.56" map:cameraTilt="30" map:cameraZoom="5.6" map:mapType="normal" map:uiCompass="true" map:uiRotateGestures="true" map:uiScrollGestures="true" map:uiTiltGestures="true" map:uiZoomControls="false" map:uiZoomGestures="true"> </com.google.android.gms.maps.MapView> </LinearLayout>
… entonces no se queja y el mapa resultante es correcto. Para mí eso plantea más problemas sin embargo, como no hay ejemplos decentes de cómo hacer esta subclase, usted tiene que hacer más que anular onCreateView y cuando intento hacer nada al mapa posteriormente obtendré lo siguiente:
java.lang.IllegalStateException: Map size should not be 0. Most likely, layout has not yet occured for the map view.
… incluso si espero 30 segundos después de que el mapa haya aparecido. (Solo primera carga)
No creo que puedas incluir comentarios XML dentro de una etiqueta como la que estás haciendo con <!-- Definition -->
. ¿Si usted quita que hace el problema todavía ocurre?
Obviamente esto es solo un error de verificación de Lint de mis-lead. Puede eliminarlo cuando, en la vista de Problemas de Eclipse, haga clic con el botón derecho del ratón en la línea con el error, seleccione la opción Solución rápida y seleccione, por ejemplo, Ignorar Comprobar proyecto .
El error desaparece, el proyecto se basa y la aplicación se ejecuta perfectamente bien.
- Firebase No hay propiedades que serializar encontradas en la clase
- ¿Cuál es el atajo para extraer cadenas de código de Android en el archivo strings.xml en Intellij?