Leaflet.js: Откройте все всплывающие пузыри при загрузке страницы

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

http://leaflet.cloudmade.com/reference.html#popup

загадочно говорит:

"Использовать Map # openPopup для открытия всплывающих окон, одновременно проверяя, что открыто только одно всплывающее окно (рекомендуется для удобства использования) или используйте Map # addLayer, чтобы открыть столько, сколько хотите".

но

http://leaflet.cloudmade.com/reference.html#map-addlayer

не дает никаких указаний о том, как это может быть достигнуто.

Может ли кто-нибудь уточнить, возможно ли это, и дать какие-либо подсказки о том, как это сделать?

Ответ 1

Вы должны добавить всплывающие окна как Layer. Попробуйте этот пример кода:

var popupLocation1 = new L.LatLng(51.5, -0.09);
var popupLocation2 = new L.LatLng(51.51, -0.08);

var popupContent1 = '<p>Hello world!<br />This is a nice popup.</p>',
popup1 = new L.Popup();

popup1.setLatLng(popupLocation1);
popup1.setContent(popupContent1);

var popupContent2 = '<p>Hello world!<br />This is a nice popup.</p>',
popup2 = new L.Popup();

popup2.setLatLng(popupLocation2);
popup2.setContent(popupContent2);

map.addLayer(popup1).addLayer(popup2);

Ответ 3

marker.addTo(myMap).bindPopup('Hello popup', {autoClose:false}).openPopup();

используйте опцию autoClose

Ответ 4

В последней версии есть опция autoClose.

Чтобы одновременно открыть как маркер, так и всплывающее окно, без явного добавления слоев:

var popup1 = new L.Popup({'autoClose':false});
popup1.setLatLng([53.55375, 9.96871]);
popup1.setContent('First popup');

var popup2 = new L.Popup({'autoClose':false});
popup2.setLatLng([53.552046, 9.9132]);
popup2.setContent('Second popup');

L.marker([53.55375, 9.96871]).addTo(myMap)
    .bindPopup(popup1).openPopup();

L.marker([53.552046, 9.9132]).addTo(myMap)
    .bindPopup(popup2).openPopup();

Ответ 5

очень хорошо................. tnk !!!!!!

Ответ 6

triky solution - удалить всплывающее сообщение из объекта карты при открытии:

map.on('popupopen', function (e) {
    delete map._popup;
});