Определите, когда карта 'reclusters' функции - PullRequest
0 голосов
/ 08 ноября 2019

Мне нужно запустить какой-нибудь код, когда карта "reclusters" , посмотрите это GIF , чтобы понять, что я имею в виду.

Есть ли способ узнать, когда этоили что-то вроде события для прослушивания?

Что-то вроде:

map.on('cluster', function() {
   //code here
})

Мое текущее решение - запустить мой код:

map.on('zoom', () => {
    //my code
})

При запуске моего кода для события zoom мой код запускается каждый раз, когда пользователь увеличивает или уменьшает масштаб, хотя мне просто нужно, чтобы он запускался при кластеризации карты. Есть ли что-то, что можно сделать здесь? Заранее спасибо

1 Ответ

0 голосов
/ 08 ноября 2019

Удалось найти решение, возможно, не лучшее, но у меня работает следующий код: (упрощенно)

// to keep track of the amount of clusters rendered
var previousClusterCount = 0

function foo() {
  //get all currently rendered clusters
  clusters = map.querySourceFeatures('your-cluster-layer')

  // if the amount of rendered clusters is different from the previous cluster count
  // then it means that the user has zoomed enough to trigger a "reclustering"
  // as shown in the GIF above
  if (clusters.length !== previousClusterCount) {
    //update cluster count
    previousClusterCount = clusters.length
    //run some code
  }
}

// set callback on zoom
map.on('zoom', foo)
...