Mapbox GLJS如何过滤属性数组中含指定字符串的要素?
过滤包含指定字符串的数组属性要素
你用的['in', 'propertyArray', 'myString']逻辑不对,in操作符通常用来判断单个属性值是否存在于给定的集合/列表中,而非判断属性数组是否包含某个元素。针对属性是数组的场景,需根据使用的GIS平台选择对应实现方式:
不同平台的解决方法
ArcGIS 环境(ArcGIS JS API、REST API等):使用
array_contains函数直接检查数组是否包含目标字符串,语法如下:array_contains(propertyArray, 'myString')OpenLayers 环境:在样式过滤中可直接用函数式逻辑,结合JS数组的
includes方法:new ol.style.Style({ filter: function(feature) { const arr = feature.get('propertyArray'); return arr && arr.includes('myString'); } })OGC Filter 标准:部分支持
arrayContains函数,XML格式示例:<ogc:Function name="arrayContains"> <ogc:PropertyName>propertyArray</ogc:PropertyName> <ogc:Literal>myString</ogc:Literal> </ogc:Function>
原表达式失效原因
你写的['in', 'propertyArray', 'myString']是让引擎判断propertyArray的属性值是否等于'myString'且属于某个集合,完全偏离了“数组包含指定字符串”的需求逻辑,因此无法生效。
内容的提问来源于stack exchange,提问作者David Ndckr
相关产品推荐
相关产品推荐

