¿Cómo obtener la interactividad del folleto de Geoserver WMS?

12

Tengo geoservidor que sirve archivos shape como WMS en el folleto.

Me gustaría agregar interatividad que muestre una ventana emergente con atributos WMS en el mapa de folleto cuando el usuario se desplaza o hace clic en una función WMS.

He visto la interactividad de cera / folleto, pero ¿es eso posible con WMS y Leaflet?

zarbo
fuente

Respuestas:

14

Debería intentar usar WMS GetFeatureInfo. Aquí hay un ejemplo con el folleto de Bryan McBride disponible. El evento utilizado para activar la solicitud GetFeatureInfo es onclick.

Pedro Mendes
fuente
Ahora estoy trabajando en formatear los datos de GetFeatureInfo con las plantillas Geoserver Freemarker. ¿Alguna idea sobre una interacción de desplazamiento / desplazamiento del prospecto?
zarbo
Como se muestra en el ejemplo, debe intentar cambiar el evento pasado a la función onMapClick: línea 41 »map.addEventListener ('click', onMapClick); Creo que deberías echar un vistazo a la página de documentación: leaflet.cloudmade.com/reference.html . Con respecto a las plantillas de marcador gratuito de Geoserver, nunca lo usé, pero tiene más sentido para mí hacer una solicitud WFS GetFeature pidiendo que la respuesta se formatee en GeoJson en lugar de WMS GetFeatureInfo. Con ese objeto GeoJson en el lado del cliente, es mucho más fácil construir un marcado HTML simple para mostrar los datos de las características.
Pedro Mendes
Lo sentimos ... No hay forma de hacer una GetFeature con Leaflet ...: / Aunque podría usar la capa GeoJSON para el mismo efecto (los atributos de la característica ya están accesibles en el cliente). Pero eso es lo que amo OpenLayers =).
Pedro Mendes
Hola Zabro, ¿lograste que esto funcionara? Quiero implementar lo mismo. ¿te importaría compartir algunos fragmentos de código?
Pragnesh Patel
44
@PedroMendes Desafortunadamente, el enlace al ejemplo está roto. ¿Podrías actualizarlo?
ustroetz
4

Obtengo la interactividad del folleto de dos maneras, dependiendo de qué tan grande sea el conjunto de datos. Recomendaría contra WMS getFeatureInfo, porque el estilo está configurado en el lado del servidor, lo cual es tedioso de configurar. Entonces, aquí están mis dos maneras:

  1. Si el conjunto de datos es pequeño, simplemente cargue todo como un vector (haga la solicitud como JSONP o JSON si tiene CORS habilitado). Por ejemplo: https://maps.gcc.tas.gov.au/dogexerciseareas.html y código: https://github.com/gccgisteam/maps-website/blob/master/dogexerciseareas.html
  2. Si el conjunto de datos es grande, haga una solicitud onClick y devuelva vectores para características cercanas (usando JSON o JSONP). Ejemplo: https://maps.gcc.tas.gov.au/stormwater.html y código: https://github.com/gccgisteam/maps-website/blob/master/stormwater.html

(Ese ejemplo de aguas pluviales es un poco más complejo de lo que realmente necesita ser porque cambio si una capa es interactiva cuando las capas se activan y desactivan ...)

Alex Leith
fuente
Tenga en cuenta que WMS GetFeatureInfo puede devolver JSON ahora.
Alex Leith