我想学习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”