Есть ли способ вернуть список всех маркеров, которые в данный момент не входят в кластерную группу?

В настоящее время я работаю над проектом, используя angular-leaflet-directive + плагин leaflet markercluster.

Что я хочу сделать, так это то, что при определенном событии (например, +/- уровень масштабирования или при изменении групп кластеров) я хотел бы запустить функцию, которая возвращает все маркеры, которые в настоящее время не кластеризованы.

Причина этого в том, что я хотел бы, чтобы все видимые маркеры имели круговой путь вокруг него (20 морских миль, но это на самом деле не важно).

Кто-нибудь знает, возможно ли это?

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

Ваше здоровье!


person dsifford    schedule 26.09.2015    source источник


Ответы (2)


После создания markerClusterGroup вы можете сделать что-то вроде этого:

// Let's assume you have a global map variable that refers to the Leaflet Map
MyClusterGroup.eachLayer(function(feature) {
    // the cluster group holds all the features
    // but only the ones not clustered are added to the map
    if (map.hasLayer(feature)) {
        feature.setStyle({ // Only feature not clustered will have their style re-render
            fillColor : "red"
        });
        // Do whatever your want with this feature, you have full access to it
    }
});

Это может быть не лучший вариант с точки зрения производительности, но я думаю, что это подойдет для вашего случая. В противном случае вы должны проникнуть в код подключаемого модуля маркера и изменить/расширить его непосредственно в соответствии с вашими потребностями.

person Stranded Kid    schedule 05.10.2015

Вопрос старый, но у меня была такая же проблема.

Мое решение состояло в том, чтобы перебрать мои маркеры и проверить, находятся ли они в границах. Карта атрибутов маркера имеет значение null, если она сгруппирована.

var bounds = map.getBounds();
for (var i = 0; i < markers.length; i++) {
    if(typeof markers[i] !== "undefined"){
    if( bounds.contains(markers[i].getPosition()) && markers[i].map !== null){
        console.log(markers[i])
    }
    }
}
person Gerald    schedule 05.11.2019