地图 ID 是表示单个 Google 地图实例的唯一标识符。您可以使用地图 ID 在网站和应用中启用功能,或管理或设置地图样式。您可以在 Google Cloud 控制台项目的地图管理页面上,为所需的每个平台(JavaScript、Android、iOS 或静态地图)创建地图 ID。
如需了解更多详情以及使用地图 ID 的功能,请参阅地图 ID 概览。
所需权限
如需在项目中创建或管理任何地图 ID,您必须在项目的 Cloud 控制台 IAM 页面上使用具有适当角色级权限(“编辑者”或“所有者”)的主账号。如需了解详情,请参阅 IAM 基本角色和预定义角色参考文档。
创建地图 ID
请按照以下步骤在 Cloud 控制台中创建地图 ID:
登录并打开具有所需权限的 Cloud 控制台项目。
在 Cloud 控制台中,前往“地图管理”页面。
点击创建地图 ID。
在创建新的地图 ID 页面上,执行以下操作:
- 在名称中,为地图 ID 指定名称。
- 可选:对于说明,请说明地图 ID 的用途。
- 对于地图类型,选择您计划在哪个平台上使用地图 ID。如果您选择了 JavaScript,还需要选择光栅(默认)或矢量地图类型。如需详细了解矢量地图,请参阅矢量地图。
- 点击保存,系统会显示您的新地图 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 实例化地图,请执行以下操作:
- 使用 Cloud 控制台中的地图 ID 字符串创建
GMSMapID
。 - 创建一个
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 的地图,请执行以下操作:
如果您已使用嵌入的 JSON 代码自定义地图,请从
MapOptions
对象中移除styles
属性;否则,请跳过此步骤。使用
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" />