Брошюра (markerCluster + searchControl): как сделать паузу в кластере перед открытием всплывающего окна при поиске - PullRequest
1 голос
/ 26 апреля 2019

Я работаю над своим проектом листовки. Я использую поиск по Leaflet вместе с Leaflet-markerCluster. Некоторые из моих маркеров имеют одинаковые координаты. Все, если работает нормально, если маркер, который я ищу, не находится в кластере (я открываю всплывающее окно, когда маркер найден). Когда я ищу маркер, который находится в кластере, он не откроется, если кластер не был открыт раньше. Так что, если я прав, мне нужно открыть кластер, прежде чем открыть Popup. Но я не знаю, как это сделать :) Кто-нибудь может мне помочь с этим? Спасибо

Вот код маркераCluster и searchControl:


    var markers = L.markerClusterGroup({ maxClusterRadius: 30 });
    markers.addLayer(featuresLayer);
    mymap.addLayer(markers);

    var searchControl = new L.Control.Search({
    layer: L.featureGroup([markers]),
    propertyName: 'name',
    marker: false,
    });

    searchControl.on('search:locationfound', function(e) {
    if (e.layer._popup)
    e.layer.openPopup();

    }).on('search:collapsed', function(e) {
    featuresLayer.eachLayer(function(layer) {
    featuresLayer.resetStyle(layer);
    });
    });

    mymap.addControl(searchControl);

Ответы [ 2 ]

0 голосов
/ 01 мая 2019

Я не знаю, правильно ли я это использую, но я получаю сообщение об ошибке

Uncaught TypeError: Невозможно прочитать свойство '_zoom' из неопределенного

Это часть моего кода, где я использую ваш пример

searchControl.on('search:locationfound', function() {
    markers.zoomToShowLayer(markers, function (e) {
                        e.layer.openPopup();
                    });
}).on('search:collapsed', function(e) {
  featuresLayer.eachLayer(function(layer) {
    featuresLayer.resetStyle(layer);
  });
});
0 голосов
/ 30 апреля 2019

Вы пытались добавить метод zoomToShowLayer к слушателю?

markers.zoomToShowLayer(marker, function () {
                    marker.openPopup();
                });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...