Использование OpenPopup () с reastlet.js + кластеризация
-
10-12-2019 - |
Вопрос
Я использую фантастическую листочку библиотеки отображения OpenStreetMap.> Этот кластерирующий плагин .У меня все это работает нормально с текущим проектом, который загружает разные слои на карту и в наклейку на клику.
Единственная проблема заключается в том, что если я нажму на элемент боковой панели, и соответствующий маркер находится в кластеризации объекта, я получаю ошибку.У меня это об этом, проверив ошибку (используя TRY / CALL) и увеличить, поэтому слой виден, как показано ниже:
$('.item').click(function() {
currentlayer = this.id;
...
try {
geojson._layers[currentlayer].openPopup();
} catch(e) {
map.setView(geojson._layers[currentlayer]._latlng, 16);
geojson._layers[currentlayer].openPopup();
}
...
return false;
});
.
Единственная проблема заключается в том, что я получаю ту же ошибку при попытке запустить метод OpenPopup () после увеличения, хотя, если я снова нажимаю на боковую панель, всплывающее окно всплывающее окно.Вы можете увидеть его в действии здесь:
Решение
Да, у меня была такая же проблема с этим плагином.Поэтому я разработал свой собственный, что должно правильно расположить всплывающие окна.Я также строю в некоторых событиях, поэтому вы можете запустить какой-код, когда нажат кластер, или предотвратить изменение уровня масштабирования.
https://github.com/cavis/Leafpile
Кроме того, я работаю над аналогичным проектом для вашего - https://github.com/cavis/slideMapperЭто плагин jQuery для создания слайд-шоу, который следует на карте.Я работаю над интеграцией моего плагина листового распространения непосредственно в него.
Другие советы
Может быть, вам пришлось масштабировать кластерный слой с использованием zoomToShowLayer
:
https://github.com/leaftlet/leaftlet.cmarkerCluster/issues/75