#javascript #url #popup #leaflet
#javascript #url #всплывающее окно #листовка
Вопрос:
В руководствах по листовке (http://leafletjs.com/examples/geojson /) они показывают, как связать маркер или объект с всплывающим окном, которое может содержать HTML-код.
Я хотел бы, чтобы пользователь мог указать конкретное всплывающее окно для загрузки с использованием URL. В руководстве по листовке URL http://leafletjs.com/examples/geojson/example.html загружает карту и объекты, но ни одно из всплывающих окон не появляется до тех пор, пока пользователь не нажмет на объект.
Есть ли способ связать URL-адрес (скажем) http://leafletjs.com/examples/geojson/example.html#Coors@Field с определенной функцией, чтобы она отображалась автоматически, когда пользователь указывает URL-адрес?
Ответ №1:
Немного сложно интерпретировать, что именно вы спрашиваете, но мне кажется, что вы хотите автоматически открывать всплывающее окно, когда хэш-часть местоположения текущего документа соответствует некоторому свойству географического объекта.
Итак, создайте свои слои, затем просмотрите функции вашего GeoJSON
использования L.GeoJSON.eachLayer()
, проверяя, соответствует ли имя хэшу:
var group = L.geoJSON(geojson, {...}).addTo(map);
group.eachLayer(function(layer) {
if ('#' layer.feature.properties.name === document.location.hash) {
layer.openPopup();
}
});
Несколько вещей, которые следует иметь в виду:
- Сохраните ссылку на экземпляр
L.GeoJSON
, чтобы вы могли управлять им (вызывать егоeachLayer()
метод). L.GeoJSON
Таким образом, при создании экземпляра слоя листовки (aL.Marker
,L.Polyline
илиL.Polygon
) он сохранит функцию GeoJSON как свойство вновь созданного слояlayer.feature
.- Хэш-часть
document.location
— это строка, которая всегда начинается с#
. Вы должны очистить его заранее, уделяя особое внимание кодировке URL.
Комментарии:
1. @KirbyJames спасибо за ваш отзыв Ивану. Пожалуйста, обратите внимание, что лучший способ поблагодарить людей — это также принять ответ, который помог вам решить вашу проблему.