Làm cách nào để có được tính tương tác của Tờ rơi từ Geoserver WMS?


12

Tôi có máy chủ địa lý phục vụ shapefiles dưới dạng WMS thành Leaflet.

Tôi muốn thêm tính tương tác hiển thị cửa sổ bật lên với các thuộc tính WMS trong bản đồ Tờ rơi khi người dùng di chuyển qua hoặc nhấp vào tính năng WMS.

Tôi đã thấy tính tương tác của sáp / tờ rơi, nhưng điều đó có thể với WMS và Tờ rơi không?

Câu trả lời:


14

Bạn nên thử sử dụng WMS GetFeatureInfo. Dưới đây là một ví dụ với Tờ rơi có sẵn Bryan McBride. Sự kiện được sử dụng để kích hoạt yêu cầu GetFeatureInfo là onclick.


Bây giờ tôi đang làm việc để định dạng dữ liệu GetFeatureInfo với các mẫu Geoserver Freemarker. Bạn có suy nghĩ gì về tương tác di chuột / di chuột trên tờ rơi không?
zarbo

Như trong ví dụ, bạn nên thử thay đổi sự kiện được chuyển sang hàm onMapClick: dòng 41 »map.addEventListener ('click', onMapClick); Tôi nghĩ bạn nên xem trang tài liệu: leaflet.cloudADE.com/reference.html . Về các mẫu freemarker Geoserver tôi chưa bao giờ sử dụng nó, nhưng nó có ý nghĩa hơn đối với tôi khi đưa ra yêu cầu WFS GetFeature yêu cầu phản hồi được định dạng trong GeoJson thay vì WMS GetFeatureInfo. Với đối tượng GeoJson ở phía máy khách, việc xây dựng một đánh dấu HTML đơn giản để hiển thị dữ liệu tính năng dễ dàng hơn nhiều.
Pedro Mendes

Xin lỗi .. Không có cách nào để tạo GetFeature với Leaflet ..: / Mặc dù bạn có thể sử dụng lớp GeoJSON cho cùng một hiệu ứng (các thuộc tính của tính năng đã có thể truy cập được trên máy khách). Nhưng đó là tôi yêu OpenLayers =).
Pedro Mendes

Xin chào Zabro, bạn đã quản lý để làm việc này? tôi muốn thực hiện tương tự bạn có phiền khi chia sẻ một số đoạn mã không?
Patnesh Patel

4
@PedroMendes Liên kết đến ví dụ không may bị hỏng. Bạn có thể vui lòng cập nhật nó?
ustroetz

4

Tôi nhận được tính tương tác của Leaflet theo hai cách, tùy thuộc vào mức độ lớn của bộ dữ liệu. Tôi khuyên bạn nên chống lại WMS getFeatureInfo, bởi vì kiểu dáng là tất cả phía máy chủ được đặt, rất tẻ nhạt để cấu hình. Vì vậy, đây là hai cách của tôi:

  1. Nếu tập dữ liệu nhỏ, chỉ cần tải toàn bộ dưới dạng vectơ (thực hiện yêu cầu dưới dạng JSONP hoặc JSON nếu bạn đã bật CORS). Ví dụ: https://maps.gcc.tas.gov.au/dogexerciseareas.html và mã: https://github.com/gccgisteam/maps-website/blob/master/dogexerciseareas.html
  2. Nếu tập dữ liệu lớn, hãy thực hiện yêu cầu onClick và trả về vectơ cho các tính năng gần (sử dụng JSON hoặc JSONP). Ví dụ: https://maps.gcc.tas.gov.au/stormwater.html và mã: https://github.com/gccgisteam/maps-website/blob/master/stormwater.html

(Ví dụ nước mưa đó phức tạp hơn một chút so với thực tế vì tôi thay đổi liệu một lớp có tương tác hay không khi các lớp được bật và tắt ...)


Lưu ý rằng WMS GetFeatureInfo có thể trả về JSON ngay bây giờ.
Alex Leith

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.