如何创建地图 ID

请选择平台: Android iOS JavaScript Web 服务

地图 ID 是表示单个 Google 地图实例的唯一标识符。您可以使用地图 ID 在网站和应用中启用功能,或管理或设置地图样式。您可以在 Google Cloud 控制台项目的地图管理页面上,为所需的每个平台(JavaScript、Android、iOS 或静态地图)创建地图 ID。

如需了解更多详情以及使用地图 ID 的功能,请参阅地图 ID 概览

所需权限

如需在项目中创建或管理任何地图 ID,您必须在项目的 Cloud 控制台 IAM 页面上使用具有适当角色级权限(“编辑者”或“所有者”)的主账号。如需了解详情,请参阅 IAM 基本角色和预定义角色参考文档

创建地图 ID

请按照以下步骤在 Cloud 控制台中创建地图 ID:

  1. 登录并打开具有所需权限的 Cloud 控制台项目。

  2. 在 Cloud 控制台中,前往“地图管理”页面

  3. 点击创建地图 ID

    创建新的地图 ID

  4. 创建新的地图 ID 页面上,执行以下操作:

    1. 名称中,为地图 ID 指定名称。
    2. 可选:对于说明,请说明地图 ID 的用途。
    3. 对于地图类型,选择您计划在哪个平台上使用地图 ID。如果您选择了 JavaScript,还需要选择光栅(默认)或矢量地图类型。如需详细了解矢量地图,请参阅矢量地图
    4. 点击保存,系统会显示您的新地图 ID。

将地图 ID 与地图样式相关联

如果您使用的是云端地图样式,则需要将地图样式与地图 ID 相关联。如需了解详情,请参阅关联

为您的应用添加地图 ID

Android

您可以使用 MapView 类(或以编程方式使用 GoogleMapOptions 类)通过 activity 布局文件中的 <fragment> 元素添加地图 ID。

例如,假设您创建了地图 ID,它作为一个名为 map_id 的字符串值存储在 res/values/strings.xml 中:

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

对于通过 activity 布局文件中的 <fragment> 元素添加的地图,所有应具有自定义样式的地图 fragment 都必须在 map:mapId 属性中指定地图 ID:

<fragment xmlns:map="http://schemas.android.com/apk/res-auto"
    map:name="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 类将其传递给 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: "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:@"MAP_ID"];
GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero mapID:mapID camera:camera];
self.view = mapView;

如果您使用的是自己的地图 ID,则可以随时在 Cloud 控制台中设置地图 ID 以采用新样式,该样式将在大约 6 小时内自动反映在您的地图视图中,供您和用户查看。

如果您想立即查看更改,可以关闭应用并重新启动应用,具体方法是退出应用,从最近用过的应用列表中强制退出应用,然后重新打开应用。然后,系统会显示更新后的地图。

JavaScript

如需在应用代码中创建具有地图 ID 的地图,请执行以下操作:

  1. 如果您已使用嵌入的 JSON 代码自定义地图,请从 MapOptions 对象中移除 styles 属性;否则,请跳过此步骤。

  2. 使用 mapId 属性向地图添加地图 ID。例如:

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

静态地图

如需向使用某个 Web 服务 API 的新地图或现有地图添加地图 ID,请附加 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=MAP_ID&signature=YOUR_SIGNATURE" />

以美国纽约州纽约市布鲁克林大桥为中心的地图,地图控件位于右下角。地图上显示了道路、水域和陆地的自定义样式。

如果您在添加地图 ID 之前在 Google 地图静态网址中添加了数字签名,则需要在添加地图 ID 后创建并添加新的数字签名。生成新的网址签名密钥时,请务必从网址中移除之前的数字签名。