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.