使用CSS进行地图配色,能够实现与SLD语言相通的效果,具体样式定义规则参考CSS
语法,是在花括号内的键值对来实现{ name: value }
,支持CSS嵌套
,内层级别高于外层。
-
在新建CSS样式的页面,选择“生成默认样式”,可以生成
默认样式
通CSS选择器来匹配地图要素
-
*
代表所有要素都使用该样式
/* 所有要素都会匹配以下样式 */
* {
stroke: #000000;
stroke-width: 0.5;
fill: #0099cc;
}
属性表过滤
- 使用CQL语法进行图层属性过滤,作为CSS选择器进行要素匹配,过滤器可以任意组合。
/* 筛选人口小于2百万的要素 */
[PERSONS < 2000000] {
fill: #4DFF4D;
fill-opacity: 0.7;
}
- 多个过滤条件组合的时候,空格
表示
AND
,逗号,
表示OR
,AND
的优先级要高于OR
/* */
restricted [cat='2' or cat='3'] [dog > 0] {
fill: #EE0000;
}
可用的操作符有 =
、 >=
、 <
、 <=
、 <>
、 LIKE
数据源过滤
- 当有多个图层数据源的时候,直接通过图层名就可以选择该图层,对其所有要素应用样式
/*图层名字是states的要素 */
states{
stroke: black;
}
ID过滤
- 可以通过
#
来选择图层中指定ID
的要素(ID
可以参考shp数据中FID
字段)
/* states图层中,ID为2的要素 */
#states.2 {
stroke: black;
}
符号过滤器
选择样式中的符号,来对符号进行渲染。支持以下方式
:mark 指定规则适用于用作点标记的符号
:shield 指定规则适用于用作标签屏蔽的符号(标签文本后面显示的图标)
:stroke 指定规则适用于用作笔触模式的符号
:fill 指定规则适用于用作填充模式的符号
:symbol 指定规则适用于任何符号,无论其使用的是哪个上下文
:nth-mark(n) 指定规则适用于要素上第n个堆叠点标记所使用的符号。
:nth-shield(n) 指定规则适用于用于要素上第n个堆叠标签背景的符号
:nth-stroke(n) 指定规则适用于要素上第n个堆叠笔触图案的符号。
:nth-fill(n) 指定规则适用于要素上第n个堆叠填充图案的符号。
:nth-symbol(n) 指定规则适用于要素上第n个堆叠符号所使用的符号,无论其使用的是哪个上下文。
/* 构建一个医院的图标 */
[usage='hospital'] {
mark: symbol('circle'), symbol('cross');
:nth-mark(1) {
size: 16px;
fill: white;
stroke: red;
};
:nth-mark(2) {
size: 12px;
fill: red;
}
}
比例尺过滤
结合其他条件,使用@sd
来对当前分辨率下的要素进行过滤渲染
/* Residential类型的道路在大于100K的比例尺是,线条颜色是黑色 */
[roadtype = 'Residential'] [@sd > 100k] {
stroke: black;
}
网友评论