Mặc dù tôi đã sử dụng Leaflet trong ứng dụng webGIS của mình, OpenLayers có nhiều lợi thế hơn so với Leaflet. Ví dụ: nếu bạn muốn sử dụng ứng dụng của mình trong thiết bị di động, OpenLayers là điều bắt buộc trong thời điểm hiện tại.
Có rất nhiều tài nguyên liên quan đến OpenLayers, tuy nhiên tôi nghĩ việc phát triển ứng dụng với Leaflet dễ hơn OpenLayers (đọc mã và hiểu cấu trúc dễ dàng hơn). Nếu bạn có giới hạn thời gian và có một chút kinh nghiệm với Javascript, sử dụng Leaflet có thể là một giải pháp tốt hơn để hoàn thành công việc nhanh hơn. Hoặc nếu bạn muốn phát triển một ứng dụng rất đơn giản, lúc đầu, Leaflet có thể dễ dàng thích nghi hơn nhiều.
Nhưng sau khi tôi phát triển một ứng dụng với Leaflet, bây giờ tôi nói rằng tôi ước mình đã sử dụng OpenLayers ngay từ đầu. Bởi vì khi ứng dụng của bạn trở nên phức tạp (như gọi các lớp phức tạp từ cơ sở dữ liệu, phát triển ứng dụng di động mạnh mẽ, v.v.), Leaflet bắt đầu hạn chế khả năng của bạn. Vì vậy, tôi nghĩ rằng dành thêm một chút thời gian để hiểu và tìm hiểu cấu trúc OpenLayers ở giai đoạn học tập cuối cùng sẽ có giá trị.
Như các chi tiết dự án xem xét;
Sử dụng giao diện bản đồ để tìm nạp Thông tin tính năng:
Cả Leaflet và OpenLayers hoàn toàn có thể làm điều đó. Vấn đề ở đây là lấy tọa độ của sự kiện nhấp và gửi yêu cầu đến máy chủ. Liên kết yêu cầu sẽ giống nhau cho cả hai ứng dụng.
Tạo một công cụ tùy chỉnh lấy lat / lon từ người dùng đến nơi anh / cô ấy nhấp vào bản đồ và sau đó tìm nạp Dữ liệu khí hậu từ raster (được xử lý bởi tập lệnh py trên máy chủ):
Tôi đã đạt được điều đó trong tờ rơi (Tôi cũng đang gọi dữ liệu khí hậu). Tôi đã không tìm nạp dữ liệu raster từ máy chủ nhưng vấn đề ở đây là tạo liên kết yêu cầu, dễ dàng cho cả hai ứng dụng. Tuy nhiên, nếu bạn muốn chọn một đa giác ở giai đoạn này, sẽ hơi khó khăn cho Leaflet để đạt được.
Cho phép người dùng tải lên excel, được gửi đến tập lệnh py, trả về GeoJSON, tạo ra các Tính năng Vector trên bản đồ:
Xấp xỉ cùng một dòng công việc cho cả Leaflet và OpenLayers. Tôi không thể nói cái nào tốt hơn.
Cho phép người dùng tạo đa giác vector, sẽ tìm nạp các Tính năng mà nó giao nhau từ Lớp WFS:
Tôi không biết gì về khả năng chỉnh sửa OpenLayers nhưng Leaflet có một plugin có tên là Leaflet Draw, rất dễ sử dụng và thao tác các bản vẽ (về phía javascript) sau khi vẽ xong. Ngoài ra Leaflet có hỗ trợ WFS-T nếu bạn muốn thao tác dữ liệu không gian trên máy chủ WFS. OpenLayers có thể tốt hơn thế, tôi không biết.
Tìm nạp Lớp từ Kho dữ liệu PostGIS trên GeoServer và hiển thị các lớp trên bản đồ:
Chắc chắn OpenLayers tốt hơn cho công việc này vì việc kết nối máy chủ PostGIS dễ dàng hơn.
Nhân tiện, có một bộ ứng dụng có tên OpenGeo Suite bao gồm OpenLayers, GeoServer và PostGIS; sẽ giải quyết tất cả các vấn đề mà một nhà phát triển ứng dụng GIS dựa trên web có.