使用映射框表达式获取要素ID

问题描述 投票:0回答:1

我正在使用数据驱动的样式来为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/

expression mapbox mapbox-gl
1个回答
0
投票

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

有几种制作鹅卵石的方法。我建议您先查看mapbox-choropleth库。

© www.soinside.com 2019 - 2024. All rights reserved.