随笔
Google Maps Android API 需要 API 级别 12 或更高级别,才能支持 MapFragment
对象。 如果您的目标是低于 API 级别 12 的应用,可通过 SupportMapFragment
类访问同一功能。 您还必须提供 Android 支持库。
使用 XML 属性
此部分介绍在您利用 XML 布局文件向应用添加地图的情况下如何设置地图的初始状态。
Maps API 为 MapFragment
或 MapView
定义了一组自定义 XML 属性,您可以利用它们直接在布局文件内配置地图的初始状态。 当前定义的属性如下:
mapType
。 它用于指定要显示的地图类型。 有效 值包括none
、normal
、hybrid
、satellite
和terrain
。cameraTargetLat
、cameraTargetLng
、cameraZoom
、cameraBearing
、cameraTilt
。 它们用于指定摄像头的初始位置。 请参阅此处,了解有关摄像头位置及其属性的更多详情。uiZoomControls
、uiCompass
。 它们用于指定您是否希望将缩放控件和指南针出现在地图上。 请参阅UiSettings
,了解更多详情。-
uiZoomGestures
、uiScrollGestures
、uiRotateGestures
、uiTiltGestures
。 它们用于指定在与地图交互时启用/禁用的手势。 请参阅UiSettings
,了解更多详情。 -
zOrderOnTop
。 控制地图视图的表面是否覆盖在其窗口上。 请参阅 SurfaceView.setZOrderOnTop(boolean),了解更多详情。 请注意,如果指定此属性,将会覆盖所有其他可能出现在地图上的视图(例如缩放控件、my location 按钮)。 -
useViewLifecycle
。 只对MapFragment
有效。 此属性指定是否应将地图的生命周期与 Fragment 的视图或 Fragment 本身关联。 请参阅此处,了解更多详情。 -
liteMode
。 值true
会将地图设置为精简模式。 精简模式地图是指地图的一种位图图像,它支持完整 API 提供的一部分功能。 该属性的默认值 为false
。
如需在您的 XML 布局文件内使用这些自定义属性,您必须先添加下列命名空间声明。 您可以选择任何命名空间,不必一定要选择 map
:
xmlns:map="http://schemas.android.com/apk/res-auto"
然后您就可以像使用标准 Android 属性那样,向您的布局组件中添加带 map:
前缀的属性。
下面这段 XML 代码展示了如何配置带有一些自定义选项的 MapFragment
。 这些属性同样可以应用于 MapView
。
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
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"/>