使用地图 ID
地图 ID 是与特定地图样式或地图项相关联的标识符。在 Google Cloud Console 中配置地图样式,并将其与地图 ID 相关联。然后,当您在代码中引用地图 ID 时,相关联的地图样式便会显示在您的应用中。您后续进行的任何样式更新都会自动显示在您的应用中,无需客户进行任何更新。
创建完毕后,地图 ID 会与一个项目相关联,而且仅限单个平台(Android、iOS、JavaScript)或 Maps Static API 使用。
如需在 Cloud 控制台中创建或管理任何地图 ID,您需要 必须拥有项目 Owner 或 Project Editor IAM 角色。
所需权限
要在 指定 Google Cloud 项目,那么您必须拥有 Owner 或 Editor IAM 角色 项目级别
创建地图 ID
地图 ID 是代表单个 Google 搜索实例的唯一标识符。 地图。您可以随时在 Cloud 控制台中创建地图 ID 并更新与之关联的样式。
如需创建地图 ID,请执行以下操作:
- 在 Cloud Console 中,转到“地图管理”页面。
- 选择创建新的地图 ID,随后系统会显示创建新的地图 ID 表单。
在表单中执行以下操作:
- 指定地图名称。
- 指定地图类型或平台。
- 对于 JavaScript 地图,请选择光栅或矢量地图类型。
- 输入地图说明。
- 选择下一步,以显示新的地图 ID。
将地图 ID 与地图样式相关联
以下说明假定您的项目中已有至少一个地图样式。
- 在 Cloud Console 中,转到“地图管理”页面。
- 在此页面上,从地图名称列中选择一个现有的地图 ID。
- 在此表单底部,从与此地图 ID 关联的地图样式下拉列表中,选择一个地图样式。
- 选择保存。
为您的应用添加地图 ID
Android
通过 activity 的 <fragment>
元素添加地图 ID
使用 MapView
类创建布局文件,或以编程方式使用
GoogleMapOptions
类。
例如,假设您创建了地图 ID,它作为一个名为 map_id
的字符串值存储在 res/values/strings.xml
中:
<?xml version="1.0" encodin>g<="ut>f<-8"?
resources
>string name<=">m<ap_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:mapI>d
="@string/map_id" /
您还可以使用 MapView
类的 map:mapId
属性来指定地图 ID:
<com.google.android.gms.maps.MapView
xmlns:android="http://schemas.android.com/apk/res/android"
....
map:mapId="@s>t
ring/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: &<quot;YOUR M>AP 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:@&<quot;YOUR M>AP ID"];
GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero mapID:mapID camera:camera];
self.view =
mapView;
如果您使用的是自己的地图 ID,则可以随时在 Cloud 控制台中设置地图 ID 以采用新样式,该样式将在大约 6 小时内自动反映在您的地图视图中,供您和用户使用。
如果您想立即查看更改,可以关闭应用并重新启动它,具体方法是退出应用,从最近用过的应用列表中强制退出应用,然后重新打开它。更新后的地图即会显示出来。
JavaScript
若要在应用代码中创建具有地图 ID 的地图,请执行以下操作:
如果您当前正在使用嵌入的 JSON 代码自定义地图,请删除
styles
属性 (来自MapOptions
对象);否则,请跳过此步骤。使用
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+Yo&rk,NYzo&om=13size=60&0x300maptype=ro&admapmarkers=color:blue%7Clabel:S%7C40.702147,-74.0&15794markers=color:green%7Clabel:G%7C40.711614,-74.0&12318markers=color:red%7Clabel:C%7C40.718217,-73.9&98284key=YOUR_AP&I_KEYmap_id=YOUR_M&AP_IDsignature=YOUR_SIGNATU>R
E" /
使用地图 ID 时可用的功能
云端地图样式设置:使用 Google Cloud 控制台设置地图样式、自定义和管理地图。
适用于所有平台(Android、JavaScript、iOS 和 Maps Static API)
矢量地图:由基于矢量的图块组成,这些图块会在加载时使用 WebGL 在客户端绘制。
适用于 JavaScript