Использование выражения mapbox для получения идентификатора объекта - PullRequest
0 голосов
/ 01 мая 2020

Я использую стиль, управляемый данными, для стилизации векторного слоя Mapbox для картограммы. Однако вместо того, чтобы получать данные строго из свойств слоя, мне нужно использовать данные statisti c из отдельного объекта (взятого из нашей базы данных). Этот отдельный объект содержит одно значение statisti c для каждого многоугольника в векторном слое. Объект отображает значения статистики в полигоны векторного слоя с помощью переменной «GEOID». Чтобы объединить полигон с его данными, я хотел бы использовать выражение Mapbox, чтобы получить значение GEOID от каждого полигона в векторном слое и передать этот идентификатор отдельной функции, чтобы получить значение statisti c для полигона, имеющего этот геоид. Возможно ли это?

 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 -property

Подробнее о синтаксисе выражений Mapbox-GL: https://docs.mapbox.com/mapbox-gl-js/style-spec/expressions/

1 Ответ

0 голосов
/ 01 мая 2020

Нет, нет никакого способа вызвать произвольные функции из выражений, которые ищут данные, которые не существуют в рассматриваемой функции.

Есть несколько способов сделать хороплеты. Я бы посоветовал вам начать с просмотра библиотеки mapbox-choropleth .

...