Chọn OpenLayers hay Tờ rơi? [đóng cửa]


93

Tôi đã tranh luận với một trong những đồng nghiệp của tôi trên Tờ rơi v / s OpenLayers. Tôi đã đưa ra quan điểm rằng OpenLayers là API tốt hơn nhiều nếu chúng tôi muốn xây dựng một dự án, nơi bạn cần kết nối trực tiếp với Geoserver và PostGIS.

Sau đó, tôi tìm thấy Open Data Kit , trông khá mới nhưng có các tính năng kết nối với Geoserver và PostGIS.

Vì vậy, chi tiết dự án của tôi như sau,

  1. Sử dụng giao diện bản đồ để tìm nạp Thông tin tính năng
  2. Tạo một công cụ tùy chỉnh lấy lat / lon từ người dùng đến nơi anh ấy / 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ủ)
  3. 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 đồ
  4. 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.
  5. Lấy lớp từ Kho dữ liệu PostGIS trên GeoServer và hiển thị các lớp trên bản đồ.

Vì vậy, bây giờ tôi bối rối về cái nào tốt hơn và tại sao sử dụng OpenLayers trên Leaflet có ý nghĩa hơn hay không?


1
Phụ thuộc vào dự án.
CaptDragon

1
a. Cải thiện câu hỏi của bạn bằng cách cung cấp thêm chi tiết về dự án. b. Bạn đang nói về kết nối trực tiếp đến cơ sở dữ liệu (postgis) cho người dùng, bạn có chắc không?
Pablo

xin lỗi về điều đó, đã cập nhật chi tiết dự án của tôi
Sam007


Nói chung tôi thích Leaflet hơn, bởi vì nó có xu hướng dẫn đến các tệp .js ngắn hơn và dễ đọc hơn. Nhưng OL có thể làm những việc mà Leaflet không thể, bởi vì bạn được phép truy cập sâu hơn và chi tiết hơn - Vì vậy, tôi đồng ý. Nó phụ thuộc vào dự án, nhưng 1 phiếu bầu cho Tờ rơi từ tôi.
MartinHvidberg

Câu trả lời:


87

Tôi đã sử dụng cả OpenLayers và Leaflet trong các ứng dụng của mình. Đã có rất nhiều cuộc thảo luận về chủ đề này trong diễn đàn này và những người khác trên hành tinh-internet. Họ thường rơi vào 2 phe - tính năng và tính linh hoạt của OpenLayers so với sự đơn giản của Tờ rơi. Tôi sẽ không ngạc nhiên nếu ai đó nảy sinh ra một sáng kiến ​​"OpenLeaf" sớm kết hôn tốt nhất của cả hai thế giới!

Tôi thấy Leaflet rất đơn giản để sử dụng, kích thước 64K nhỏ nhắn, so với hơn 700K Openlayers và trong vài bước bạn có thể tạo các ứng dụng có sự mới mẻ và bắt mắt của các ứng dụng web và di động hiện nay. Ngăn xếp của bạn - GeoServer, PostGIS, v.v., là một ngăn xếp tiêu chuẩn, do đó OpenLayers hoặc Leaflet có thể dễ dàng được kết hợp.

Có nói rằng, tôi vẫn sẽ đi với OpenLayers vì những lý do sau

  1. Chỉ có một TON tài liệu xung quanh OpenLayers. Nó trưởng thành hơn rất nhiều so với Tờ rơi.
  2. Kiểm tra so sánh về cam kết và người dùng .
  3. OpenLayers, GeoServer, PostGIS stack đã được chứng minh trong thế giới FOSS rằng bạn đang đi trên một con đường vững chắc.
  4. OpenLayers có nhiều tính năng hơn một chút trên Điều khiển bản đồ .
  5. Mặc dù cần nhiều công sức hơn để tạo hiệu ứng chuyển tiếp và hiệu ứng hình ảnh, nhưng nó có thể được thực hiện trong OpenLayers.

1
Còn thiết bị di động thì sao? Cái nào phù hợp hơn?
Sam007

1
Đúng. Tôi hiện đang xây dựng các ứng dụng di động bằng OpenLayers và SenchaTouch. Có rất nhiều ứng dụng bản đồ di động đang chạy trên Openlayers. Dưới đây là một số ví dụ openlayers.org/dev/examples/?q=mobile .
Ramesh Elaiyavalli

28

Tờ rơi tất cả các cách. Tôi cảm thấy như Leaflet là bước tiếp theo trong quá trình phát triển của các máy khách trình duyệt dựa trên mã nguồn mở. Ka-Map -> OpenLayers -> Tờ rơi.

Tờ rơi rất đơn giản để sử dụng và thực hiện chính xác những gì nó nói trên hộp thiếc. OpenLayers đã trở nên cồng kềnh bằng cách cố gắng trở thành tất cả mọi thứ cho tất cả mọi người, Leaflet thực hiện 20% những thứ được yêu cầu 80% thời gian.


14
Vì vậy, nó không chỉ là "Tờ rơi trên mọi nẻo đường", mà là "Tờ rơi nếu bạn không cần bất kỳ tính năng nào trong số đó". Tôi đồng ý rằng Leaflet đơn giản hơn nhiều để sử dụng, nhưng nếu bạn cần làm một cái gì đó không phổ biến, bạn phải đi với OL.
Juan

1
Tờ rơi thiếu nhiều chức năng. Tờ rơi chỉ tốt cho các bản đồ rất cơ bản nhưng như đã được Ramesh Elaiyavalli Ol-3 giải thích là tốt nhất và bạn cũng có thể giảm kích thước bằng cách chọn các tính năng bằng cách sử dụng tùy chỉnh được xây dựng.
Abhijit Gujar

18

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ó.


Câu trả lời chi tiết đẹp!
Devdatta Tengshe

Ba năm sau, bạn cảm thấy thế nào về Leaflet & thiết bị di động? Có cải thiện gì không?
Mawg

10

Có một so sánh tuyệt vời về hai khung trong bài trình bày này :

Tờ rơi vs OpenLayers

một bài viết khác cũng có một bản tóm tắt tuyệt vời:

Khách hàng thường hỏi chúng tôi, đó là thư viện ánh xạ JavaScript phía khách hàng tốt nhất để sử dụng khi xây dựng một ứng dụng web hiện đại với Phiên bản WebAPI của Map Suite? Câu trả lời phụ thuộc vào yêu cầu của bạn và sở thích phát triển. Vì cả hai khung đều được ghi chép tốt và hoạt động ổn định trên thiết bị di động, chúng tôi thường hỏi những câu hỏi sau để giúp khách hàng đưa ra quyết định đúng đắn.

Làm thế nào đơn giản là phần ánh xạ của ứng dụng bạn đang xây dựng?

Các yêu cầu lập bản đồ càng đơn giản, chúng ta càng nghiêng về việc sử dụng Tờ rơi. Leaflet thực hiện một công việc tuyệt vời để xử lý các tác vụ ánh xạ phổ biến nhất như tiêu thụ các ô bản đồ cơ sở, xoay và thu phóng, và API của nó rất dễ hiểu và dễ sử dụng. Tuy nhiên, khi bạn vượt ra ngoài các tác vụ thông thường, bạn cần sử dụng Plugin Leaflet và điều này khiến mọi thứ trở nên phức tạp hơn. Có thể có chức năng mà bạn đang tìm kiếm không may không tồn tại.

Nếu bạn có một ứng dụng giàu tính năng với nhiều chức năng, chúng tôi sẽ hướng tới việc sử dụng OpenLayers 3. OpenLayers 3 có API lớn hơn và phức tạp hơn, cho phép bạn thực hiện tất cả các chức năng ánh xạ phổ biến mà Leaflet thực hiện cùng với nhiều chức năng khác. Ví dụ: nếu ứng dụng của bạn có các yêu cầu liên quan đến phép chiếu bản đồ, OpenLayers 3 sẽ cho phép bạn thực hiện các yêu cầu này dễ dàng hơn so với khi bạn đang sử dụng Tờ rơi. Tất nhiên, với một API mạnh mẽ hơn sẽ có một đường cong học tập dốc hơn, vì vậy hãy ghi nhớ điều đó khi cung cấp các ước tính cho các bên liên quan trong dự án của bạn.

Bạn muốn viết bao nhiêu mã JavaScript?

Vì Leaflet là API cấp cao hơn OpenLayers 3, nên thường cần ít mã JavaScript hơn để khởi động và chạy. Tuy nhiên, khi bạn muốn đi chệch khỏi chức năng tiêu chuẩn mà Leaflet cung cấp, có khả năng cuối cùng bạn sẽ viết rất nhiều mã trừ khi có một trình cắm đáp ứng nhu cầu chính xác của bạn. Mặt khác, OpenLayers 3 là một API cấp thấp hơn, đòi hỏi nhiều mã hóa JavaScript hơn để khởi tạo và thiết lập bản đồ. Điều này có thể thuận tiện khi bạn có các yêu cầu tùy chỉnh và phức tạp, vì API cho phép kiểm soát nhiều hơn trên bản đồ và dữ liệu của bạn.

Tóm lược

Khi kết thúc, có những lúc tốt nhất nên sử dụng Tờ rơi và những lần khi OpenLayers 3 thắng. Nếu các yêu cầu lập bản đồ của bạn đơn giản, trước tiên bạn nên kiểm tra Tờ rơi. Nhưng nếu bạn đang tìm kiếm một thư viện ánh xạ có thể tùy chỉnh nhiều hơn và đừng bận tâm đến việc phát triển JavaScript, hãy tìm đến OpenLayers 3.

Vì cả hai thư viện đều có thế mạnh của mình, chúng tôi đã bao gồm các mẫu mã cho cả Leaflet và OpenLayers 3 với Map Suite WebAPI Edition có thể được tải xuống thông qua Trung tâm sản phẩm hoặc xem trên ThinkGeo Wiki. Các mẫu này là tài nguyên hữu ích khi quyết định thư viện ánh xạ Javascript phía máy khách nào sẽ sử dụng cho ứng dụng của bạn vì bạn có thể thấy tận mắt các trải nghiệm người dùng và yêu cầu mã hóa khác nhau giữa hai thư viện.

Từ http://blog.thinkgeo.com/2015/09/08/leaflet-vs-openlayers-3-which-is-the-better-client-side-javascript-mapping-l Library /


5

Tôi vừa trải qua quyết định này cho dự án di động mới của mình và người chiến thắng rõ ràng là OpenLayers. Tờ rơi, như văn bản này, là khá chậm chạp trên điện thoại di động. Quá trình chuyển đổi cho pan / zoom không cảm thấy trơn tru và đôi khi nó bị mất phương hướng. Không phải là người bản địa, tôi đã thử OpenLayers và trải nghiệm tốt hơn nhiều . Vẫn không tốt như bản địa, nhưng chắc chắn có thể sử dụng và là một lựa chọn thực sự.


1
Hấp dẫn. Tôi đã mong đợi Leaflet sẽ nhẹ hơn và mượt mà hơn trên thiết bị di động. Cảm ơn đã chia sẻ kinh nghiệm này.
LarsH

@Christian Fritz - bạn có kinh nghiệm với OL3 hay OL2 không?
sfletche

2
@sfletche sự so sánh là giữa OL3 và tờ rơi 0.7.3
Christian Fritz

Ba năm sau, bạn cảm thấy thế nào về Leaflet & thiết bị di động? Có cải thiện gì không?
Mawg

Vâng chắc chắn. Chúng tôi sử dụng tờ rơi trong sản xuất và không thấy bất kỳ vấn đề nào trên thiết bị di động.
Christian Fritz

3

Tôi muốn kiểm tra tài liệu API cho cả hai. Đối với tôi có vẻ như OpenLayerscung cấp một loạt các tính năng, tuy nhiên thời gian phát triển / gỡ lỗi lâu hơn.

Leafletquyến rũ và dễ dàng hơn nhiều so với OL, tuy nhiên nếu bạn muốn làm nhiều điều với bản đồ của mình, tôi nghĩ một ngày nào đó bạn có thể cần một tính năng chưa được triển khai Leaflet!

Tôi thực sự khuyên bạn nên xem API! OpenLayers & Tờ rơi

Ngoài ra, bạn có thể cần xem xét rằng bản phát hành ổn định hiện tại cho Leaflet 0.5.1nhưng nó 2.12dành cho OpenLayers.

PS Nếu tôi muốn phát triển một ứng dụng di động, tôi nghĩ rằng tôi có thể đi Leaflet.


3

Có một hướng dẫn cơ bản so sánh các API của cả OpenLayers 3 và Leaflet bằng cách bạn xây dựng cùng một thứ trong cả hai. Nó được viết bởi Astun Technology và các nhiệm vụ hướng dẫn là:

  • Bản đồ cơ bản với gạch OSM
  • Bản đồ OS-GB với các ô Khảo sát bản đồ
  • Lớp GeoJSON với các điểm đánh dấu
    • Thông tin cho lớp GeoJSON
  • Lớp WMS
    • Thông tin cho lớp WMS

Đây là liên kết: https : //astunt Technology.github.io/osgis-ol3-leaflet/index.html


cuộn bằng phím cách bị hỏng btw
bugmenot123

3

Nó phụ thuộc vào những gì bạn đang cố gắng làm. Tờ rơi đơn giản hơn và nhanh hơn cho 80% các dự án bản đồ web.

Giống như cách bạn không cần tàu vũ trụ để đi quanh khu phố của mình, hầu hết thời gian tôi thấy OpenLayers quá phức tạp để làm những việc thực sự đơn giản, đặc biệt là từ Phiên bản 3.

Ví dụ: việc tạo bộ chọn lớp có thể mất 5-6 dòng mã trong Leaflet trong khi trong OpenLayers 4, bạn phải xây dựng nó từ đầu. Bạn có các công cụ tuyệt vời để làm điều đó, nhưng hầu hết thời gian bạn không muốn có bộ chọn lớp tùy chỉnh, chỉ có một công cụ hoạt động tốt.

Một điều quan trọng khác cần xem xét là hầu hết các thông tin, hướng dẫn và tranh luận trên internet là về OpenLayers 2. Chúng đã lỗi thời, vì Phiên bản 3 không tương thích với Phiên bản 2. Và hiện tại chúng tôi đang ở Phiên bản 4. Phiên bản 2 có rất nhiều thứ đơn giản như bộ chọn lớp, cửa sổ bật lên, vv cùng với các chức năng phức tạp hơn; nhưng vì lý do gì họ chỉ xóa những thứ đó để phát triển thành một hệ thống phức tạp và rất mạnh. Hơn nữa, hiện tại có rất nhiều thông tin về Tờ rơi so với năm 2012 và đó là một công nghệ trưởng thành hơn.

Để kết luận, hãy tự hỏi nếu bạn cần một chiếc xe hơi hoặc tàu vũ trụ. Bạn sẽ không bay bằng ô tô, nhưng lái tàu vũ trụ để đi mua sắm có thể thực sự phức tạp.

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.