Листовка: загрузить файл GeoJSON и конкретное всплывающее окно

#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 Таким образом, при создании экземпляра слоя листовки (a L.Marker , L.Polyline или L.Polygon ) он сохранит функцию GeoJSON как свойство вновь созданного слоя layer.feature .
  • Хэш-часть document.location — это строка, которая всегда начинается с # . Вы должны очистить его заранее, уделяя особое внимание кодировке URL.

Комментарии:

1. @KirbyJames спасибо за ваш отзыв Ивану. Пожалуйста, обратите внимание, что лучший способ поблагодарить людей — это также принять ответ, который помог вам решить вашу проблему.