Как использовать clusterProperties в mapbox-gl - PullRequest
0 голосов
/ 22 февраля 2019

Я построил карту mapbox-gl js (v0.52), в которой точки объединяются в кластеры;очень похоже на пример кластеров со страницы mapbox.

Цвет кластера должен быть функцией агрегации свойств отдельных точек: для простоты, скажем, каждая точка имеет свойство status, который определяет его цвет, а цвет кластера должен быть просто цветом, соответствующим max значений каждой из его точек status.

Пример данных геоджонса будет выглядеть так:

const geoData = {
  type: 'FeatureCollection',
  features: [
    {
      type: 'Feature',
      properties: {
        id: 'fakeid11',
        status: 20,
      },
      geometry: {
        type: 'Point',
        coordinates: [-151.5129, 63.1016, 0]
      }
    },
    {
      type: 'Feature',
      properties: {
        id: 'fakeid22',
        status: 10,
      },
      geometry: {
        type: 'Point',
        coordinates: [-150.4048, 63.1224, 105.5]
      }
    }
  ]
};

Я пытаюсь использовать clusterProperties для вычисления агрегации как , описанное в api docs , аналогично этому примеру из исходного кода , чтобы создать этот слой:

map.addSource('earthquakes', {
  type: 'geojson',
  data: geoData,
  cluster: true,
  clusterMaxZoom: 14, // Max zoom to cluster points on
  clusterRadius: 50, // Radius of each cluster when clustering points (defaults to 50)
  clusterProperties: {
    status: ['max', ['get', 'status']]
  }
});

Этот фрагмент в точности похож на пример кластеров со страницы mapbox, просто заменив данные моей статической копией из 2 элементов и добавив clusterProperties.

.ошибка проверки (немного искажена из минимизированной версии mapbox-gl):

Error: sources.earthquakes: unknown property "clusterProperties"
    at Object.Jr [as emitValidationErrors] (modules.js?hash=34588b9e7240c1a9b3fd2f8685e299d9dbbb40d9:504146)
    at De (modules.js?hash=34588b9e7240c1a9b3fd2f8685e299d9dbbb40d9:504150)
    at i._validate (modules.js?hash=34588b9e7240c1a9b3fd2f8685e299d9dbbb40d9:504150)

Что не так с этим clusterProperties использованием?Казалось бы, он просто отказывается проверять это свойство.Обратите внимание, что карта работает нормально (без агрегированного свойства status, конечно), если я прокомментирую последние 3 строки, которые ее установили.

1 Ответ

0 голосов
/ 07 марта 2019

Я нашел ответ несколько дней спустя: используемая нами версияact-map-gl зависела от mapbox-gl ~0.52.0, которая еще не поддерживала clusterProperties.Поддержка этих агрегированных свойств предоставляется в mapbox-gl 0.53.(А поскольку оболочка реагирования использует недокументированные функции mapbox-gl, они зависят от точных версий на уровне исправления).Это было подтверждено разработчиками библиотеки реагирования .

Теперь, когда реактив-карта-gl 4.0.14 выпущен и работает нормально с clusterProperties, используя внутренне mapbox-gl 0.53.0.

...