Maps SDK for Android 可以提供地图的位图图像,从而为用户提供一定程度的互动。这称为精简模式地图。
代码示例
GitHub 上的 ApiDemos 代码库包含相关示例,展示了如何使用精简模式:
- LiteDemoActivity - Java:通过 Java 使用精简模式地图的基础知识
- LiteDemoActivity - Kotlin:通过 Kotlin 使用精简模式地图的基础知识
- LiteListDemoActivity - Java:通过 Java 使用精简模式在 ListView 中高效显示地图
- LiteListDemoActivity - Kotlin:通过 Kotlin 使用精简模式在 ListView 中高效显示地图
精简模式概览
精简模式地图是指位于指定位置和缩放级别的地图的位图图像。精简模式支持所有地图类型(标准、混合、卫星、地形)以及完整 API 提供的一部分功能。如果您想以串流形式提供多个地图,或者想要提供的地图因过小而无法支持有意义的互动,便可使用精简模式。
查看该地图的用户无法缩放或平移地图。用户可以通过地图上的图标在 Google 地图移动应用中查看地图并请求路线。
添加精简模式地图
精简模式使用与完整 Google Maps Android API 相同的类和接口。您可以通过以下方式将 GoogleMap
设置为精简模式:
- 作为
MapView
或MapFragment
的 XML 属性 - 或在
GoogleMapOptions
对象中
作为 MapView
或 MapFragment
的 XML 属性
<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.MapFragment"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
map:cameraZoom="13"
map:mapType="normal"
map:liteMode="true"/>
在 GoogleMapOptions
对象中
Kotlin
val options = GoogleMapOptions() .liteMode(true)
Java
GoogleMapOptions options = new GoogleMapOptions() .liteMode(true);
如需详细了解如何设置地图的初始状态,请参阅有关地图对象的指南。
用于启动地图视图或路线请求的 intent
默认情况下,您可以通过地图右下角工具栏中的图标访问 Google 地图移动应用中的地图视图或路线请求。要停用该工具栏,请调用 UiSettings.setMapToolbarEnabled(false)
。如需了解详情,请参阅工具栏文档。
同样,在默认情况下,当用户点按地图时,API 也会启动 Google 地图移动应用。您可以通过使用 GoogleMap.setOnMapClickListener()
设置自己的监听器来替换此默认设置。您还可以通过对包含 MapView
或 MapFragment
的视图调用 setClickable()
在地图上停用点击事件。如需详细了解这两种方法,请参阅事件文档。
生命周期事件
在完全互动模式下使用 API 时,使用 MapView
类的用户必须将所有 activity 生命周期方法都转发给 MapView
类中的相应方法。生命周期方法示例包括 onCreate()
、onDestroy()
、onResume()
和 onPause()
。
在精简模式下使用 MapView
类时,转发生命周期事件为可选操作,但下列情况除外:
- 必须调用
onCreate()
,否则将不会显示任何地图。 - 如果您想在精简模式地图上显示“我的位置”圆点并使用默认位置来源,则需要调用
onResume()
和onPause()
,因为位置来源只会在这些调用的间隔期进行更新。如果您使用的是自己的位置来源,则无需调用这两种方法。
支持的 API 功能
下表介绍了每个 API 功能领域的精简模式地图行为。如果应用调用了精简模式不支持的方法,API 将会记录一则警告消息。
功能 | |
---|---|
地图类型 | 是否支持?是
以下地图类型可通过 GoogleMapOptions.mapType() 和 GoogleMap.setMapType() 提供:MAP_TYPE_NORMAL 、MAP_TYPE_SATELLITE 、MAP_TYPE_TERRAIN 、MAP_TYPE_HYBRID 、MAP_TYPE_NONE |
多段线、多边形、圆形 | 是否支持?是
形状的精简模式功能与完整 API 一致。 |
投影 | 是否支持?是
投影的精简模式功能与完整 API 一致。 |
我的位置 | 是否支持?是
“我的位置”图层的精简模式功能与完整 API 一致。 |
地图内边距 | 是否支持?是
地图内边距的精简模式支持与完整 API 一致。 |
信息窗口 | 是否支持?是
如果您设置了某个标记的 title() ,当用户点按该标记时,系统会显示默认的信息窗口。您可以通过对标记调用 showInfoWindow() 以编程方式显示信息窗口。您还可以通过 InfoWindowAdapter 接口创建自定义信息窗口。 |
自定义基本地图样式 | 是否支持?部分支持
|
标记 | 是否支持?部分支持
您可以添加一个标记并响应点击事件,还可以添加自定义标记图标。但无法将标记设为可拖动。精简模式地图上的标记是平面标记,无法旋转。 |
相机位置、缩放和动画 | 是否支持?部分支持
您可以设置相机目标和缩放,但无法设置倾斜角度或方位。在精简模式下,缩放级别四舍五入为最接近的整数。调用 调用 |
地图事件 | 是否支持?部分支持
精简模式支持 如需在精简模式下停用地图上的点击事件,您可以对包含 如需了解详情,请参阅事件文档。 |
室内地图和建筑物 | 是否支持?否
精简模式将显示与 Maps Static API 相同的图块。这意味着,如果默认图块中内置有室内楼层平面图,它就会显示出来。否则,将不会显示。此外,您也无法更改显示的层级或操纵层级选择器。 |
路况图层 | 是否支持?否
精简模式不支持 GoogleMap.setTrafficEnabled() 。 |
地面叠加层 | 是否支持?否
精简模式不支持 GoogleMap.addGroundOverlay() 。 |
图块叠加层 | 是否支持?否
精简模式不支持 GoogleMap.addTileOverlay() 。 |
手势 | 是否支持?否
精简模式不支持手势。启用和停用手势将不会有任何影响。 |
街景 | 是否支持?否
精简模式不支持街景。 |