是否可以根据文本属性而不是数值
设置填充颜色停止例如根据省名
填写我的输入数据集有一个名为PROV_ID的属性/列,每个州/省包含一个2个字母的ID
所以我的目标是:'停止':[['GP','YELLOW']]
然而,当执行如下所示的代码时,代码不会呈现任何填充颜色,我已经在下面的代码中替换了我的PROV_ID,并使用主键属性[numeric]进行测试,并且工作正常
我想问题是,如果填充颜色停止仅限于数字属性吗?
map.addLayer({
'id': 'countiesLayer',
'type': 'fill', /*define the type of layer fill, line, point, fill-extrusion, background, raster, circle*/
'source': 'mySrcName',
'source-layer': '3_Fields-83vr21',
'layout': {
'visibility': 'visible'
},
/*there are many options for styling - this is a simple style*/
'paint': {
'fill-color': {
'property': 'PROV_ID',
'stops': [['GP', 'YELLOW']]
},
'fill-outline-color': 'white'
}
});
答案 0 :(得分:1)
我认为你需要一个带有match函数的表达式。
代码将(未经测试):
map.addLayer({
'id': 'countiesLayer',
'type': 'fill', /*define the type of layer fill, line, point, fill-extrusion, background, raster, circle*/
'source': 'mySrcName',
'source-layer': '3_Fields-83vr21',
'layout': {
'visibility': 'visible'
},
/*there are many options for styling - this is a simple style*/
'paint': {
'fill-color': ['match', ['get', 'PROV_ID'], // get the property
'GP', 'yellow', // if 'GP' then yellow
'XX', 'black', // if 'XX' then black
'white'] // white otherwise
},
'fill-outline-color': 'white'
}
});
来自文档:
匹配
选择标签值与输入值匹配的输出,或 如果找不到匹配项,则返回值。输入可以是任何字符串 或数字表达式(例如[" get"," building_type"])。每个标签都可以 要么是单个文字值,要么是值数组。
["match", input: InputType (number or string), label_1: InputType | [InputType, InputType, ...], output_1: OutputType, label_n: InputType | [InputType, InputType, ...], output_n: OutputType, ..., default: OutputType ]: OutputType