Mitte März haben wir euch die ArcGIS API for JavaScript vorgestellt. Ende März erschien mit der Version 3.4 wieder ein Update. Die wichtigsten Neuerungen stelle ich euch hier vor.
Die erste Version der JavaScript API wurde im Juli 2008 veröffentlicht. Mittlerweile stehen wir beim 21. Release. Pro Jahr gab es bisher also vier Updates. Diese kurzen Releasezyklen hängen mit den schnellen Entwicklungen in der Webtechnologie zusammen, wie man beispielsweise an der aktuellen Unterstützung für Touch Events sehen kann. Ob und wann ihr eure Anwendung auf die neue Version aktualisiert, hängt von eurem Projekt ab und von den Funktionen, die ihr benötigt.
Änderungen in der Online API Reference
Auch die Online-Version der Dokumentation wird konstant aktualisiert. Besonders spannend finde ich die neue Sandbox, in der einige Beispiele jetzt schon live getestet und auch angepasst werden können. Hier ist der Link zum einfachen Create a map-Beispiel.
Dort könnt ihr euch nicht nur das Live-Beispiel anschauen und den Code als ZIP herunterladen, sondern das Beispiel auch in der Sandbox öffnen und direkt anpassen. Verändert ein paar Zeilen im Code und nutzt den Run-Button, um die Änderungen rechts in der Karte zu sehen! Zum Testen könnt ihr zum Beispiel in Zeile 30 die Basemap von topo auf gray ändern.
Als zweite Änderung gibt es nun in der Klassenbeschreibung sowohl die neue AMD-Struktur als auch die bisherige dojo.require()-Darstellung. Zu AMD gleich mehr.
Neue Widgets
Das Directions Widget kann schnell und einfach als Routingdienst in die eigene Anwendung eingebaut werden. Dabei werden – wie bei jedem Widget – die Benutzerschnittstelle, die Darstellung der Route und auch die Funktionalität zur Ansprache des Dienstes bereitgestellt. Per Default läuft das Routing über den World Network Analysis Dienst von ArcGIS Online, der über eine ArcGIS Online Subskription genutzt werden kann. Man kann es aber auch auf eigene Routingdienste umschalten. Die Ortssuche integriert einen Auto-CompleteModus, ähnlich dem Geocoding Widget aus der letzten API Version. Ein Beispiel für das Directions Widget findet ihr hier.
Das Popup Widget ist nun das standardmäßige Infofenster der Karte. Damit löst es das bisherige InfoWindow ab. Es ermöglicht flexiblere und ansprechendere Designs. Speziell für mobile Geräte bieten die Popups mehr Möglichkeiten. Ein schönes Beispiel dafür findet ihr hier.
Touch Events und die Browserunterstützung
Touch Events sind nicht nur elementar für die Nutzung auf aktuellen Smartphones oder Tablets, sondern auch die Alternative für Windows-8-Nutzer. Die ArcGIS API for JavaScript unterstützt nun Touch Events für Firefox, Chrome und Internet Explorer 10. Mit der Version 3.4 der API steht der IE 10 auch zum ersten Mal in der Liste der unterstützten Browser.
AMD: Asynchronous Module Definition
Mit jeder Version der ArcGIS API for JavaScript wird auch eine Dojo-Version mitgeliefert. Das Dojo Framework ist ein freies JavaScript-Framework, das die Grundlage für Erweiterungen bildet, die Esri benutzt: die Map, die Layertypen, die Tasks usw. Welche Dojo-Version in welcher JavaScript API integriert ist, steht hier. Wenn ihr in einer Anwendung die jeweilige Version herausfinden wollt, könnt ihr in der Entwicklerkonsole eures Webbrowser die Befehle dojo.version und esri.version absetzen. Es ist also in der Regel nicht notwendig, zusätzlich noch auf die Dojo-Bibliothek zu verweisen.
Die aktuelle ArcGIS API for JavaScript 3.4 verwendet die Dojo-Version 1.8.3. Seit Version 1.7 von Dojo wird auf die Asynchronous Module Definition (AMD) hingewiesen. Es handelt sich dabei um eine Funktion in JavaScript, die das nebenläufige (asynchrone) Nachladen von Komponenten erlaubt. Dadurch sind speziell komplexe Anwendungen schneller, da alle Module nicht direkt beim Start der Seite geladen werden, sondern nur dann, wenn sie benötigt werden.
Momentan werden beide Arten der Umsetzung unterstützt: die AMD-Methode und die bisherige Legacy-Methode. Das bedeutet, dass bisherige Anwendungen, die auf einer früheren Version der API aufbauen und nicht upgedatet werden, unverändert bleiben können. Bei Anwendungen, die neue Funktionen der Version 3.4 verwenden, könnt ihr euch entscheiden, ob ihr sie umschreiben wollt oder ob ihr es bei der alten Methode belasst. Bei neuen Anwendungen wird empfohlen, auf das AMD-Pattern zu schwenken. Das ist dann relevant, wenn eigene Widgets und Klassen geschrieben werden. Dann müsst ihr für jedes Widget und in jeder Klasse die benötigten Module explizit laden. Eine Ausnahme: Wer statt des Standard Dojo-Grids das einfachere dgrid verwendet, wird die ersten Versuche in AMD schon hinter sich haben.
Weitere Infos für Interessierte gibt es unter Dojo and AMD und in der Dojo-Dokumentation und den Tutorials.
ArcGIS Online
Die neuen Möglichkeiten von ArcGIS Online sind natürlich auch in den Funktionen der ArcGIS API for JavaScript zu finden. Die Webanwendungs-Templates von ArcGIS Online und der Webkarten-Klient selbst bauen auf der API auf. Für diejenigen, die einen eigenen Klienten schreiben oder anpassen, wird nun die Erstellung von Legenden aus ArcGIS Online Webmaps erleichtert. Zusätzlich gibt es erweiterte Zugriffe auf die Portal API und den Support für GeoRSS, Web Tiled Layer, WMTS und Dynamische Renderer. Zusätzlich findet ihr die Beispiele der OAuth2-Authentifizierung für ArcGIS Online. Mehr Infos dazu auf den neuen ArcGIS for Developers Seiten:
Weitere Neuerungen
- Proxies: Pro Dienst oder Ressource können nun eigene Proxies angegeben werden. Die Methode findet sich in dem esri Namespace, der am Ende der API-Dokumentation gelistet ist.
- Die Navigationsmethoden der Karte liefern nun Deferred Objekte zurück. Damit könnt ihr leichter ein Event verbinden.
- SVG-Unterstützung für Symbole. Die Möglichkeiten damit zeigt das Beispiel Create SimpleMarkerSymbol with SVG path.
Zusammenfassung
Auf GIS IQ werden wir euch auch künftig Details der ArcGIS API for JavaScript vorstellen. Wir freuen uns auf eure Kommentare, Anmerkungen – gerne hier im Blog.
Zusätzliche Informationen zu ArcGIS API for JavaScript Version 3.4 findet ihr auch ab 14. Juni in der arcAKTUELL 2/2013 unter Tipps und Tricks für Entwickler.
Ergänzende Links:
– Beitrag von Axel Schaefer