检测地图“隐藏器”功能的时间

时间:2019-11-08 14:17:54

标签: javascript mapbox mapbox-gl-js

当地图“ reclusters” 时,我需要运行一些代码,请查看此GIF以了解我的意思。

有什么方法可以知道何时发生这种情况,还是有某种事件可以收听?

类似的东西:

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

我当前的解决方案是在以下位置运行我的代码:

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

通过在zoom事件上运行我的代码,我的代码在每次用户放大或缩小时都运行,尽管我只需要在地图聚类时运行它即可。有什么可以做的吗?预先感谢

1 个答案:

答案 0 :(得分:0)

设法找到一个解决方案,可能不是最好的,但是以下代码对我有用:(简体)

// 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)