Android版谷歌地图片段中的XML。 我得到“意外的命名空间前缀”(Android Goog

2019-07-20 09:18发布

我想学习Android的,并具有按照如何使用我现在懂了工作的谷歌地图API V.2的说明。 然而,如何配置图,在发现的初始状态的说明developers.google.com ,建议在XML文件中定义的命名空间,在这种情况下,“地图”。

下面的XML的代码提供配有错误“意外的命名空间前缀‘地图’”。 试图定义的xmlns:地图片段标签内作出了同样的错误,但用“的xmlns”。

我显然缺少一些基本的XML的知识在这里,有人可以帮我吗?

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

Answer 1:

你必须做两件事情:

第一: https://docs.google.com/document/pub?id=19nQzvKP-CVLd7_VrpwnHfl-AE9fjbJySowONZZtNHzw

添加依赖性谷歌播放服务到项目

Project -> Properties -> Android -> Library, Add -> google-play-services_lib

第二: https://developers.google.com/maps/documentation/android/intro

选择Project > Properties ,选择Java Build Path ,并导航到Libraries 。 选择Add External Jars ,包括以下JAR文件,并单击OK:

<android-sdk-folder>/extras/android/compatibility/v4/android-support-v4.jar

现在我的项目显示了没有错误:)



Answer 2:

我有这个问题为好。 我做项目/清洁和错误走了,现在工作得很好。



Answer 3:

今天我有同样的问题。 我升级SDK昨晚之前没有看到这个问题。 我有Android的地图V2样品演示项目装入了今天的“multimap_demo.xml”文件显示“意外的命名空间前缀‘地图’找到标签断”的错误。 我应用了XML包括建议,并重新工作。 想给它一个+1,但没有得到名气。

更新:我忘了这个问题,今天我返工的代码和删除的包括。 当然,错误回来。 我发现这一点,它加入到片段节的布局:

tools:ignore="MissingPrefix"

这似乎至少掩盖了问题。

更新:这显然是错误发生是由于Android的林特工具的错误。 参见问题https://code.google.com/p/gmaps-api-issues/issues/detail?id=5002



Answer 4:

还有另一种解决方法,可以让你继续在布局文件,而不是在Java代码中设置的一切行动。 由于误差似乎只发生时SupportMapFragment是一个的子ViewGroup在布局文件中,一个可以提取<fragment>元件到其自己的布局文件,然后只它包括在所期望的较大的布局。

例如,假设你正在试图做到这一点:

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>

你可以代替打破它,就像这样:

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>


Answer 5:

嗯,我知道,这是不是真正为名称空间问题的解决方案,也许这可能帮助。

因为我不知道任何XML解决方案,我做到了以编程方式:

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);
}

因此,谷歌地图是初始化默认但之后从代码中直接获取其参数。



Answer 6:

我有完全相同的问题。 所提供的示例

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

工作正常,但如果你试图将其添加到父元素拒不接受的xmlns。 如果将xmlns声明顶端元素仍然拒绝接受在片段地图前缀:

Unexpected namespace prefix "map" found for tag fragment

现在,如果你扩展SupportMapFragment和使用自定义视图像这样的:

<?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>

...那么它不抱怨,所得地图是正确的。 但是对于我,提出了进一步的问题,也有如何做到这一点的子类没有像样的例子,你要做的不止覆盖onCreateView,当我尝试做任何事情到地图之后,我得到以下几点:

java.lang.IllegalStateException: Map size should not be 0. Most likely, layout has not yet occured for the map view.

......即使我等待30秒的地图出现后(仅第一加载)



Answer 7:

我不认为你可以把XML注释标签像你用做<!-- Definition --> 。 如果删除,它仍然会出现问题?



Answer 8:

显然,这仅仅是一个错误导致皮棉检查错误。 你可以删除它时,在Eclipse的问题视图 ,用鼠标右键单击该错误线,选择快速修复选项,并选择如忽略检查项目

该错误消失,生成项目和应用程序运转很好。



Answer 9:

在我的情况下,大小姐,我忘了在gradle这个文件我的谷歌地图的依赖补充:

compile 'com.google.android.gms:play-services-maps:11.2.0'


文章来源: Android Google Maps fragment in the xml. I get “Unexpected namespace prefix”