Geoserver WMS에서 Leaflet 대화 형 기능을 얻는 방법은 무엇입니까?


12

리프 파일에 WMS로 shapefile을 제공하는 지오 서버가 있습니다.

사용자가 WMS 기능 위로 마우스를 가져 가거나 클릭 할 때 Leaflet 맵에 WMS 속성이 포함 된 팝업을 표시하는 상호 작용을 추가하고 싶습니다.

왁스 / 리플릿 상호 작용을 보았지만 WMS 및 리플릿에서 가능합니까?

답변:


14

WMS GetFeatureInfo를 사용해보십시오. Bryan McBride를 사용할 수 있는 Leaflet의 예는 다음과 같습니다 . GetFeatureInfo 요청을 트리거하는 데 사용되는 이벤트는 onclick입니다.


이제 Geoserver Freemarker 템플릿으로 GetFeatureInfo 데이터의 형식을 지정하고 있습니다. 리플릿 호버 / 마우스 오버 상호 작용에 대한 의견이 있으십니까?
zarbo

예제에 표시된 것처럼 onMapClick 함수에 전달 된 이벤트를 변경해야합니다. line 41»map.addEventListener ( 'click', onMapClick); 나는 당신이 문서 페이지 leaflet.cloudmade.com/reference.html을 살펴 봐야한다고 생각합니다 . 지오 서버 프리 마커 템플릿에 대해서는 사용하지 않았지만 WMS GetFeatureInfo 대신 GeoJson에서 응답 형식을 요청하는 WFS GetFeature 요청을 작성하는 것이 더 합리적입니다. 클라이언트 측의 GeoJson 객체를 사용하면 기능 데이터를 표시하는 간단한 HTML 마크 업을 훨씬 쉽게 작성할 수 있습니다.
Pedro Mendes

죄송합니다 .. Leaflet로 GetFeature를 만들 수있는 방법은 없습니다. 그러나 그것은 OpenLayers =)를 좋아합니다.
Pedro Mendes

안녕 Zabro, 당신은이 작업을 관리 했습니까? 나는 같은 것을 구현하고 싶다. 코드 스 니펫을 공유 하시겠습니까?
Pragnesh Patel

4
@PedroMendes 불행히도 예제 링크가 끊어졌습니다. 업데이트 해 주시겠습니까?
ustroetz

4

데이터 집합의 크기에 따라 두 가지 방식으로 Leaflet 대화 형 기능이 제공됩니다. 스타일링이 모두 서버 측으로 설정되어 구성하기가 지루하므로 WMS getFeatureInfo를 사용하지 않는 것이 좋습니다. 여기 두 가지 방법이 있습니다.

  1. 데이터 세트가 작은 경우 전체 항목을 벡터로로드하십시오 (CORS가 활성화 된 경우 요청을 JSONP 또는 JSON으로 수행). 예 : 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을 반환 할 수 있습니다.
Alex Leith

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.