使用映射框表达式获取功能id



我正在使用数据驱动的样式来为choropleth地图设计Mapbox矢量层的样式。然而,我需要使用来自单独对象(从数据库中提取(的统计数据,而不是严格从层属性中获取数据。这个单独的对象包含向量层中每个多边形的一个统计值。对象通过名为"GEOID"的变量将统计值映射到矢量层多边形。为了将多边形与其数据结合起来,我想使用Mapbox表达式从矢量层中的每个多边形中获得GEOID值,并将该id传递给一个单独的函数,以获得具有该GEOID的多边形的统计值。这可能吗?

vectorLayer: {
id: "fooLayer",
type: "fill",
"source-layer": "foo-layer-dvf1ci",
paint: {
"fill-color": [
"rgba",
100,100,100,
this.getStatForDistrict(["get", "GEOID"])]
]
}
},
getStatForDistrict(districtId) {
console.log("districtId: " + districtId);
let alphaValue = fetchDataForThisDistrictFromDatabase(districtId)
return alphaValue;
},

我看到,目前,我正在将["get","GEOID"]传递到函数getStatForDistrict中,而我实际需要的是传递计算的Mapbox表达式。

关于Mapbox GL油漆特性的更多信息:https://docs.mapbox.com/mapbox-gl-js/style-spec/layers/#paint-属性

关于Mapbox GL表达式语法的更多信息:https://docs.mapbox.com/mapbox-gl-js/style-spec/expressions/

不,没有任何方法可以从表达式中调用任意函数,这些函数会查找相关功能中不存在的数据。

制作合唱曲有几种方法。我建议你先看看mapbox choropleth库。

最新更新