Leaflet + prunecluster: получить список кластеров, которые показаны на карте - PullRequest
0 голосов
/ 04 марта 2019

Я работаю над листовой картой, где многие маркеры отображаются с помощью prunecluster, и мне нужно получить список кластеров, которые в данный момент отображаются на карте.

Я инициализировал кластеры с

var pruneCluster = new PruneClusterForLeaflet(150, 70);

Единственный массив кластера, который я вижу в инструментах разработчика и в коде, это pruneCluster.Cluster._clusters.На самом деле это в основном точное представление кластеров, показанных на карте, но иногда длина этого массива отличается от количества кластеров, отображаемых на карте.То есть этот массив не соответствует ситуации, которая у меня есть на карте.

Какой массив я должен использовать?

1 Ответ

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

То, что pruneCluster.Cluster._clusters содержит все рассчитанные им кластеры, но поскольку вы можете перемещать и масштабировать карту, видимые кластеры могут быть ее подмножеством.

Вы можете перебирать кластеры и проверять, если онивидныНапример:

// Get the bounds of the map visible in the browser
// 'map' is your Leaflet map
var boundsOfView = map.getBounds();

// Iterate all prune clusters
var allClusters = pruneCluster.Cluster._clusters;
var clustersInView = [], clusterBounds;
for (var i = 0; i < allClusters.length; i += 1) {
    clusterBounds = allClusters[i].bounds;
    // Is this cluster visible? (within the visible bounds?)
    if (boundsOfView.intersects([[clusterBounds.minLat, clusterBounds.minLng], [clusterBounds.maxLat, clusterBounds.maxLng]])) {
        // Yes, visible, so store it
        clustersInView.push(allClusters[i]);
    }
}

// Now you have all your visible clusters in 'clustersInView'

Используются следующие методы Leaflet:

  • getBounds(), чтобы получить границы видимой части карты
  • intersects() для проверки, пересекают ли границы кластера границы карты, т.е. видимые или нет

И PruneCluster:

  • bounds (строка 83 в исходном коде), которая содержит минимальные / максимальные координаты кластера

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...