如何在嵌套属性上使用mapbox“case”表达式?

pre*_*tch 4 mapbox mapbox-gl mapbox-gl-js

如何使用嵌套值来使用 case == 运算符?就像是:

this.map.setPaintProperty("somelayer", "fill-color",
        ["case",
          ["==", ["properties:some_prop"], someval],
          "#34c0dd",
          "#499bbc"]
Run Code Online (Sandbox Code Playgroud)

其中属性是字典:

properties = {
some_prop: 1,
some_prop2: 2,
// and so on
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试过["properties.some_prop"],["properties"]["some_prop"]但效果并不好。

以及如何打印 mapbox 查询(例如 console.log 或其他内容)?

Ste*_*ett 7

如果properties只是propertiesGeoJSON 对象上的常规字段,那么您就不必明确提及它 - 所有这些字段都只是直接访问:

this.map.setPaintProperty("somelayer", "fill-color",
    ["case",
        ["==",  ["get", "some_prop"], someval], "#34c0dd",
         "#499bbc"
    ]);
Run Code Online (Sandbox Code Playgroud)

假设#499bbc是您想要的默认颜色。