Leaflet - openPopup () не отображается с geoJSON - PullRequest
1 голос
/ 09 января 2020

Я пытаюсь привязать всплывающие окна к маркерам слоя geo JSON. Для этого я использую функцию onEachFeature:

var onEachFeature = function(feature, layer) {
                    layer.bindPopup("hello",
                                   {closeButton:false,
                                    autoClose: false,
                                    closeOnClick: false,
                                    className: "popup-custom"}).openPopup();
}

Это не приводит к отображению всплывающего окна. Всплывающее окно создано, но мне нужно нажать на маркер, чтобы отобразить его. Чего мне не хватает, чтобы сделать всплывающее окно видимым, не нажимая на маркер?

Я не использую функцию pointToLayer, потому что я также фильтрую объекты с помощью функции фильтра и использую запрос для настройки всплывающих окон и маркеров ( привязка всплывающего окна фактически находится в функции обратного вызова).

Ответы [ 2 ]

0 голосов
/ 09 января 2020

Спасибо @ Falke-Design, я заставил его работать. Я пробовал это, но это не сработало:

var geojsonLayer = L.geoJSON(data, {
    onEachFeature : onEachFeature 
});

geojsonLayer.eachLayer(function(layer){
    layer.openPopup();
});

geojsonLayer.addTo(map);

Не могли бы вы объяснить, почему это не сработало?

0 голосов
/ 09 января 2020

В результате вы получите слой геоджона, а затем сможете открыть всплывающее окно для каждого слоя:

var geojsonLayer = L.geoJSON(data, {
    onEachFeature : onEachFeature 
}).addTo(map);

geojsonLayer.eachLayer(function(layer){
    layer.openPopup();
});
...