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);
如需如何設定地圖初始狀態的詳細資料,請參閱地圖物件指南。
啟動地圖檢視或路線規劃要求的意圖
根據預設,在 Google 地圖行動應用程式中,地圖右下方的工具列會顯示圖示,方便使用者存取地圖檢視或路線規劃要求。您可以呼叫 UiSettings.setMapToolbarEnabled(false)
來停用工具列。詳情請參閱工具列說明文件。
此外根據預設,使用者輕觸地圖時,API 會啟動 Google 地圖行動應用程式。您可以使用 GoogleMap.setOnMapClickListener()
設定自己的事件監聽器來覆寫這項設定。您也可以在包含 MapView
或 MapFragment
的檢視畫面上呼叫 setClickable()
,即可停用地圖上的點擊事件。如要進一步瞭解這兩項技巧,請參閱事件說明文件。
生命週期事件
在完全互動模式中使用 API 時,MapView
類別的使用者必須將所有活動生命週期方法,轉送至 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() 。 |
手勢 | 是否支援?否
精簡模式不支援手勢。啟用和停用手勢不會造成任何影響。 |
街景服務 | 是否支援?否
精簡模式不支援街景服務。 |