多边形¶
多边形是包含外缘(或“笔划”)和内缘(或“填充”)的二维形状。多边形可以被认为是一个不规则形状的点,其样式与点类似。
多边形层示例¶
这个 polygons layer
下面使用的是一个虚构国家的县信息。作为参考,下面包含了多边形的属性表。
fid (功能ID) |
name (县名) |
pop (人口) |
polygon.1 |
反讽县 |
412234 |
polygon.2 |
跟踪县 |
235421 |
polygon.3 |
德古拉县 |
135022 |
polygon.4 |
保利县 |
1567879 |
polygon.5 |
轴承县 |
201989 |
polygon.6 |
基督山县 |
152734 |
polygon.7 |
大县 |
67123 |
polygon.8 |
伦布县 |
198029 |
简单多边形¶
此示例显示一个用蓝色填充的多边形。
代码¶
1 * {
2 fill: #000080;
3 }
细节¶
这个简单的规则应用深蓝色 (#000080
)填充到数据集中的所有多边形。
备注
图中多边形周围的浅色边界是由相邻的多边形引起的渲染器的伪影。这种样式没有边框。
带笔划的简单多边形¶
此示例将2像素的白色笔画添加到 简单多边形 例子。
代码¶
1 * {
2 fill: #000080;
3 stroke: #FFFFFF;
4 stroke-width: 2;
5 }
细节¶
此示例与 简单多边形 上面的例子,加上“stroke”和“stroke width”属性,在每个多边形周围添加一个2像素宽的白色边框。
透明多边形¶
此示例基于 带笔划的简单多边形 示例并通过将不透明度设置为50%使填充部分透明。
代码¶
1 * {
2 fill: #000080;
3 fill-opacity: 0.5;
4 stroke: #FFFFFF;
5 stroke-width: 2;
6 }
细节¶
此示例与 带笔划的简单多边形 示例,保存以定义填充的不透明度 第3行 .0.5的值会导致部分透明的填充,即50%不透明。不透明度值为1将填充绘制为100%不透明,而不透明度值为0将导致完全透明(0%不透明)填充。在本例中,由于背景是白色,所以深蓝色看起来更亮。如果将这些点设置在深色背景上,则生成的颜色将更暗。
图形填充¶
此示例使用瓦片图形填充多边形。
代码¶
1 * {
2 fill: url("colorblocks1.png");
3 fill-mime: 'image/png';
4 }
细节¶
此样式用瓦片图形填充多边形。所选图形提供了填充的URL,在本例中,它是相对于 styles
包含在数据目录中的目录(可以提供绝对路径以及Internet引用)。 第3行 指定图像本身是PNG(默认情况下,代码假定使用了JPEGS,除非我们指定其mime类型,否则将无法解析文件)。未指定图像的大小,这意味着将使用本机大小。如果需要重新缩放,可以使用“fill-size”属性强制使用不同的大小。
填充图案填充¶
此示例使用图案填充图案填充多边形。
代码¶
1 * {
2 fill: symbol("shape://times");
3 :fill {
4 size: 16;
5 stroke: #990099;
6 stroke-width: 1px;
7 }
8 }
细节¶
在本例中,填充被指定为“shape://times”符号,该符号将被瓦片以创建交叉阴影效果。
舱口的细节在 第3行 *,其中伪选择器“:fill”用于匹配填充内容,并指定我们需要一个16像素的大符号(符号越大,交叉阴影越粗),并用1像素宽的紫色笔画。
带默认标签的多边形¶
此示例显示多边形上的文本标签。在没有任何其他自定义的情况下,这就是标签的显示方式。
代码¶
1 * {
2 fill: #40FF40;
3 stroke: white;
4 stroke-width: 2;
5 label: [name];
6 font-fill: black;
7 }
细节¶
Css中的单一规则适用于所有功能:首先,它用白色轮廓填充所有的多边形,然后使用默认字体(Times)、黑色和默认字体大小(10px)应用“name”属性作为标签。
标签光环¶
这个例子改变了 带默认标签的多边形 在标签上添加白色光晕。
代码¶
1 * {
2 fill: #40FF40;
3 stroke: white;
4 stroke-width: 2;
5 label: [name];
6 font-fill: black;
7 halo-color: white;
8 halo-radius: 3;
9 }
细节¶
这个例子建立在 带默认标签的多边形 ,在标签周围添加光环 lines 7-8 .光环在标签周围创建颜色缓冲区,以提高标签的易读性。 第9行 设置光晕的半径,围绕标签边缘扩展光晕3个像素,以及 第8行 将光晕的颜色设置为白色。由于当设置为相对于文本颜色的鲜明对比度时,光晕最有用,因此本示例在黑色文本周围使用白色光晕以确保最佳可读性。
带样式标签的多边形¶
此示例改进了 带默认标签的多边形 示例:将标签置于多边形的中心,指定不同的字体名称和大小,并设置其他标签放置优化。
代码¶
1 * {
2 fill: #40FF40;
3 stroke: white;
4 stroke-width: 2;
5 label: [name];
6 font-family: Arial;
7 font-size: 11px;
8 font-style: normal;
9 font-weight: bold;
10 font-fill: black;
11 label-anchor: 0.5 0.5;
12 label-auto-wrap: 60;
13 label-max-displacement: 150;
14 }
细节¶
此示例与 带默认标签的多边形 例如,使用标签的其他样式选项。
字体设置为Arial、11像素、“Normal”(与“Italic”相反)和粗体。
“标签定位点”影响标签相对于多边形质心的放置位置,通过沿多边形质心水平放置50%(或0.5)以及以完全相同的方式垂直放置标签使标签居中。
最后,还有两个附加的标签放置优化:“label auto wrap”属性通过将标签上的换行设置为60像素,确保长标签跨多行拆分,“label max displacement”允许标签最多替换150像素。负载感应。这样可以确保标签被压缩,并且不太可能溢出多边形边界。注意角落里有一个巨大的小县城,它的标签现在已经显示出来了。
基于属性的多边形¶
此示例根据“pop”(population)属性对多边形进行不同的样式设置。
代码¶
1 [parseLong(pop) < 200000] {
2 fill: #66FF66;
3 }
4
5 [parseLong(pop) >= 200000] [parseLong(pop) < 500000] {
6 fill: #33CC33;
7 }
8
9 [parseLong(pop) >= 500000] {
10 fill: #009900;
11 }
细节¶
我们虚构国家中的每个多边形都有一个人口,由人口(“pop”)属性表示。此样式包含三个规则,根据“pop”属性的值更改填充,较小的值生成较浅的颜色,较大的值生成较深的颜色。
三条规则设计如下:
规则顺序 |
规则名称 |
人口 (pop) |
Color |
1 |
SmallPop |
20万以下 |
|
2 |
MediumPop |
200000至500000 |
|
3 |
LargePop |
大于500000 |
|
在这种情况下,规则的顺序并不重要,因为每个形状仅由单个规则呈现。
第一条规则将“pop”属性低于200000的所有多边形填充为浅绿色,第二条规则将“pop”属性介于200000到500000之间的所有多边形都填充为中绿色,而第三条规则将其余多边形绘制为深绿色。
在过滤器中有趣的是使用“parselong”过滤器函数:这个函数是必要的,因为“pop”属性是一个字符串,所以我们可以对它进行字符串比较,而函数将其转换为数字,从而确保正确的数字比较。
基于缩放的多边形¶
此示例在不同缩放级别更改多边形的样式。
代码¶
1 * {
2 fill: #0000CC;
3 stroke: black;
4 }
5
6 [@sd < 100M] {
7 stroke-width: 7;
8 label: [name];
9 label-anchor: 0.5 0.5;
10 font-fill: white;
11 font-family: Arial;
12 font-size: 14;
13 font-weight: bold;
14 }
15
16 [@sd > 100M] [@sd < 200M] {
17 stroke-width: 4;
18 }
19
20 [@sd > 200M] {
21 stroke-width: 1;
22 }
细节¶
在创建自然外观的地图时,通常需要在更高的缩放级别上使形状更大。此示例根据缩放级别更改线条的厚度。多边形本质上是二维的,但根据缩放级别调整多边形样式的另一种方法是调整笔划的厚度(随着地图的放大而变大),或者将标签限制为特定的缩放级别。这可以确保笔划和标签的大小和数量保持清晰,并且不会使多边形本身蒙上阴影。
缩放级别(或更准确地说,缩放分母)是指地图的比例。比例尺分母为10000表示地图的比例尺为1:10000,以地图投影的单位表示。
备注
确定要使用的适当比例分母(缩放级别)超出了本例的范围。
此样式包含三个规则,定义如下:
规则顺序 |
规则名称 |
比例分母 |
笔画宽度 |
标签显示? |
1 |
大 |
1:100000000或以下 |
7 |
是的 |
2 |
培养基 |
1:100000000至1:200000000 |
4 |
不 |
3 |
小的 |
大于1:200000000 |
2 |
不 |
第一条规则( lines 1-4 )定义与比例无关的属性:深蓝色填充、黑色轮廓。
第二个( lines 6-14 )规则为更高的缩放级别提供特定的覆盖,要求大的笔画(7像素)和标签,只有在该缩放级别才可见。标签为白色、粗体、Arial 14像素,其内容来自“名称”属性。
第三条规则( lines 16-18 )对于中等缩放级别,指定4像素的笔划宽度,而对于低缩放级别,最后一个规则将笔划宽度设置为1像素。( lines 20-22 )
生成的样式生成一个多边形笔划,当放大时该笔划会变大,只有放大到足够的级别时才会显示标签。