地图 ID 是表示存储在 Google Cloud 中的 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" />