我正在使用数据驱动的样式来为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;
},
[当我真正需要传递计算的Mapbox表达式时,我目前正在将[“ get”,“ GEOID”]传递给函数getStatForDistrict。
关于Mapbox-GL的绘画属性的更多信息:https://docs.mapbox.com/mapbox-gl-js/style-spec/layers/#paint-property
关于Mapbox-GL表达式语法的更多信息:https://docs.mapbox.com/mapbox-gl-js/style-spec/expressions/
不,没有任何方法可以从表达式内调用任意函数,因为这些函数会查找相关功能中不存在的数据。
有几种制作鹅卵石的方法。我建议您先查看mapbox-choropleth库。