使用地圖 ID

地圖 ID 是指與特定地圖樣式或地圖項目相關聯的 ID。 您可以先設定地圖樣式,並將地圖樣式與 Google Cloud 控制台中的地圖 ID 建立關聯。 這樣一來,當您在程式碼中參照該地圖 ID 時,相關的地圖樣式就會顯示在應用程式中。後續的任何樣式更新也會自動顯示在應用程式中,客戶不需要進行任何更新。

建立地圖時,地圖 ID 會與專案建立關聯, 則只限單一平台 (Android、iOS、JavaScript) 或 Maps Static API。

如要在 Cloud 控制台中建立或管理任何地圖 ID,您必須 必須具備專案 「擁有者」或「專案編輯者」IAM 角色。

所需權限

如要在 您在上述 Google Cloud 專案中 擁有者或編輯者 IAM 角色 專案。

建立地圖 ID

「地圖 ID」是不重複的 ID,代表單一 Google 地圖。您可以建立地圖 ID 並更新與地圖 ID 相關聯的樣式 設定時間

如何建立地圖 ID:

  1. 前往 Cloud Console 中的「地圖管理」頁面。
  2. 按一下 [建立新地圖 ID],系統即會顯示「建立新地圖 ID」表單。
    建立新地圖 ID

    在表單中執行以下操作:

    • 為地圖命名。
    • 指定地圖類型或平台。
    • 如果是 JavaScript 地圖,請選擇光柵或向量地圖類型。
    • 輸入地圖說明。
    • 選取「Next」(下一步),系統即會顯示新的地圖 ID。

將地圖 ID 與地圖樣式建立關聯

這些操作說明假設您的專案中目前至少有一個地圖樣式。

  1. 前往 Cloud Console 中的「地圖管理」頁面。
  2. 在這個頁面的「地圖名稱」欄中選取現有的地圖 ID。
  3. 在這個表單的底部,從 [與這組地圖 ID 相關聯的地圖樣式] 下拉式選單中選擇地圖樣式。
  4. 選取「儲存」
    這張螢幕截圖顯示單一地圖 ID 的詳細資料頁面,包括可讓使用者將地圖樣式與這個地圖 ID 建立關聯的下拉式選單欄位。

在應用程式中加入地圖 ID

Android

在活動的 <fragment> 元素中加入地圖 ID 版面配置檔案 (使用 MapView 類別),或透過程式輔助的方式使用 GoogleMapOptions 類別。

舉例來說,假設您建立了名為 map_id 的地圖 ID,並以字串值形式儲存於 res/values/strings.xml 中:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="map_id">YOUR_MAP_ID</string>
</resources>

如果是透過活動版面配置檔案中的 <fragment> 元素新增的地圖,所有要設定自訂樣式的地圖片段都必須在 map:mapId 屬性中指定地圖 ID:

<fragment xmlns:map="http://schemas.android.com/apk/res-auto"
    class="com.google.android.gms.maps.SupportMapFragment"
    …
    map:mapId="@string/map_id" />

您也可以使用 MapView 類別的 map:mapId 屬性指定地圖 ID:

<com.google.android.gms.maps.MapView
    xmlns:android="http://schemas.android.com/apk/res/android"
    ....
    map:mapId="@string/map_id" />

如要透過程式輔助方式指定地圖 ID,請使用 GoogleMapOptions 類別將 ID 傳送至 MapFragment 例項:

Java

 MapFragment mapFragment = MapFragment.newInstance(
     new GoogleMapOptions()
         .mapId(getResources().getString(R.string.map_id)));

Kotlin

 val mapFragment = MapFragment.newInstance(
     GoogleMapOptions()
         .mapId(resources.getString(R.string.map_id))
 )

在 Android Studio 中,按照平常的操作方式建構及執行應用程式。在第一個步驟中設定的自訂樣式會套用至所有具備 ID 的地圖。

iOS

如要使用地圖 ID 將地圖例項化,請執行以下操作:

  1. 透過 Cloud 控制台建立包含地圖 ID 字串的 GMSMapID
  2. 建立 GMSMapView,指定您剛建立的地圖 ID。

Swift

let camera = GMSCameraPosition(latitude: 47.0169, longitude: -122.336471, zoom: 12)
let mapID = GMSMapID(identifier: "<YOUR MAP ID>")
let mapView = GMSMapView(frame: .zero, mapID: mapID, camera: camera)
self.view = mapView

Objective-C

GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:47.0169
                                                        longitude:-122.336471
                                                             zoom:12];
GMSMapID *mapID = [GMSMapID mapIDWithIdentifier:@"<YOUR MAP ID>"];
GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero mapID:mapID camera:camera];
self.view = mapView;

如果您使用的是自己的地圖 ID,可以設定地圖 ID 隨時可以在 Cloud 控制台中使用新樣式 地圖檢視就會自動反映樣式 大約 6 小時內的使用者

如要立即查看變更,請先關閉手機,然後再重新啟動 結束應用程式,強制退出最近用過的應用程式 應用程式清單,然後重新開啟。這樣更新後的地圖就會顯示。

JavaScript

在應用程式程式碼中使用地圖 ID 建立地圖:

  1. 如果您目前使用嵌入式 JSON 程式碼自訂地圖,請移除 styles 資源 來自 MapOptions 物件否則請略過這個步驟。

  2. 使用 mapId 屬性在地圖中加入地圖 ID。例如:

map = new google.maps.Map(document.getElementById('map'), {
center: {lat: -34.397, lng: 150.644},
zoom: 8,
mapId: 'MAP_ID'
});

靜態地圖介面集

如要在使用 Google 地圖服務的新地圖或現有地圖中加入地圖 ID 網路服務 API,請附加 map_id 網址參數,然後設為您的地圖 ID。 本例示範如何使用 Maps Static API,將地圖 ID 加入地圖。

<img src="https://maps.googleapis.com/maps/api/staticmap?center=Brooklyn+Bridge,New+York,NY&zoom=13&size=600x300&maptype=roadmap&markers=color:blue%7Clabel:S%7C40.702147,-74.015794&markers=color:green%7Clabel:G%7C40.711614,-74.012318&markers=color:red%7Clabel:C%7C40.718217,-73.998284&key=YOUR_API_KEY&map_id=YOUR_MAP_ID&signature=YOUR_SIGNATURE" />

地圖以美國紐約州紐約市布魯克林大橋為中心,並在右下角顯示地圖控制項。地圖會顯示道路、水域和土地的自訂樣式。

如果您在新增地圖 ID 之前,在 Maps Static 網址中設定了數位簽章, 您必須建立 並加入新的數位簽章。 產生新的網址簽署密鑰時,請記得移除先前的 。

使用地圖 ID 時可用的功能

雲端式地圖樣式設定:使用 Google Cloud 控制台設定地圖樣式,以及自訂和管理地圖。
適用於所有平台 (Android、JavaScript、iOS 和 Maps Static API)

向量地圖:在載入時繪製向量圖塊的地圖 在用戶端透過 WebGL 執行
適用於 JavaScript