首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mapbox GL JS中的复合属性函数

Mapbox GL JS中的复合属性函数
EN

Stack Overflow用户
提问于 2017-03-16 00:14:48
回答 1查看 329关注 0票数 1

有没有办法在Mapbox GL JS的一个属性函数中使用多个属性?在CartoCSS中,我将执行类似以下操作:

代码语言:javascript
复制
.states {
    [name="California"] {
       "polygon-fill": "blue"
    },
    [name_abbrev="WA"] {
       "polygon-fill": "green"
    }
}

在Mapbox GL JS中,我似乎可以根据属性name -或- name_abbrev设置fill-color的样式,但不能将这两个属性的组合设置为样式。例如:

代码语言:javascript
复制
'fill-color': {
    'property': 'name',
    'type': 'categorical',
    'stops': [
       ['California', 'blue']
    ]
},
'fill-color': {
    'property': 'name_abbrev',
    'type': 'categorical',
    'stops': [
       ['WA', 'green']
    ]
}

这将导致第二个fill-color覆盖第一个,加利福尼亚州将简单地为绿色。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-16 02:09:11

Mapbox GL不支持基于一个图层中的多个特性设置样式。如果您的推理是并非所有要素都具有某个图层/某些要素需要使用回退属性,则可以重新处理数据以将您想要设置样式的属性合并到一个图层中,或者您可以创建两个图层并使用过滤器来分隔要素:

代码语言:javascript
复制
{
    ... layer metadata (id, source, source-layer, type, etc) ...
    'filter': ['has', 'name'],
    'paint': {
        'fill-color': {
            'property': 'name',
            'type': 'categorical',
            'stops': [
                ['California', 'blue']
            ]
        }
    }
},
{
    ... layer metadata (id, source, source-layer, type, etc) ...
    'filter': ['!has', 'name'],
    'paint': {
        'fill-color': {
            'property': 'name_abbrev',
            'type': 'categorical',
            'stops': [
                ['WA', 'green']
            ]
        }
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42815226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档