使用地图 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,请执行以下操作:
- 在 Cloud Console 中,转到“地图管理”页面。
- 选择创建新的地图 ID,随后系统会显示创建新的地图 ID 表单。
在表单中执行以下操作:
- 指定地图名称。
- 指定地图类型或平台。
- 对于 JavaScript 地图,请选择光栅或矢量地图类型。
- 输入地图说明。
- 选择下一步,系统会显示新的地图 ID。
将地图 ID 与地图样式相关联
以下说明假定您的项目中已有至少一个地图样式。
- 在 Cloud Console 中,转到“地图管理”页面。
- 在此页面上,从地图名称列中选择一个现有的地图 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 实例化地图,请执行以下操作:
- 使用 Cloud 控制台中的地图 ID 字符串创建
GMSMapID
。 - 创建一个
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 的地图,请执行以下操作:
如果您当前正在使用嵌入式 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=YOUR_MAP_ID&signature=YOUR_SIGNATURE" />
使用地图 ID 时可用的功能
云端地图样式设置:使用 Google Cloud 控制台设置地图样式、自定义和管理地图。
适用于所有平台(Android、JavaScript、iOS 和 Maps Static API)
矢量地图:由基于矢量的图块组成,这些图块会在加载时使用 WebGL 在客户端绘制。
适用于 JavaScript