使用地图 ID

地图 ID 是与特定地图样式或地图项相关联的标识符。在 Google Cloud Console 中配置地图样式,并将其与地图 ID 相关联。然后,当您在代码中引用地图 ID 时,相关联的地图样式便会显示在您的应用中。您后续进行的任何样式更新都会自动显示在您的应用中,无需客户进行任何更新。

创建完毕后,地图 ID 会与一个项目相关联,而且仅限单个平台(Android、iOS、JavaScript)或 Maps Static API 使用。

如需在 Cloud 控制台中创建或管理任何地图 ID,您必须具有项目所有者或项目编辑者 IAM 角色

所需权限

如需在给定 Google Cloud 项目中创建或管理任何地图 ID 或地图样式,您必须具有该项目的 Owner 或 Editor IAM 角色

创建地图 ID

地图 ID 是表示单个 Google 地图实例的唯一标识符。您可以随时在 Cloud 控制台中创建地图 ID 并更新与之关联的样式。

如需创建地图 ID,请执行以下操作:

  1. 在 Cloud Console 中,转到“地图管理”页面
  2. 选择创建新的地图 ID,随后系统会显示创建新的地图 ID 表单。
    创建新的地图 ID

    在表单中执行以下操作:

    • 指定地图名称。
    • 指定地图类型或平台。
    • 对于 JavaScript 地图,请选择光栅或矢量地图类型。
    • 输入地图说明。
    • 选择下一步,系统会显示新的地图 ID。

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

以下说明假定您的项目中已有至少一个地图样式。

  1. 在 Cloud Console 中,转到“地图管理”页面
  2. 在此页面上,从地图名称列中选择一个现有的地图 ID。
  3. 在此表单底部,从与此地图 ID 关联的地图样式下拉列表中,选择一个地图样式。
  4. 选择保存
    显示单个地图 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">YOUR_MAP_ID</string>
</resources>

对于通过 activity 布局文件中的 <fragment> 元素添加的地图,所有应具有自定义样式的地图 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 类将其传递给 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,则可以随时在 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=YOUR_MAP_ID&signature=YOUR_SIGNATURE" />

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

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

使用地图 ID 时可用的功能

云端地图样式设置:使用 Google Cloud 控制台设置地图样式、自定义和管理地图。
适用于所有平台(Android、JavaScript、iOS 和 Maps Static API)

矢量地图:由基于矢量的图块组成,这些图块会在加载时使用 WebGL 在客户端绘制。
适用于 JavaScript