您可以使用样式选项自定义标准 Google 地图样式的显示样式,更改道路、公园、商家和其他景点等特征的视觉显示。在更改这些特征的样式的同时,您还可以完全隐藏特征。这意味着,您可以强调地图的特定组成部分,或者让地图与周围页面的样式相辅相成。
示例
以下 JSON 样式声明将所有特征变为灰色,然后将干线几何结构渲染为蓝色,并完全隐藏景观标签:
[
{
"featureType": "all",
"stylers": [
{ "color": "#C0C0C0" }
]
},{
"featureType": "road.arterial",
"elementType": "geometry",
"stylers": [
{ "color": "#CCFFFF" }
]
},{
"featureType": "landscape",
"elementType": "labels",
"stylers": [
{ "visibility": "off" }
]
}
]
JSON 对象
JSON 样式声明包含以下元素:
- featureType(可选)- 要选择进行此样式修改的特征。特征是地图上的地理特征,包括道路、公园、水体等等。如果未指定特征,则会选择所有特征。
- elementType(可选)- 要选择的指定特征的属性。元素是特征的细分,包括标签和几何结构。如果未指定元素,系统会选中特征的所有元素。
- stylers - 选中的特征和元素要应用的规则。样式器用于指示特征的颜色、可见性和权重。您可以为一个特征应用一个或多个样式。
要指定样式,必须将一系列 featureType 和 elementType 选择器和 stylers 整合到一个样式组中。您可以在一个组中将任意特征组合指定为目标。但是,一次使用的样式数量有限。如果您的样式组超过最大字符数,则系统不会应用任何样式。
此页面的其他部分包含有关特征、元素和样式器的更多信息。
featureType
以下 JSON 代码段用于选择地图上的所有道路:
{
"featureType": "road"
}
特征(或特征类型)是地图上的几何特征,包括道路、公园、水体、商家等等。
特征组成类别树,以 all 为根。如果未指定特征,则会选择所有特征。指定 all 特征具有相同的效果。
某些特征包含您使用点分表示法指定的子特征。例如,landscape.natural 或 road.local。如果仅指定父特征(例如 road),则您为父特征指定的所有样式均适用于其所有子特征(例如 road.local 和 road.highway)。
注意,父特征可能包含其所有子特征均不包含的某些元素。
这种结合实现了下列功能:
all(默认)选择所有特征。administrative选择所有行政区域。样式设置仅影响行政区域的标签,不影响地理边界或填充。administrative.country选择国家/地区。administrative.land_parcel选择地块。administrative.locality选择地区。administrative.neighborhood选择社区。administrative.province选择省份。
landscape选择所有景观。landscape.man_made选择所有人文建筑。landscape.natural选择自然地貌特征。landscape.natural.landcover选择地表特征。landscape.natural.terrain选择地形特征。
poi选择所有景点。poi.attraction选择旅游景点。poi.business选择商家。poi.government选择政府大楼。poi.medical选择应急服务,包括医院、药房、警察、医生和其他服务。poi.park选择公园。poi.place_of_worship选择宗教场所,包括教堂、寺庙、清真寺和其他场所。poi.school选择学校。poi.sports_complex选择体育馆。
road选择所有道路。road.arterial选择公路干线。road.highway选择国道。road.highway.controlled_access选择进口控制国道。road.local选择地方道路。
transit选择所有公交站和公交路线。transit.line选择公交路线。transit.station选择所有公交站。transit.station.airport选择机场。transit.station.bus选择公交车站。transit.station.rail选择火车站。
water选择水体。
elementType
以下 JSON 代码段用于选择所有当地道路的标签:
{
"featureType": "road.local",
"elementType": "labels"
}
元素是特征的细分。例如,在地图上,道路不仅包含图形线条(几何结构),还保护指示其名称的文本(标签)。
元素分为以下几种,但请注意,特定的特征可能不支持任何元素,也可能支持部分或全部元素:
all(默认)选择指定特征的所有元素。geometry选择指定特征的所有几何元素。geometry.fill只选择特征几何结构的填充区geometry.stroke只选择特征几何结构的描边
labels选择与指定特征相关的文本标签。labels.icon只选择特征标签内显示的图标。labels.text只选择标签的文本。labels.text.fill只选择标签的填充区。标签的填充区通常渲染为标签文本周围的彩色轮廓。labels.text.stroke只选择标签文本的描边。
stylers
样式器是可以应用到地图特征和元素的格式选项。
以下 JSON 代码段使用 RGB 值将特征显示为亮绿色:
"stylers": [
{ "color": "#99FF33" }
]
此代码段将移除特征颜色的所有浓度,不管其最初的颜色是什么。这能起到渲染特征灰度的效果。
"stylers": [
{ "saturation": -100 }
]
此代码段用于完全隐藏特征:
"stylers": [
{ "visibility": "off" }
]
支持以下样式选项:
hue(格式为#RRGGBB的 RGB 十六进制字符串)表示基础颜色。注:此选项可以设置色调,同时保留默认的 Google 样式(或您在地图上定义的其他样式选项)中指定的饱和度和亮度。结果颜色是相对于基本地图的样式而言的。如果 Google 对基本地图样式做出任何更改,会影响使用
hue设置样式的特征。如果可以,最好使用绝对color样式器。lightness(一个介于-100和100的浮点值)表示元素的亮度变化百分比。负值增加暗度(-100 指定黑色),正值增加亮度(+100 指定白色)。注:此选项可以设置亮度,同时保留默认的 Google 样式(或您在地图上定义的其他样式选项)中指定的饱和度和色调。结果颜色是相对于基本地图的样式而言的。如果 Google 对基本地图样式做出任何更改,会影响使用
lightness设置样式的特征。如果可以,最好使用绝对color样式器。saturation(一个介于-100和100的浮点值)表示应用于元素的基础颜色强度变化百分比。注:此选项可以设置饱和度,同时保留默认的 Google 样式(或您在地图上定义的其他样式选项)中指定的色调和亮度。结果颜色是相对于基本地图的样式而言的。如果 Google 对基本地图样式做出任何更改,会影响使用
saturation设置样式的特征。如果可以,最好使用绝对color样式器。gamma(一个介于0.01和10.0之间的浮点值,其中1.0不应用任何校正)表示对元素应用的伽马校正的大小。伽马矫正可以修改非线性方式中颜色的亮度,同时不会影响白色和黑色值。伽马矫正通常用于修改多个元素的对比度。例如,您可以通过修改伽马矫正值来增减元素边缘与内部之间的对比度。注:此选项可以使用伽马曲线调整与默认 Google 样式相对的亮度。如果 Google 对基本地图样式做出任何更改,会影响使用
gamma设置样式的地图项。如果可以,最好使用绝对color样式器。invert_lightness(如果为true)能够反转现有的亮度。举例来说,可利用它快速切换到包含白色文本、亮度更低的地图。注:此选项只是反转默认的 Google 样式。如果 Google 对基本地图样式做出任何更改,会影响使用
invert_lightness设置样式的特征。如果可以,最好使用绝对color样式器。visibility(on、off或simplified)表示元素是否以及如何出现在地图上。simplified可见性会从受影响的特征中删除某些样式特征;例如,道路将会简化为更细的无轮廓线,而公园将失去标签文本但保留标签图标。color(格式为#RRGGBB的 RGB 十六进制字符串)设置特征的颜色。weight(大于或等于零的整型值)设置特征的粗细(单位:像素)。设置较高的粗细值可能导致附近图块边界被裁剪。
样式规则按照您指定的顺序应用。请勿将多个操作整合为一个样式操作。正确做法是,在样式组中将每个操作定义为单独的条目。
注:顺序很重要,因为某些操作是不可交换的。通过样式操作修改的特征和/或元素(通常)拥有现有样式;操作将作用于这些现有样式(若存在)。
色调、饱和度和亮度模型
样式化地图使用色调、饱和度、亮度 (HSL) 模型在样式器操作内表示颜色。色调表示基础颜色,饱和度表示该颜色的强度,亮度表示组成颜色中白色或黑色的相对数量。
伽马矫正会修改色彩空间的亮度,一般会增加或降低对比度。此外,HSL 模型还定义了坐标空间内的颜色,其中hue 表示色轮内的朝向、而 saturation 和 lightness 则表示沿不同轴的振幅。色调在一个 RGB 色彩空间内测量,该空间与大多数 RGB 色彩空间类似,不同的是缺少白色和黑色阴影。

尽管 hue 采用 HTML 十六进制颜色值,但它仅使用该值来确定基础颜色(其在色轮范围内的朝向)而非其饱和度或亮度,后者以百分比变化形式单独指定。
例如,您可以将纯绿色色调定义为 hue:0x00ff00 或 hue:0x000100。两个色调相同。两个值都指向 HSL 颜色模型中的纯绿色。

一个 RGB 色轮
包含等量红色、绿色和蓝色的 RGB hue 值不表示任何色调,因为其中没有任何值表示 HSL 坐标空间的朝向。例如,”#000000“(黑色)、”#FFFFFF“(白色)和所有纯灰色阴影。如需表示黑色、白色或灰色,您必须删除所有 saturation(将值设置为 -100),并改为调整 lightness。
此外,在修改已有配色方案的现有特征时,更改 hue 等值并不会改变其现有 saturation 或 lightness。
