精簡模式

Maps SDK for Android 可提供地圖的點陣圖圖片,讓使用者進行有限的互動,這就是所謂的「精簡模式」地圖。

程式碼範例

GitHub 上的 ApiDemos 存放區有精簡模式的使用說明範例:

精簡模式總覽

精簡模式地圖是指定位置和縮放等級的地圖點陣圖圖片。精簡模式支援所有地圖類型 (一般、混合、衛星、地形) 以及由完整 API 提供的部分功能。如果想在串流中提供多個地圖,或是提供的地圖太小而無法支援有意義的互動,這時精簡模式就相當實用。

瀏覽地圖的使用者無法縮放或平移地圖。地圖上的圖示可讓使用者在 Google 地圖行動應用程式中查看地圖並要求規劃路線。

新增精簡模式地圖

精簡模式與完整 Google Maps Android API 使用相同的類別和介面。您可以透過下列方式將 GoogleMap 設為精簡模式:

  • 做為 MapViewMapFragment 的 XML 屬性
  • 或是在 GoogleMapOptions 物件中

做為 MapViewMapFragment 的 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() 設定自己的事件監聽器來覆寫這項設定。您也可以在包含 MapViewMapFragment 的檢視畫面上呼叫 setClickable(),即可停用地圖上的點擊事件。如要進一步瞭解這兩項技巧,請參閱事件說明文件

生命週期事件

完全互動模式中使用 API 時,MapView 類別的使用者必須將所有活動生命週期方法,轉送至 MapView 類別中的對應方法。生命週期方法的範例包括 onCreate()onDestroy()onResume()onPause()

精簡模式中使用 MapView 類別,不一定都要轉送生命週期事件,但以下兩種情況除外:

  • 為了顯示地圖。您必須呼叫 onCreate() 才能達到這個目的。
  • 為了在精簡模式地圖上顯示「我的位置」點,並使用預設的位置來源。這時一定要呼叫 onResume()onPause(),因為位置來源只會在呼叫這兩種方法之間更新。但如果您使用自己的位置來源,就不必呼叫這兩種方法。

支援的 API 功能

下表說明精簡模式地圖在各 API 功能領域展現的行為。如果應用程式呼叫了精簡模式不支援的方法,API 會記錄警告訊息。

功能
地圖類型
是否支援?
GoogleMapOptions.mapType()GoogleMap.setMapType() 提供下列地圖類型MAP_TYPE_NORMALMAP_TYPE_SATELLITEMAP_TYPE_TERRAINMAP_TYPE_HYBRIDMAP_TYPE_NONE
折線、多邊形、圓形
是否支援?
形狀的精簡模式功能與完整 API 一樣。
投影
是否支援?
投影的精簡模式功能與完整 API 一樣。
我的位置
是否支援?
「我的位置」圖層的精簡模式功能與完整 API 一樣。
地圖邊框間距
是否支援?
地圖邊框間距的精簡模式支援與完整 API 一樣。
資訊視窗
是否支援?
如果您設定了標記的 title(),則使用者輕觸標記時,系統就會顯示預設的資訊視窗。在標記上呼叫 showInfoWindow(),即可透過程式輔助顯示資訊視窗。 您也可以透過 InfoWindowAdapter 介面建立自訂資訊視窗。
自訂基本地圖樣式
是否支援?部分
Maps SDK for Android 支援基本地圖的自訂樣式。精簡模式僅支援 JSON 自訂樣式,不支援需要地圖 ID 才能顯示樣式化地圖的雲端式樣式。精簡模式也不支援將地圖配色方案設為使用深色模式。
標記
是否支援?部分
您可以新增標記並回應點擊事件,也可以新增自訂標記圖示,但無法將標記設為可拖曳。精簡模式地圖上的標記是固定的,無法旋轉。
攝影機位置、縮放和動畫
是否支援?部分

您可以設定攝影機目標和縮放等級,但無法設定傾斜或航向角度。 在精簡模式中,縮放等級會四捨五入至最接近的整數。 呼叫 GoogleMap.moveCamera() 會顯示另一個精簡模式的地圖圖片。如要進一步瞭解如何設定及操作攝影機,請參閱變更檢視

呼叫 GoogleMap.animateCamera() 並不會產生攝影機移動的動畫,而是會使攝影機檢視畫面立即轉至新的位置。

地圖事件
是否支援?部分

精簡模式支援 GoogleMap.setOnMapClickListener()GoogleMap.setOnMapLongClickListener()

如要在精簡模式中停用地圖上的點擊事件,您可以在包含 MapViewMapFragment 的檢視畫面中呼叫 setClickable()。舉例來說,如果在清單檢視中顯示一或多張地圖時,您想讓點擊事件叫用與地圖無關的動作,這項功能就能派上用場。

詳情請參閱事件說明文件

室內地圖和建築物
是否支援?
精簡模式會顯示與 Maps Static API 相同的圖塊。 也就是說,如果室內平面圖已加到預設圖塊中,就會顯示,反之則不會顯示。此外,您無法變更顯示的層面或操控層面挑選器。
路況圖層
是否支援?
精簡模式不支援 GoogleMap.setTrafficEnabled()
區域疊加層
是否支援?
精簡模式不支援 GoogleMap.addGroundOverlay()
圖塊疊加層
是否支援?
精簡模式不支援 GoogleMap.addTileOverlay()
手勢
是否支援?
精簡模式不支援手勢。啟用和停用手勢不會造成任何影響。
街景服務
是否支援?
精簡模式不支援街景服務