Як отримати інтерактивність листівки від Geoserver WMS?


12

У мене є геосервер, який подає форму файлів як WMS в Leaflet.

Я хотів би додати інтерактивність, яка показує спливаюче вікно з атрибутами WMS на карті Leaflet, коли користувач наводить курсор миші або натискає функцію WMS.

Я бачив інтерактивність воску / листівки, але чи можливо це за допомогою WMS та Leaflet?

Відповіді:


14

Спробуйте скористатися WMS GetFeatureInfo. Ось приклад з Leaflet, який став доступним Брайаном Макбрайдом. Подія, яка використовується для запуску запиту GetFeatureInfo, - onclick.


Зараз я працюю над форматуванням даних GetFeatureInfo за допомогою шаблонів Geoserver Freemarker. Будь-які думки про взаємодію Leaflet та наведення миші?
зарбо

Як показано в прикладі, вам слід спробувати змінити подію, передану на функцію onMapClick: рядок 41 »map.addEventListener ('клік', onMapClick); Я думаю, ви повинні подивитися на сторінку документації: leaflet.cloudmade.com/reference.html . Що стосується шаблонів фрімаркерів Geoserver, я ніколи не використовував його, але для мене є більш сенс зробити запит WFS GetFeature з проханням відформатувати відповідь у GeoJson замість WMS GetFeatureInfo. З цим об’єктом GeoJson на стороні клієнта набагато простіше побудувати просту розмітку HTML для відображення даних про функції.
Педро Мендес

Вибачте .. Немає можливості зробити GetFeature з Leaflet ..: / Навіть якщо ви могли використовувати шар GeoJSON для того ж ефекту (атрибути функції вже доступні клієнту). Але це я люблю OpenLayers =).
Педро Мендес

Привіт Забро, чи вдалося вам це налагодити? Я хочу реалізувати те саме. Ви б не хотіли поділитися деякими фрагментами коду?
Прагнеш Патель

4
@PedroMendes Посилання на приклад, на жаль, порушено. Чи можете ви оновити його?
ustroetz

4

Я отримую інтерактивність Leaflet двома способами, залежно від того, наскільки великий набір даних. Я б рекомендував проти WMS getFeatureInfo, тому що для стилів все налаштовано сервер, який нудно налаштовувати. Отже, ось два мої способи:

  1. Якщо набір даних невеликий, просто завантажте все як вектор (виконайте запит як JSONP або JSON, якщо у вас включений CORS). Наприклад: https://maps.gcc.tas.gov.au/dogexerciseareas.html та код: https://github.com/gccgisteam/maps-website/blob/master/dogexerciseareas.html
  2. Якщо набір даних великий, виконайте запит onClick та поверніть вектори для близьких функцій (використовуючи JSON або JSONP). Приклад: https://maps.gcc.tas.gov.au/stormwater.html та код: https://github.com/gccgisteam/maps-website/blob/master/stormwater.html

(Цей приклад зливової води трохи складніший, ніж це насправді потрібно, тому що я змінюю, чи є шар інтерактивним, коли шари включаються та вимикаються ...)


Зауважте, що WMS GetFeatureInfo може повернути JSON зараз.
Алекс Лейт

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.