借助基于云的地图样式设置的 JSON 架构,您可以使用 JSON 自定义地图,就像通过样式编辑器界面自定义地图一样。本文档介绍了 JSON 架构以及如何进行 JSON 样式声明。
如需了解如何在样式编辑器中使用 JSON 编辑地图样式,或如何导入和导出地图样式,请参阅将 JSON 与云端地图样式设置搭配使用。
查看 JSON 样式声明示例
以下 JSON 样式声明设置了背景颜色,然后定义了地图注点、公园和水景的样式,并隐藏了餐饮场所的标签。
{
"variant": "light",
"styles": [
{
"id": "natural.land",
"geometry": {
"fillColor": "#f7e3f7"
}
},
{
"id": "natural.water",
"geometry": {
"fillColor": "#d4b2ff"
},
"label": {
"textFillColor": "#3d2163",
"textStrokeColor": "#f0e1ff"
}
},
{
"id": "pointOfInterest",
"label": {
"pinFillColor": "#e0349a",
"textFillColor": "#a11e6e",
"textStrokeColor": "#ffd9f0"
}
},
{
"id": "pointOfInterest.emergency.hospital",
"geometry": {
"fillColor": "#ffe3e3"
}
},
{
"id": "pointOfInterest.foodAndDrink",
"label": {
"visible": false
}
},
{
"id": "pointOfInterest.recreation.park",
"geometry": {
"fillColor": "#f9b9d2"
}
}
]
}
JSON 对象
JSON 样式声明包含一个顶级对象和一个样式规则数组。
- 顶级设置(可选)- 全局样式设置,例如
backgroundColor和variant。 styles- 样式规则对象数组,可以包含以下内容:id- 表示为此样式修改选择的目标地图项(例如,pointOfInterest.recreation.park)。geometry(可选)- 地图项的几何元素和要应用的样式规则(例如,fillColor)。label(可选)- 地图项的文本或标记标签,以及要应用的样式规则(例如,textStrokeColor)。
顶级设置
下表中的属性适用于整个地图样式。
| 属性 | 类型 | 说明 | 示例 |
|---|---|---|---|
|
字符串 | 使用 #RRGGBB 十六进制字符串自定义地图应用的背景颜色。此设置不支持更改不透明度。 | "#002211" |
|
"light"|"dark" | 指定浅色或深色模式。如果未指定,则默认值为“浅色”。 | “light” |
|
布尔值 | 如需启用单色,请使用 true 获取地图的灰度版本。 |
|
样式规则对象
本部分介绍了 styles 数组中用于自定义地图功能的样式规则对象的属性。每个样式规则对象都必须包含以下内容:
id属性所定义)。- 定义了关联的样式器属性的
geometry或label元素。
id(地图功能)
id 属性用于指定要设置样式的地图功能。属性名称是样式编辑器中地图要素名称的驼峰式大小写版本。
地图项构成类别树。如果您指定父级地图项类型(例如 pointOfInterest),则您为父级地图项指定的所有样式均会应用到其所有子级地图项(例如 pointOfInterest.retail 和 pointOfInterest.lodging)。如需了解详情,请参阅地图项层次结构。
可用 id 媒体资源列表
可用的 id 属性如下:
pointOfInterestpointOfInterest.emergencypointOfInterest.emergency.firepointOfInterest.emergency.hospitalpointOfInterest.emergency.pharmacypointOfInterest.emergency.policepointOfInterest.entertainmentpointOfInterest.entertainment.artspointOfInterest.entertainment.casinopointOfInterest.entertainment.cinemapointOfInterest.entertainment.historicpointOfInterest.entertainment.museumpointOfInterest.entertainment.themeParkpointOfInterest.entertainment.touristAttractionpointOfInterest.foodAndDrinkpointOfInterest.foodAndDrink.barpointOfInterest.foodAndDrink.cafepointOfInterest.foodAndDrink.restaurantpointOfInterest.foodAndDrink.winerypointOfInterest.landmarkpointOfInterest.lodgingpointOfInterest.recreationpointOfInterest.recreation.beachpointOfInterest.recreation.boatingpointOfInterest.recreation.fishingpointOfInterest.recreation.golfCoursepointOfInterest.recreation.hotSpringpointOfInterest.recreation.natureReservepointOfInterest.recreation.parkpointOfInterest.recreation.peakpointOfInterest.recreation.sportsComplexpointOfInterest.recreation.sportsFieldpointOfInterest.recreation.trailheadpointOfInterest.recreation.zoopointOfInterest.retailpointOfInterest.retail.grocerypointOfInterest.retail.shoppingpointOfInterest.servicepointOfInterest.service.atmpointOfInterest.service.bankpointOfInterest.service.carRentalpointOfInterest.service.evChargingpointOfInterest.service.gasStationpointOfInterest.service.parkingLotpointOfInterest.service.postOfficepointOfInterest.service.restStoppointOfInterest.service.restroompointOfInterest.transitpointOfInterest.transit.airportpointOfInterest.otherpointOfInterest.other.bridgepointOfInterest.other.cemeterypointOfInterest.other.governmentpointOfInterest.other.librarypointOfInterest.other.militarypointOfInterest.other.placeOfWorshippointOfInterest.other.schoolpointOfInterest.other.townSquarepoliticalpolitical.countryOrRegionpolitical.borderpolitical.reservationpolitical.stateOrProvincepolitical.citypolitical.sublocalitypolitical.neighborhoodpolitical.landParcelinfrastructureinfrastructure.buildinginfrastructure.building.commercialinfrastructure.businessCorridorinfrastructure.roadNetworkinfrastructure.roadNetwork.noTrafficinfrastructure.roadNetwork.noTraffic.pedestrianMallinfrastructure.roadNetwork.noTraffic.trailinfrastructure.roadNetwork.noTraffic.trail.pavedinfrastructure.roadNetwork.noTraffic.trail.unpavedinfrastructure.roadNetwork.parkingAisleinfrastructure.roadNetwork.rampinfrastructure.roadNetwork.roadinfrastructure.roadNetwork.road.arterialinfrastructure.roadNetwork.road.highwayinfrastructure.roadNetwork.road.localinfrastructure.roadNetwork.road.noOutletinfrastructure.roadNetwork.roadShieldinfrastructure.roadNetwork.roadSigninfrastructure.roadNetwork.roadDetailinfrastructure.roadNetwork.roadDetail.surfaceinfrastructure.roadNetwork.roadDetail.crosswalkinfrastructure.roadNetwork.roadDetail.sidewalkinfrastructure.roadNetwork.roadDetail.intersectioninfrastructure.railwayTrackinfrastructure.railwayTrack.commercialinfrastructure.railwayTrack.commuterinfrastructure.transitStationinfrastructure.transitStation.bicycleShareinfrastructure.transitStation.busStationinfrastructure.transitStation.ferryTerminalinfrastructure.transitStation.funicularStationinfrastructure.transitStation.gondolaStationinfrastructure.transitStation.monorailinfrastructure.transitStation.railStationinfrastructure.transitStation.railStation.subwayStationinfrastructure.transitStation.railStation.tramStationinfrastructure.urbanAreanaturalnatural.continentnatural.archipelagonatural.islandnatural.landnatural.land.landCovernatural.land.landCover.cropsnatural.land.landCover.dryCropsnatural.land.landCover.forestnatural.land.landCover.icenatural.land.landCover.sandnatural.land.landCover.shrubnatural.land.landCover.tundranatural.waternatural.water.oceannatural.water.lakenatural.water.rivernatural.water.othernatural.base
元素
元素是地图项的细分。例如,在地图上,道路不仅包含图形线条(geometry),还包括指示其名称的文本(label)。
可用元素如下所示(但请注意,特定地图项可能不支持任何元素,也可能支持部分或全部元素):
geometry:选择指定地图项的所有几何元素(例如,多边形、多段线)。label:选择指定地图项的所有标签元素(例如文字、图钉)。
样式器
样式器用于为地图项的每个元素定义样式规则。
例如,对于建筑轮廓,您可以按如下方式设置每个元素的样式:
建筑物的 geometry 样式设置器示例 |
建筑物的 label 样式设置器示例 |
|---|---|
| 是否在地图上隐藏或显示建筑物轮廓多边形。 | 是否隐藏或显示建筑物标签。 |
| 多边形填充颜色和不透明度。 | 文本填充颜色和不透明度。 |
| 边框颜色、不透明度和宽度。 | 文本描边颜色和不透明度。 |
本部分介绍了可用于 geometry 和 label 元素的不同样式选项。
geometry 种样式器
下表列出了所有可用的几何样式。
| Styler | 类型 | 说明 |
|---|---|---|
|
布尔值 | 如需隐藏地图项的多边形或多段线,请设置为 false。 |
|
字符串 | 使用 RGB 十六进制字符串自定义多边形或多段线的颜色。 |
|
float | 自定义多边形或多段线的不透明度,其中 0 表示透明,1 表示不透明。 |
|
字符串 | 使用 RGB 十六进制字符串自定义轮廓的颜色。 |
|
float | 自定义轮廓的不透明度,其中 0 表示透明,1 表示不透明。 |
|
float | 自定义轮廓粗细,范围为 0 到 8。 |
如需了解详情,请参阅多边形和折线。
label 种样式器
下表列出了所有可用的标签样式。
| Styler | 类型 | 说明 |
|---|---|---|
|
布尔值 | 如需隐藏地图元素的标签,请设置为 false。 |
|
字符串 | 使用 RGB 十六进制字符串自定义文本标签的颜色。 |
|
float | 自定义文字标签的不透明度,其中 0 表示透明,1 表示不透明。 |
|
字符串 | 使用 RGB 十六进制字符串自定义轮廓的颜色。 |
|
float | 自定义轮廓的不透明度,其中 0 表示透明,1 表示不透明。 |
|
float | 自定义轮廓粗细,范围为 0 到 8。 |
|
字符串 | 使用 RGB 十六进制字符串自定义图钉颜色。 |
如需了解详情,请参阅图标和文字标签。
Keyzoom
您可以为某个功能设置一种样式,以应用于所有关键缩放级别,也可以为不同的关键缩放级别指定不同的样式。如果您只提供一种样式,则该样式将用于从 z0 开始的所有 keyzoom 级别。如果您为不同的关键缩放级别提供样式,则该样式将从相应缩放级别开始应用,直至您定义的下一个缩放级别。
如需为样式设置 keyzoom 级别,请在样式设置器属性中定义从 z0 到 z22 的 keyzoom 级别,然后定义样式设置器自定义设置。
在以下示例中,水域颜色在关键缩放级别 0-5 时为黑色,在关键缩放级别 6-11 时为深灰色,从关键缩放级别 12 开始为浅灰色。
{
"id": "natural.water",
"geometry": {
"fillColor": {
"z0": "#000000",
"z6": "#666666",
"z12": "#cccccc"
}
}
}
如需了解详情,请参阅样式缩放级别。
限制
您可以使用 JSON 在 Google Cloud 控制台中设置几乎所有内容的样式,但地图设置菜单中的以下功能除外:
对于这些功能,您必须在 地图设置菜单中选择偏好设置。