Oprócz powyższych doskonałych odpowiedzi, pozwól mi dodać własne doświadczenie. Półtora roku temu zdecydowałem, że chcę użyć OpenLayers (OL) w projekcie mojego Mistrza i postanowiłem się tego nauczyć. Od początku lat 80. zajmuję się programowaniem i tworzeniem map cyfrowych w ramach mojej pracy jako archeolog, a od 15 lat jestem użytkownikiem ArcGIS. Cieszę się, że wybrałem OL do mojego projektu, ale nauka nie zawsze była płynna. Niektóre rzeczy nie były oczywiste i nauczyły się tylko metodą prób i błędów. Mam więc porady dla początkujących.
Moja podróż do nauki OL naprawdę się zaczęła, kiedy zarejestrowałem 5-slotowe konto na półce w Safari Books Online za 10 USD / miesiąc USD. Chciałem przejrzeć książki przed zakupem, a kilka sklepów, które można odwiedzić, zawiera książki komputerowe związane z GIS. Istnieją trzy książki na OL 2. Nowsza 58-stronicowa książka o nazwie Instant OpenLayers Starter autorstwa Di Lorenzo i Allegri (kwiecień 2013) to dobry szybki start, ale dwie pierwsze książki i ich próbki kodu (dostępne w sieci wydawcy strona wraz z darmowym przykładowym rozdziałem każdej książki) były dobrymi zasobami:
- OpenLayers 2.10: Przewodnik dla początkujących autorstwa Erika Hazzarda (marzec 2011 r.)
- Książka kucharska OpenLayers autorstwa Antonio Santiago Pereza (sierpień 2012)
Z powodu sporadycznych frustracji związanych z kompatybilnością z css i przeglądarkami skończyłem również na nauce języka JavaScript. Wybieram Dojo, ponieważ tego właśnie użył Perez w swojej książce. Nowoczesne Dojo (Dojo 1.7 +) to znacznie inne podejście niż wcześniejsze wersje, wykorzystujące format definicji modułu asynchronicznego (AMD). Zmienił się sposób robienia wszystkiego. Nie rozumiałem, że w przeciwnym razie ta doskonała książka wykorzystuje wersję Dojo sprzed 1.7, która stała się przestarzała 9 miesięcy przed wydaniem książki w sierpniu 2012 r. Esri nadal używała Dojo sprzed 1.7 w API ArcGIS API do czasu modernizacji w czerwcu 2012 r. , co było bolesną zmianą dla wielu programistów ArcGIS Javascript.
Aby zrozumieć, jak słabo wspierane jest Dojo, poza książką napisaną w 2010 r. O Dojo 1.3, większość książek napisano w 2007 i 2008 r. Nie ma opublikowanych książek o Modern Dojo - musisz uczyć się z zasobów internetowych, prawie wszystkich które są na ich stronie internetowej. Zasadniczo, aby pracować z przykładami w książce Pereza, musisz wiedzieć wystarczająco dużo o JavaScript, aby zignorować bity Dojo i przenieść przykłady do zwykłego JavaScript lub wybranej przez siebie struktury.
Z perspektywy czasu chciałbym skorzystać z frameworka ExtJS i GeoExt. ExtJS jest bezpłatny, jeśli twój projekt jest open source, a ponieważ wiele firm chętnie płaci za obsługiwaną wersję, mogą sobie pozwolić na poświęcenie czasu na kompleksową dokumentację witryny i samouczki.
Uczę się najlepiej, pracując z / hackując osobno przykłady. Programiści w OpenLayers mają tę samą filozofię, co podstawowa dokumentacja, którą wskazują do nauki, to badanie przykładów. Jednak niektóre przykłady OL na ich stronie internetowej i gdzie indziej mają problemy, które mogą sprawić, że początkujący potkną się. (Patrz poniżej.)
Oparcie się na przykładach jako dokumentacji oznacza również, że użytkownik nie ma poczucia dobrego przepływu pracy przy tworzeniu mapy sieci. Może to prowadzić do niekompletności map - na przykład mogą brakować dostosowań css do interfejsu użytkownika map i „wyglądu i działania”. Przesłonięcie OL css z dostosowaniami wydaje się trudne dla początkującego, ale Firebug może pomóc Ci znaleźć nazwy elementów, które musisz przesłonić. Brak poczucia akceptowanego przepływu pracy może również prowadzić do utworzenia Frankencode, ponieważ użytkownicy boothorn mają w swoim kodzie funkcje, które uznają za potrzebne.
To prowadzi mnie do ostatniego elementu, który, jak uważam, brakuje w dokumentacji witryny OL, do poczucia „najlepszych praktyk” dla map OL. Czy istnieje lepszy sposób na uporządkowanie mojego kodu, aby był on modułowy i niezawodny? Jakie są pułapki związane z zamykaniem JavaScript i obiektami OL? Gdzie mam zadeklarować swoje style? I tak dalej.
Oprócz różnych nieaktualnych plików na Wiki, początkujący powinni pamiętać o dwóch ogólnych kwestiach, ucząc się na oficjalnych przykładach OL i dokumentach API. Po pierwsze, nie ma organizacji na stronie przykładów programowania OL na stronie internetowej OL. Po prostu prezentuje kanał z pliku xml w tym katalogu (example-list.xml) przykładów (207 z nich na dzień 13 lutego 2014 r.) I sortuje wiersze alfabetycznie według nazwy pliku w siatce. Bardziej zaawansowane przykłady są mieszane z podstawowymi. Możesz wyszukiwać przykłady według słów kluczowych, ale w wielu z nich brakuje słów kluczowych, a funkcja wyszukiwania obejmuje treść i tytuł strony, a nie tylko słowa kluczowe. Wyniki są zwracane z największą liczbą pasujących wyszukiwanych haseł, a następnie z częstotliwością słów. Tylko jeden z wyszukiwanych haseł musi być zgodny, aby pojawił się w wynikach. Strona UserRecipes na OL Wiki zawiera około 90 przykładów uporządkowanych według kategorii, a ta kategoryzacja jest pomocna. 66 z nich to linki na żywo do przykładów na stronie przykładów, a reszta to złe linki do usuniętych przykładów.
Po drugie, istnieją zasadniczo dwie wersje dokumentacji API, które na pierwszy rzut oka wydają się takie same. Oficjalny interfejs API znajduje się w katalogu o nazwie / apidocs i najnowocześniejszym, ale zmienna biblioteka programistów znajduje się w katalogu o nazwie / docs. W przeciwnym razie adresy URL są takie same. (Istnieją również wersje trunk.) Po prostu edytuj adres strony, aby zobaczyć inną wersję. Wiki zauważa, że nie należy polegać na bibliotece programistów, ponieważ właściwości, funkcje itp. Mogą zostać usunięte z biblioteki w dowolnym momencie. Ponieważ OpenLayers 3 jest zbliżony do rzeczywistości (jest dostępny w wersji beta, a teraz jest na nim książka), podejrzewam, że w przyszłości OL 2 nie zmieni się zbyt wiele. Nacisk kładziony jest teraz na OL 3.
Ogólnie uważam, że strony OL API są zbyt szkieletowe, często brakuje im wyjaśnień lub ilustrujących przykładów, szczególnie dla kogoś, kto korzysta z bibliotek z pełniejszą dokumentacją API. Sposób prezentacji nie pozwala uzyskać wyraźnego obrazu dziedziczonego obiektu.
Spośród przykładów OL w Internecie wielu używa obiektów lub składni, które zostały wycofane, ponieważ zostały zastąpione ulepszonymi wersjami. Na przykład Layer.Vector jest teraz preferowanym sposobem rysowania znaczników, ponieważ Layer.Marker jest przestarzały w wersji 3. Sprawdź plik deprecated.js, aby upewnić się, że nie używasz obiektów, które wychodzą. Lub przynajmniej pamiętaj, jeśli uaktualnisz swój kod do OL 3, musisz to zmienić.
Oprócz warsztatów Boundless OpenLayers połączonych powyżej przez Juliena-Samuela Lacroixa, IBM ma fajny samouczek, chociaż trzyletni, który wykorzystuje OpenLayers, MapServer, Google Gears i jQuery do budowy kompletnej aplikacji internetowej GIS: Połącz dane z OpenLayers : Używanie danych z wielu różnych źródeł w mapach internetowych
Zobacz także ten przydatny post na temat stylizacji przełącznika warstw
Google słowa OpenLayers i jsFiddle, aby uzyskać przykłady skrzypiec OL. Rezultatem witryny techslides jest strona zawierająca sporo z nich.
Na koniec, uważaj, że obrazy map w większości przykładów pochodzą z serwerów OpenStreetMap (OSM), które od czasu do czasu ulegają awarii, są planowane lub nieplanowane, a na ich miejscu pojawią się różowe kafelki. Czasami myślisz, że spieprzyłeś swój kod. Możesz sprawdzić status platformy na wiki OpenStreetMap.