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);
Ответ 2
L.Map = L.Map.extend({
openPopup: function(popup) {
// this.closePopup();
this._popup = popup;
return this.addLayer(popup).fire('popupopen', {
popup: this._popup
});
}
});
пример: http://jsfiddle.net/paulovieira/yVLJf/
нашел его здесь: https://groups.google.com/forum/#!msg/leaflet-js/qXVBcD3juL4/4pZXHTv1baIJ
Ответ 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;
});