Hướng dẫn cho OpenLayers? [đóng cửa]


12

Tôi cần tạo một bản đồ web hiển thị nhiều lớp raster. Tôi đang sử dụng mapserver và muốn sử dụng Openlayers, tuy nhiên tôi không thể tìm thấy bất kỳ hướng dẫn tốt nào về nó. Tôi thấy một vài câu hỏi cũ ( 12 ) nói rằng không có tài liệu tốt. Có những thứ thay đổi gần đây?

Tôi muốn tìm một hướng dẫn giảng dạy từ những điều cơ bản đến những điều khá phức tạp với những giải thích tốt về mã và hình ảnh / ví dụ về kết quả. Hiện tại tôi chỉ quản lý bản đồ web đơn giản nhất với tệp .map của mình , nhưng tôi cần tùy chỉnh nó (thêm truyền thuyết, lớp nhóm, thêm điều khiển, nhúng, v.v.).

Câu trả lời:


7

Trong khi những người khác đã đề xuất các hướng dẫn trực tuyến tốt, hãy để tôi nói với bạn về cuốn sách đã cho tôi một nền tảng vững chắc rất cần thiết trong OpenLayers.

Cuốn sách này là: Hướng dẫn dành cho người mới bắt đầu của Erik Hazzard 2.10. Nó có sẵn từ Packt Publishers.

Tôi rất muốn giới thiệu cuốn sách, bởi vì nó liên quan đến tất cả các phần chính của Thư viện. Nó bắt đầu từ những điều cơ bản và từ từ giúp bạn phát triển theo các phần phức tạp của API.


2
Nó có sẵn dưới dạng Sách điện tử từ đây với giá 14,44 bảng trông tuyệt vời.
Đánh dấu Cupitt

Giá cả phụ thuộc vào quốc gia mà bạn truy cập. Nó cho tôi thấy một mức giá khoảng $ 3;
Devdatta Tengshe

Wow, tôi đoán trong philippines chúng ta đang bị phạt. sẽ giúp bạn mua nó cho tôi :-)
Mark Cupitt

Cảm ơn vì lời khuyên, vừa nhận được cuốn sách từ một người bạn, hãy xem ...
nadya 27/11/13

bạn không thể sử dụng một cái gì đó như PirateBrowser để che giấu đất nước của bạn và mua nó với giá thấp nhất?
Bên dưới Radar

13

Ngoài các câu trả lời tuyệt vời ở trên, hãy để tôi thêm kinh nghiệm của riêng tôi. Một năm rưỡi trước tôi đã quyết định tôi muốn sử dụng OpenLayers (OL) trong dự án Master của tôi và bắt đầu học nó. Tôi đã làm lập trình và lập bản đồ số như một phần công việc của tôi với tư cách là một nhà khảo cổ học từ đầu những năm 1980, và đã là một người dùng ArcGIS trong 15 năm. Tôi rất vui khi chọn OL cho dự án của mình, nhưng nó không phải lúc nào cũng thuận lợi khi học nó. Một số điều không rõ ràng và chỉ học được bằng cách thử và sai. Vì vậy, tôi có một số lời khuyên cho người mới bắt đầu.

Hành trình học OL của tôi thực sự bắt đầu khi tôi đăng ký tài khoản giá sách 5 khe trên Safari Books Online với giá $ 10 / tháng USD. Tôi muốn xem lại sách trước khi mua và một vài cửa hàng có thể truy cập mang theo sách máy tính liên quan đến GIS. Hiện tại có ba cuốn sách trên OL 2. Một cuốn sách 58 trang mới hơn có tên Instant OpenLayers Starter của Di Lorenzo và Allegri (Tháng 4 năm 2013) là một khởi đầu nhanh chóng, nhưng hai cuốn sách đầu tiên và mẫu mã của họ (có sẵn từ web của nhà xuất bản trang web, cùng với một chương mẫu miễn phí của mỗi cuốn sách) là những tài nguyên tốt:

  • OpenLayers 2.10: Hướng dẫn cho người mới bắt đầu của Erik Hazzard (Tháng 3 năm 2011)
  • OpenLayers Cookbook của Antonio Santiago Perez (Tháng 8 năm 2012)

Do thỉnh thoảng thất vọng về khả năng tương thích css và trình duyệt, cuối cùng tôi cũng đã học được một khung JavaScript. Tôi chọn Dojo vì đây là những gì Perez đã sử dụng trong cuốn sách của mình. Modern Dojo (Dojo 1.7 +) là một cách tiếp cận khác biệt đáng kể so với các phiên bản trước, sử dụng định dạng AMD không đồng bộ (AMD). Cách làm mọi thứ thay đổi. Tôi không hiểu rằng cuốn sách xuất sắc này sử dụng phiên bản Dojo trước 1.7 đã bị lỗi thời 9 tháng trước khi cuốn sách được xuất bản vào tháng 8 năm 2012. Esri tiếp tục sử dụng Dojo trước 1.7 trong API ArcGIS JavaScript của họ cho đến khi hiện đại hóa vào tháng 6 năm 2012 và đây là một chuyển đổi đau đớn cho nhiều nhà phát triển Javascript ArcGIS.

Để hiểu Dojo được hỗ trợ kém như thế nào, ngoài cuốn sách viết năm 2010 về Dojo 1.3, hầu hết các cuốn sách được viết vào năm 2007 và 2008. Không có cuốn sách nào được xuất bản cho Modern Dojo - bạn phải học từ các tài nguyên trực tuyến, hầu hết tất cả đó là trên trang web của họ. Về cơ bản, để làm việc với các ví dụ trong cuốn sách của Perez, bạn cần biết đủ về JavaScript để bỏ qua các bit Dojo và chuyển các ví dụ thành JavaScript đơn giản hoặc khung lựa chọn của bạn.

Nhìn lại, tôi ước tôi đã đi với khung ExtJS và GeoExt. ExtJS là miễn phí nếu dự án của bạn là nguồn mở và vì nhiều công ty vui vẻ trả tiền cho một phiên bản được hỗ trợ, họ có thể dành thời gian cho các tài liệu và hướng dẫn toàn diện về trang web.

Tôi học tốt nhất bằng cách làm việc với / hack các ví dụ khác nhau. Các nhà phát triển tại OpenLayers có triết lý tương tự như tài liệu chính mà họ hướng đến để học hỏi là kiểm tra các ví dụ. Tuy nhiên, một số ví dụ OL trên trang web của họ và các nơi khác có vấn đề có thể khiến người mới bắt đầu vấp ngã. (Xem bên dưới.)

Sự phụ thuộc vào các ví dụ như tài liệu cũng có nghĩa là người dùng không có ý thức về một luồng công việc tốt để phát triển bản đồ web. Điều này có thể dẫn đến việc tạo các bản đồ cảm thấy không đầy đủ - ví dụ, chúng có thể thiếu các tùy chỉnh css cho giao diện người dùng bản đồ và "giao diện". Việc ghi đè css OL với các tùy chỉnh tạo cảm giác khó chịu cho người mới bắt đầu, nhưng Fireorms có thể giúp bạn tìm các tên thành phần mà bạn cần ghi đè. Việc thiếu ý thức về một luồng công việc được chấp nhận cũng có thể dẫn đến việc tạo ra Frankencode, vì người dùng sẽ đưa các tính năng vào mã của họ khi họ thấy họ muốn.

Điều này dẫn tôi đến mục cuối cùng mà tôi cảm thấy tài liệu trang OL thiếu, ý thức về "thực tiễn tốt nhất" cho bản đồ OL. Có cách nào tốt hơn để tổ chức mã của tôi để làm cho nó trở nên mô đun và mạnh mẽ không? Những cạm bẫy với các bao đóng JavaScript và các đối tượng OL là gì? Tôi nên khai báo phong cách của mình ở đâu? Và như thế.

Khác với các tệp lỗi thời khác nhau trong Wiki, có hai vấn đề chung mà người mới bắt đầu nên biết khi học từ các ví dụ chính thức về OL và các tài liệu API. Đầu tiên, không có tổ chức nào đến trang của các ví dụ phát triển OL trên trang web OL. Nó chỉ đơn giản là trình bày nguồn cấp dữ liệu từ tệp xml trong thư mục đó (example-list.xml) của các ví dụ (207 trong số này kể từ ngày 13 tháng 2 năm 2014) và sắp xếp các hàng theo thứ tự chữ cái theo tên tệp vào lưới. Các ví dụ nâng cao hơn được trộn lẫn với những cái cơ bản. Bạn có thể tìm kiếm các ví dụ theo từ khóa, nhưng nhiều ví dụ thiếu từ khóa và tính năng tìm kiếm bao gồm nội dung và tiêu đề trang trong tìm kiếm, không chỉ từ khóa. Các kết quả được trả về với số lượng cụm từ tìm kiếm cao nhất được khớp trước tiên theo sau là tần số từ. Chỉ một trong những thuật ngữ tìm kiếm cần phải phù hợp để hiển thị trong kết quả. Trang UserRecipes trên OL Wiki liệt kê khoảng 90 ví dụ được sắp xếp theo danh mục và phân loại này là một trợ giúp. Trong đó, 66 liên kết trực tiếp đến các ví dụ trên trang ví dụ và phần còn lại là các liên kết xấu đến các ví dụ bị xóa.

Thứ hai, về cơ bản có hai phiên bản của tài liệu API có vẻ giống nhau ở cái nhìn đầu tiên. API chính thức nằm trong một thư mục có tên / apidocs và cạnh chảy máu, nhưng thư viện nhà phát triển không ổn định, nằm trong một thư mục có tên / docs. Các URL là như nhau khác. (Ngoài ra còn có phiên bản trung kế.) Chỉ cần chỉnh sửa địa chỉ của trang để xem phiên bản khác. Wiki lưu ý rằng thư viện nhà phát triển không nên dựa vào các thuộc tính, hàm, v.v. có thể bị xóa khỏi thư viện bất cứ lúc nào. Với OpenLayers 3 gần với thực tế (nó đã có bản beta và hiện đã có một cuốn sách về nó), tôi nghi ngờ rằng sẽ không có quá nhiều thay đổi trong OL 2 trong tương lai. Trọng tâm bây giờ là vào OL 3.

Nói chung, tôi thấy các trang API OL quá khung xương, thường thiếu các giải thích hoặc ví dụ minh họa, đặc biệt đối với ai đó đã sử dụng các thư viện có tài liệu API hoàn chỉnh hơn. Cách nó được trình bày bạn không có được một hình ảnh rõ ràng về đối tượng mà nó đang kế thừa.

Trong số các ví dụ OL trên web nói chung, nhiều ví dụ sử dụng các đối tượng hoặc cú pháp đã bị phản đối vì nó đã được thay thế bởi các phiên bản cải tiến. Chẳng hạn, Layer.Vector hiện là cách vẽ đánh dấu ưa thích vì Layer.Marker không được dùng trong phiên bản 3. Kiểm tra tệp deprecated.js để đảm bảo bạn không sử dụng các đối tượng đang trên đường ra. Hoặc, ít nhất hãy lưu ý nếu bạn nâng cấp mã của mình lên OL 3, bạn sẽ cần thay đổi điều này.

Ngoài hội thảo Boundless OpenLayers được liên kết bởi Julien-Samuel Lacroix ở trên, IBM còn có một hướng dẫn thú vị, mặc dù đã ba tuổi, sử dụng OpenLayers, MapServer, Google Gears và jQuery để xây dựng một ứng dụng web GIS hoàn chỉnh: Mang dữ liệu cùng với OpenLayers : Sử dụng dữ liệu từ nhiều nguồn khác nhau trong bản đồ web

Ngoài ra, hãy xem bài viết hữu ích này về kiểu dáng trình chuyển đổi lớp

Google các từ OpenLayers và jsFiddle để lấy một số ví dụ về các câu đố OL. Kết quả từ trang techslides là một trang liệt kê khá nhiều trong số này.

Cuối cùng, hãy cẩn thận rằng hình ảnh bản đồ trong hầu hết các ví dụ là từ các máy chủ OpenStreetMap (OSM) và chúng sẽ bị hỏng theo kế hoạch hoặc không có kế hoạch và bạn sẽ có được các ô màu hồng ở vị trí của chúng. Đôi khi bạn sẽ nghĩ rằng bạn đã làm hỏng mã của mình. Bạn có thể kiểm tra trạng thái nền tảng trên wiki OpenStreetMap.


2
Đây là một câu trả lời chi tiết tốt đẹp. Thật xấu hổ khi chúng tôi không có nhiều câu trả lời kiểu này trên trang web.
Devdatta Tengshe

Leta, cảm ơn bạn đã trả lời xuyên suốt! Bây giờ tôi đang chiến đấu với GeoExt (và ExtJS), và nó thậm chí còn gặp nhiều vấn đề hơn với hướng dẫn so với OL, ví dụ của họ trông khá giống thế này :)
nadya 15/03/2016


4

Open Layer là một gói tuyệt vời, cực kỳ linh hoạt, nhưng nó thiếu tài liệu cho người mới bắt đầu nhưng có rất nhiều tài liệu dành cho nhà phát triển chi tiết.

Những gì tôi đã làm khi mới bắt đầu là xem xét tất cả các ví dụ , chọn những ví dụ có chức năng tôi muốn, phân tích mã và xây dựng chức năng từng bước, thử nghiệm khi tôi đi. Tôi thấy rằng việc thử quá nhiều chức năng trong một lần nhấn khiến cho mọi người khó hiểu hơn về các khái niệm và các vấn đề gỡ lỗi.

Sau đó, tôi tìm thấy GIS @ SE, một trợ giúp lớn cho các vấn đề cụ thể, hoặc là nghiên cứu các câu hỏi của người khác hoặc hỏi chính tôi.

Ngoài ra, @Julian có thể đã cung cấp cho bạn tùy chọn tốt nhất về hướng dẫn, chúng khá tốt.


Cảm ơn câu trả lời, tôi đã xem những ví dụ này nhưng không thể tìm thấy những gì tôi cần. Vì vậy, tôi sẽ phải mã hóa ...
nadya

2

Chỉ cần đề cập, trang này từ OpenGeo cũng hữu ích cho tôi. Họ bắt đầu từ những điều cơ bản và có một ví dụ hay về các sự kiện GetFeatureInfo với việc loại bỏ các cửa sổ bật lên.

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.