Lassen Sie mich zusätzlich zu den oben genannten hervorragenden Antworten meine eigenen Erfahrungen hinzufügen. Vor anderthalb Jahren beschloss ich, OpenLayers (OL) in meinem Master-Projekt zu verwenden, und machte mich daran, es zu lernen. Seit Anfang der 1980er Jahre arbeite ich als Archäologe mit Programmieren und Erstellen digitaler Karten. Seit 15 Jahren bin ich ArcGIS-Benutzer. Ich bin froh, dass ich OL für mein Projekt gewählt habe, aber es war nicht immer ein reibungsloser Weg, es zu lernen. Einige Dinge waren nicht offensichtlich und wurden nur durch Ausprobieren gelernt. Also, ich habe ein paar Tipps für Anfänger.
Meine Reise zum Erlernen von OL begann erst richtig, als ich mich bei Safari Books Online für 10 USD / Monat für ein 5-Slot-Bookshelf-Konto anmeldete. Ich wollte Bücher vor dem Kauf lesen, und nur wenige Geschäfte, die man besuchen kann, haben GIS-bezogene Computerbücher. Auf OL 2 sind drei Bücher erschienen. Ein neueres 58-seitiges Buch mit dem Titel Instant OpenLayers Starter von Di Lorenzo und Allegri (April 2013) ist ein guter Einstieg, aber die ersten beiden Bücher und ihre Codebeispiele (im Internet des Herausgebers erhältlich) Seite, zusammen mit einem kostenlosen Beispielkapitel von jedem Buch) waren gute Ressourcen:
- OpenLayers 2.10: Anfängerleitfaden von Erik Hazzard (März 2011)
- OpenLayers Kochbuch von Antonio Santiago Perez (August 2012)
Aufgrund gelegentlicher Frustrationen über CSS und Browserkompatibilität lernte ich schließlich auch ein JavaScript-Framework. Ich wähle Dojo, weil Perez dies in seinem Buch verwendet hat. Modern Dojo (Dojo 1.7 +) unterscheidet sich erheblich von früheren Versionen und verwendet ein AMD-Format (Asynchronous Module Definition). Die Art und Weise, alles zu tun, änderte sich. Ich habe nicht verstanden, dass dieses ansonsten hervorragende Buch eine Dojo-Version vor 1.7 verwendet, die 9 Monate vor der Veröffentlichung des Buches im August 2012 veraltet war. Esri verwendete das Dojo vor 1.7 in seiner JavaScript ArcGIS-API, bis es im Juni 2012 modernisiert wurde Für viele ArcGIS-Javascript-Entwickler war dies ein schmerzhafter Wechsel.
Um zu verstehen, wie schlecht Dojo unterstützt wird, wurden die meisten Bücher - abgesehen von einem Buch über Dojo 1.3 aus dem Jahr 2010 - in den Jahren 2007 und 2008 geschrieben. Es gibt keine veröffentlichten Bücher für Modern Dojo - Sie müssen fast alle aus Online-Ressourcen lernen die sind auf ihrer Website. Um mit den Beispielen in Perez 'Buch arbeiten zu können, müssen Sie sich mit JavaScript auskennen, um die Dojo-Bits zu ignorieren und die Beispiele in einfaches JavaScript oder in ein Framework Ihrer Wahl zu verschieben.
Im Nachhinein wünschte ich, ich wäre mit dem ExtJS-Framework und GeoExt gegangen. ExtJS ist kostenlos, wenn Ihr Projekt Open Source ist, und da viele Unternehmen gerne für eine unterstützte Version bezahlen, können sie es sich leisten, Zeit für umfassende Website-Dokumentationen und Tutorials zu investieren.
Ich lerne am besten, indem ich mit Beispielen arbeite / sie hacke. Die Entwickler von OpenLayers verfolgen dieselbe Philosophie wie die primäre Dokumentation, auf die sie beim Lernen verweisen, indem sie die Beispiele untersuchen. Einige OL-Beispiele auf ihrer Website und anderswo weisen jedoch Probleme auf, die Anfänger stolpern lassen können. (Siehe unten.)
Das Vertrauen in Beispiele als Dokumentation bedeutet auch, dass der Benutzer keinen guten Workflow für die Entwicklung einer Webkarte versteht. Dies kann dazu führen, dass sich Karten unvollständig anfühlen. Beispielsweise fehlen ihnen möglicherweise CSS-Anpassungen an der Benutzeroberfläche der Karten und das "Look and Feel". Das Überschreiben des OL-CSS mit Anpassungen ist für den Anfänger entmutigend, aber Firebug kann Ihnen helfen, die zu überschreibenden Elementnamen zu finden. Das Fehlen eines akzeptierten Arbeitsablaufs kann auch zur Erstellung von Frankencode führen, da Benutzer Funktionen in ihren Code einlesen, wenn sie dies wünschen.
Dies führt mich zu dem letzten Punkt, der meiner Meinung nach in der OL-Site-Dokumentation fehlt, und zu den "Best Practices" für OL-Maps. Gibt es eine bessere Möglichkeit, meinen Code so zu organisieren, dass er modular und robust ist? Was sind die Tücken bei JavaScript-Verschlüssen und OL-Objekten? Wo soll ich meine Styles deklarieren? Und so weiter.
Abgesehen von den verschiedenen veralteten Dateien im Wiki gibt es zwei allgemeine Probleme, die Anfänger kennen sollten, wenn sie aus den offiziellen OL-Beispielen und API-Dokumenten lernen. Erstens gibt es keine Organisation für die Seite mit OL-Entwicklungsbeispielen auf der OL-Website. Es wird einfach der Feed aus der XML-Datei in diesem Verzeichnis (example-list.xml) der Beispiele (207 davon ab dem 13. Februar 2014) dargestellt und die Zeilen alphabetisch nach Dateinamen in einem Raster sortiert. Fortgeschrittenere Beispiele werden mit einfachen Beispielen gemischt. Sie können die Beispiele nach Schlüsselwörtern durchsuchen. In vielen Beispielen fehlen jedoch Schlüsselwörter, und die Suchfunktion enthält Inhalt und Seitentitel in der Suche, nicht nur Schlüsselwörter. Die Ergebnisse werden mit der höchsten Anzahl von Suchbegriffen zurückgegeben, die zuerst übereinstimmen, gefolgt von der Worthäufigkeit. Nur einer der Suchbegriffe muss übereinstimmen, damit er in den Ergebnissen angezeigt wird. Die UserRecipes-Seite im OL-Wiki listet ungefähr 90 Beispiele auf, die nach Kategorien geordnet sind. Diese Kategorisierung ist eine Hilfe. Davon sind 66 Live-Links zu den Beispielen auf der Beispielseite und der Rest sind schlechte Links zu entfernten Beispielen.
Zweitens gibt es grundsätzlich zwei Versionen der API-Dokumentation, die auf den ersten Blick identisch zu sein scheinen. Die offizielle API befindet sich in einem Verzeichnis mit dem Namen / apidocs und dem neuesten Stand. Die flüchtige Entwicklerbibliothek befindet sich jedoch in einem Verzeichnis mit dem Namen / docs. Die URLs sind ansonsten gleich. (Es gibt auch Trunk-Versionen.) Bearbeiten Sie einfach die Adresse der Seite, um die andere Version anzuzeigen. Das Wiki weist darauf hin, dass sich die Entwicklerbibliothek nicht darauf verlassen sollte, dass Eigenschaften, Funktionen usw. jederzeit aus der Bibliothek entfernt werden können. Da OpenLayers 3 realitätsnah ist (es ist in der Beta verfügbar und es gibt ein Buch darüber), gehe ich davon aus, dass sich in OL 2 in Zukunft nicht allzu viel ändern wird. Der Fokus liegt nun auf OL 3.
Im Allgemeinen finde ich, dass die OL-API-Seiten zu skelettartig sind und häufig keine Erklärungen oder anschaulichen Beispiele enthalten, insbesondere für jemanden, der Bibliotheken mit einer umfassenderen API-Dokumentation verwendet. Bei der Darstellung erhalten Sie kein klares Bild des Objekts, von dem es geerbt wird.
Von den OL-Beispielen im Web verwenden im Allgemeinen viele Objekte oder Syntax, die veraltet sind, weil sie durch verbesserte Versionen ersetzt wurden. Beispielsweise ist Layer.Vector jetzt die bevorzugte Methode zum Zeichnen von Markierungen, da Layer.Marker in Version 3 veraltet ist. Überprüfen Sie die Datei deprecated.js, um sicherzustellen, dass Sie keine Objekte verwenden, die sich auf dem Weg nach draußen befinden. Wenn Sie Ihren Code auf OL 3 aktualisieren, müssen Sie dies zumindest ändern.
Zusätzlich zu dem oben von Julien-Samuel Lacroix verlinkten Boundless OpenLayers-Workshop verfügt IBM über ein drei Jahre altes Tutorial, in dem OpenLayers, MapServer, Google Gears und jQuery zum Erstellen einer vollständigen GIS-Webanwendung verwendet werden: Bringen Sie Daten mit OpenLayers zusammen : Verwenden von Daten aus mehreren unterschiedlichen Quellen in Webkarten
Lesen Sie auch diesen nützlichen Beitrag zum Stylen des Ebenenwechslers
Google die Wörter OpenLayers und jsFiddle, um einige Beispiele für OL-Geigen zu erhalten. Das Ergebnis der Website von techslides ist eine Seite, auf der einige davon aufgelistet sind.
Beachten Sie außerdem, dass die Kartenbilder in den meisten Beispielen von OpenStreetMap-Servern (OSM) stammen. Diese gehen ab und zu aus, geplant oder ungeplant, und Sie erhalten rosa Kacheln an ihrer Stelle. Manchmal werden Sie denken, Sie hätten Ihren Code durcheinander gebracht. Sie können den Plattformstatus im OpenStreetMap-Wiki überprüfen.