Skip navigation
All Places > GeoDev Germany > Blog > Authors r.suchanesri-de-esridist
1 2 Previous Next

GeoDev Germany

17 Posts authored by: r.suchanesri-de-esridist Employee

Erstellt man mit dem Web AppBuilder eine Web-App, so wird die dabei konfigurierte Web Map fest mit der App verdratet. In manchen Anwendungsfällen möchte man aber eventuell eine Web-App auch mit unterschiedlichen Web Maps verwenden können.
Dies ist mit dem Web AppBuilder relativ einfach realisierbar, indem man die ID der gewünschten Web Map als URL-Parameter beim Aufruf der App mit angibt.
Ein leider schlecht dokumentierter URL-Parameter des Web AppBuilders ist der Parameter itemid. Mit diesem gibt man die ID der Web Map an, die in der Webanwendung verwendet werden soll. Diese als URL-Parameter angegebene Web Map überschreibt die in der Konfiguration des Web AppBuilders angegebene Web Map und wird so in der Web-App angezeigt.
Dieses Prinzip funktioniert sowohl beim Web AppBuilder Developer Edition als auch beim im Portal integrierten Web AppBuilder.

 

Ein URL-Aufruf einer mit der Developer-Edition erstellten App könnte dann z.B. so aussehen:

http://<host>/MyApp/index.html?itemid=851bfb6399de45faa7b62b811b7f8979

 

Für eine App im Portal sieht ein URL-Aufruf der App z.B. wie folgt aus:

https://<host>/portal/apps/webappbuilder/index.html?id=b3381f7da4d945a98e25ea9655f33d77&itemid=851bfb6399de45faa7b62b811b7f8979

 

Dabei ist in beiden Fällen 851bfb6399de45faa7b62b811b7f8979 die ID der Web Map, die in der App angezeigt werden soll.

Mit der 4.x Serie des ArcGIS API for JavaScript hat Esri eine neu überarbeitete Version des APIs herausgebracht, die neben den 2D Karten auch 3D Karten unterstützt. Das API wurde grundlegend neu designt und auf eine einfache Verwendung hin optimiert.

3D Applikationen können mit der Version 4.0 auf der Basis von Webszenen erstellt werden, mit denen dreidimensionale Daten dargestellt werden können.

 

Scene1.png

 

Die Programmierung für 2D und 3D Karten ist sehr ähnlich oder fast identisch. In der aktuellen Version 4.0 sind noch nicht alle Möglichkeiten, die in der 3.x Version für 2D Karten verfügbar sind, vorhanden. Die Unterschiede können einer Vergleichsmatrix entnommen werden.

 

Verwendung von 3D Karten ist so einfach wie bei 2D Karten

 

Das neue API bietet ein einheitliches Programmiermodell für 2D und 3D Karten. Dies beinhaltet eine Trennung zwischen der Map als Model und der MapView (2D) bzw. SceneView (3D) als View-Komponente. Ein Map-Objekt kann dabei sowohl in einer 2D als auch in einer 3D Karte verwendet werden. Andere Eigenschaften wie Layer, Geometrien, Symbologie, Renderer, Tasks, Popups etc. sind bei 2D und 3D Karten äquivalent. Für 3D Karten kommen zusätzlich spezielle 3D Symbole hinzu.

Scene2.pngScene3.png

 

Daten aus dem Web GIS verwenden

 

Als Datenquelle für 3D Karten können Webszenen verwendet werden, die in ArcGIS Online oder über Portal for ArcGIS bereitgestellt werden. Die Vorgehensweise ist dabei so einfach wie bei 2D Webkarten. Man lädt die Webszene einfach über ihre Item-ID. Ebenso können einzelne Layer aus ArcGIS Online bzw. Portal for ArcGIS über ihre ID geladen und der Karte hinzugefügt werden, um so Inhalte aus unterschiedlichen Quellen zusammenzufügen.

 

Scene5.png

 

Verbesserungen für die Benutzeroberfläche

 

Einige Verbesserungen in der Benutzerfreundlichkeit wurden im 4.0 API umgesetzt, z.B. durch eine einfache und flexible Positionierung von UI-Elementen, ein neugestaltetes Popup-Fenster, verbesserte Widgets und verschiedenes mehr. Bei Popups kann nun eine Standardposition, wie z.B. die rechte, obere Ecke, definiert werden. Ebenso können Popup-Aktionen mit eigener Funktionalität definiert werden, die dann als Schaltfläche im Popup integriert werden. Das Aussehen der grafischen Oberfläche von Widgets kann einfach über CSS angepasst werden oder sogar ganz durch eine eigene Oberfläche ersetzt werden.

 

 

Verwenden von Vector Tiles

 

Die neuen Vector Tiles können im 4.0 API über einen eigenen Layer-Typ verwendet werden. Bei Vector Tiles werden die Kacheldaten nicht als Bild, sondern als Vektor-Repräsentation gespeichert und dann clientseitig gezeichnet. Vector Tiles zeichnen sich durch eine geringe Datenmenge und eine hohe Auflösung auch bei großen Maßstäben aus. Die Darstellung der Inhalte kann bei Vector Tiles angepasst werden, sodass man einem Layer einen eigenen Style zuweisen und damit das Aussehen individuell gestalten kann.

 

Scene4.png

 

Einen Überblick über die neue Version 4.0 des APIs findet man unter

https://developers.arcgis.com/javascript/latest/guide/index.html

 

Wer die vielen neuen Möglichkeiten des JavaScript APIs ausprobieren möchte, findet Anleitungen, eine API-Referenz und zahlreiche Beispiele unter

https://developers.arcgis.com/javascript/

Die neue Generation der ArcGIS Runtime SDKs macht inzwischen Fortschritte und so wurde für iOS nun ein Beta 2 des Quartz Releases veröffentlicht. Aufgrund der umfangreichen architektonischen und funktionalen Änderungen hatte sich die Veröffentlichung etwas verschoben.

Im Gegensatz zum Beta 1, in dem nur Online-Daten verwendet werden konnten, können nun mit Beta 2 auch Offline-Daten genutzt werden, die entweder mit ArcGIS Desktop erstellt oder per Task von einem Service zur offline Verwendung extrahiert werden. Die offline Daten können auch lokal editiert und wieder synchronisiert werden und ebenfalls können nun Routing und Geocoding lokal auf dem mobilen Gerät durchgeführt werden. Neu ist auch die Möglichkeit, Vektor-Tiles in der Karte zu verwenden, die sowohl online als auch offline zur Verfügung gestellt werden können. Vektor-Tiles haben den Vorteil, dass sie schneller und kleiner sind und bei hoher Auflösung besser aussehen. Mobile-Map-Packages, die mit ArcGIS Pro erstellt werden, können ebenso in der App verwendet werden.

3D-Daten werden in dieser Version Beta 2 noch nicht unterstützt. Dies wird dann in der Final Version von Quartz hinzukommen.

 

Alle Neuerungen findet man hier:

https://developers.arcgis.com/ios/beta/swift/guide/release-notes.htm

 

Weitere Informationen unter:

https://blogs.esri.com/esri/arcgis/2016/03/25/the-arcgis-runtime-sdks-for-ios-and-android-quartz-beta-2-is-now-available/

Die neue Generation der ArcGIS Runtime SDKs macht inzwischen Fortschritte und so wurde für Android nun ein Beta 2 des Quartz Releases veröffentlicht. Aufgrund der umfangreichen architektonischen und funktionalen Änderungen hatte sich die Veröffentlichung etwas verschoben.

Im Gegensatz zum Beta 1, in dem nur Online-Daten verwendet werden konnten, können nun mit Beta 2 auch Offline-Daten genutzt werden, die entweder mit ArcGIS Desktop erstellt oder per Task von einem Service zur offline Verwendung extrahiert werden. Die offline Daten können auch lokal editiert und wieder synchronisiert werden und ebenfalls können nun Routing und Geocoding lokal auf dem mobilen Gerät durchgeführt werden. Neu ist auch die Möglichkeit, Vektor-Tiles in der Karte zu verwenden, die sowohl online als auch offline zur Verfügung gestellt werden können. Vektor-Tiles haben den Vorteil, dass sie schneller und kleiner sind und bei hoher Auflösung besser aussehen. Mobile-Map-Packages, die mit ArcGIS Pro erstellt werden, können ebenso in der App verwendet werden.

3D-Daten werden in dieser Version Beta 2 noch nicht unterstützt. Dies wird dann in der Final Version von Quartz hinzukommen.

 

Alle Neuerungen findet man hier:

https://developers.arcgis.com/android/beta/guide/release-notes-android.htm

 

Weitere Informationen unter:

https://blogs.esri.com/esri/arcgis/2016/03/25/the-arcgis-runtime-sdks-for-ios-and-android-quartz-beta-2-is-now-available/

Vom Web AppBuilder for ArcGIS Developer Edition ist die Version 2.0 beta erschienen, mit der man nun auch Web Apps erstellen kann, die 3D Daten anzeigen.

 

WebAppBuilder2.0beta.png

 

Dazu verwendet diese Version intern das ArcGIS JavaScript API v4.0 beta 3, mit der 3D Web-Szenen angezeigt werden können. Programmatisch können die wichtigen Eigenschaften der Web-Szene wie Viewpoint, Extent, Zoomstufe, Maßstab, Camera-Einstellungen usw. gesetzt werden.

Im Bereich 2D-Karten ist die Funktionalität von der bisherigen Version übernommen worden. Für 3D-Karten sind verschiedene neue Widgets hinzugekommen wie ein Kompass-Widget, ein 3D-Koordinaten-Widget, ein Environment-Widget, ein 3D-Layer-List-Widget, ein Full-Screen Widget, ein 3D-Navigations-Widget, ein Slides-Widget und ein Such-Widget für 3D-Daten.

 

Eine beispielhafte 3D-Web-App, die mit dem neuen Web AppBuilder erstellt wurde, kann man sich unter folgendem Link anschauen:

http://webappbuilderdemos.s3-website-us-east-1.amazonaws.com/waterfront/

 

Weitere Informationen auch auf dem Esri Blog:

https://blogs.esri.com/esri/arcgis/2016/01/29/web-appbuilder-for-arcgis-is-now-supports-3d-beta/

 

Diese Version des Web AppBuilders ist auf der Esri Early Adopter Webseite erhältlich:

http://j.mp/WABDevEd2

Bei der neuen Version 10.2.7 des SDKs handelt es sich um ein Bugfix-Release, das funktional keine Neuerungen mit sich bringt, sondern nur einige kleinere Fehler behebt.

Diese sind in den Release-Notes aufgeführt:

https://developers.arcgis.com/android/guide/release-notes.htm

 

Die erforderliche Android Version für das SDK ist 4.0.1 (API Level 14) oder höher.

Die empfohlene Entwicklungsumgebung ist das Android Studio.

 

Weitere Informationen auch unter:

http://blogs.esri.com/esri/arcgis/2015/10/01/arcgis-runtime-sdk-for-android-v10-2-7-released/

 

Das ArcGIS Runtime SDK for Android 10.2.7 ist hier erhältlich:

https://developers.arcgis.com/android/

Die neue Generation der ArcGIS Runtime SDKs ist auf dem Weg und für die Plattformen Android, iOS und Java ist nun jeweils eine Beta 1 von dieser Version veröffentlicht worden.

Das Quartz Release wird die bisher größten Änderungen und Neuerungen in den Runtime SDKs bringen. Es ist von Grund auf mit einer neuen Architektur erstellt worden und wird eine bessere Konsistenz zwischen den einzelnen Runtime SDKs mit sich bringen.

Die Unterstützung von 3D Daten in der Karte ist das besondere Highlight im neuen Quartz-Release.

 

Neuerungen im ArcGIS Runtime SDK for Android sind u.a. die Trennung von Map und MapView, eine bessere Portal-Integration und die Verwendung von Graphics in Overlays. Alle Neuerungen findet man hier:

https://developers.arcgis.com/android/beta/guide/release-notes-android.htm

 

Das Beta 1 hat im Moment noch einen reduzierten Funktionsumfang. Nicht verfügbar sind dabei die Offline-Funktionalitäten (kommt in Beta 2), Routing, Geocoding und Analysen, sowie Tasks wie Query, Find und Identify. Dies wird bis zum Final Release nach und nach wieder hinzukommen.

 

Weitere Informationen unter:

http://blogs.esri.com/esri/arcgis/2015/08/26/quartz-beta-1-is-now-available/

Die neue Generation der ArcGIS Runtime SDKs ist auf dem Weg und für die Plattformen iOS, Android und Java ist nun jeweils eine Beta 1 von dieser Version veröffentlicht worden.

Das Quartz Release wird die bisher größten Änderungen und Neuerungen in den Runtime SDKs bringen. Es ist von Grund auf mit einer neuen Architektur erstellt worden und wird eine bessere Konsistenz zwischen den einzelnen Runtime SDKs mit sich bringen.

Die Unterstützung von 3D Daten in der Karte ist das besondere Highlight im neuen Quartz-Release.

 

Neuerungen im ArcGIS Runtime SDK for iOS sind u.a. die Trennung von Map und MapView, eine bessere Portal-Integration und die Verwendung von Graphics in Overlays. Alle Neuerungen findet man hier:

https://developers.arcgis.com/ios/beta/swift/guide/release-notes.htm

 

Das Beta 1 hat im Moment noch einen reduzierten Funktionsumfang. Nicht verfügbar sind dabei die Offline-Funktionalitäten (kommt in Beta 2), Routing, Geocoding und Analysen, sowie Tasks wie Query, Find und Identify. Dies wird bis zum Final Release nach und nach wieder hinzukommen.

 

Weitere Informationen unter:

http://blogs.esri.com/esri/arcgis/2015/08/26/quartz-beta-1-is-now-available/

Die neue Generation der ArcGIS Runtime SDKs ist auf dem Weg und für die Plattformen Java, Android und iOS ist nun jeweils eine Beta 1 von dieser Version veröffentlicht worden.

Das Quartz Release wird die bisher größten Änderungen und Neuerungen in den Runtime SDKs bringen. Es ist von Grund auf mit einer neuen Architektur erstellt worden und wird eine bessere Konsistenz zwischen den einzelnen Runtime SDKs mit sich bringen.

Die Unterstützung von 3D Daten in der Karte ist das besondere Highlight im neuen Quartz-Release.

 

Neuerungen im ArcGIS Runtime SDK for Java sind u.a. die Trennung von Map und MapView, eine bessere Portal-Integration und die Verwendung von Graphics in Overlays. Alle Neuerungen findet man hier:

https://developers.arcgis.com/java/beta/guide/release-notes-java.htm

 

Das Beta 1 hat im Moment noch einen reduzierten Funktionsumfang. Nicht verfügbar sind dabei die Offline-Funktionalitäten (kommt in Beta 2), Routing, Geocoding und Analysen, sowie Tasks wie Query, Find und Identify. Dies wird bis zum Final Release nach und nach wieder hinzukommen.

 

Weitere Informationen unter:

http://blogs.esri.com/esri/arcgis/2015/08/26/quartz-beta-1-is-now-available/

Bei der neuen Version 10.2.6 des SDKs handelt es sich um ein kleineres Update, das funktional keine bedeutenden Neuerungen enthält, sondern nur einige kleinere Verbesserungen und Bugfixes.

 

Die erforderliche Android Version für das SDK ist 4.0.1 (API Level 14).

Die empfohlene Entwicklungsumgebung ist das Android Studio.

 

Weitere Informationen auch unter:

http://blogs.esri.com/esri/arcgis/2015/05/26/10-2-6-update-for-arcgis-runtime-sdk-for-android-now-available/

 

Das ArcGIS Runtime SDK for Android 10.2.6 ist hier erhältlich:

https://developers.arcgis.com/android/

In manchen Fällen hat man die Anforderung, dass man in einem Widget auf Informationen eines anderen Widgets zugreifen muss. Dann stellt sich
die Frage, wie man die Daten aus dem einen Widget für ein anderes Widget verfügbar machen kann.

Für diesen Anwendungsfall verfügt ein Widget über die Funktionen publishData(), fetchData(), fetchDataByName(), onReceiveData() und onNoData(). Diese Funktionen übernimmt ein eigenes Widget automatisch von BaseWidget.

Um die Verwendung dieser Funktionen besser zu verstehen, schauen wir uns dies an einem ganz einfachen Beispiel mit zwei Widgets an. Das
erste Widget mit Namen SetLocation dient zur Eingabe einer X/Y-Koordinate, auf die die Karte zentriert werden kann:

SetLocation.png

Das zweite Widget mit Namen GetLocation soll einfach diese X/Y-Koordinate wieder anzeigen:

GetLocation.png

Wie kommen nun die Koordinatenwerte in das zweite Widget?

In dem Widget, das die Daten sendet, also SetLocation, werden die Koordinatenwerte in zwei Input-Felder eingetragen und in einer Funktion,
die über das Anklicken des Buttons aufgerufen wird, ausgelesen. Wenn man mehrere Einzeldaten hat, kann man diese dann z.B. in einem JSON-String zusammenfassen. Um diese Daten nun für andere Widgets verfügbar zu machen, wird die Funktion publishData() aufgerufen und dieser die Daten übergeben:

PublishData.png

In dem Widget, das die Daten empfangen soll, also in GetLocation, werden die Daten mit der Funktion fetchData(widgetId) abgerufen.
Die Funktion kann z.B. in der Methode startUp() aufgerufen werden:

FetchData.png

Der Parameter widgetId ist dabei die ID des Widgets, das die Daten sendet (hier SetLocation), so wie sie in der Konfigurationsdatei config.json
der App eingetragen wurde.

Sind Daten zum Empfang vorhanden, so werden diese in der Eventhandler-Funktion onReceiveData() zur Verfügung gestellt, die man in dem
empfangenden Widget bereitstellen muss. Sind keine Daten vorhanden, wird die Eventhandler-Funktion onNoData() aufgerufen.

ReceiveData.png

In der Funktion onReceiveData() werden die übertragenen Daten als Parameter übergeben, sodass man sie hier verwenden kann, z.B. um sie
in dem Widget anzuzeigen.

Zusammenfassend noch einmal der Ablauf:

1) Im sendenden Widget die Daten mit der Funktion publishData() bereitstellen.

2) Im empfangenden Widget die Daten über die Funktion fetchData() abfragen und in der Funktion onReceiveData() auslesen und verwenden.

 

Happy coding!

In bestimmten Fällen kann es gewünscht sein, dass man in einer Web App aus einem eigenen Widget heraus wieder ein anderes Widget oder mehrere andere Widgets öffnen kann. D.h. in dem einen Widget befindet sich z.B. ein Button, über den man beim Anklicken ein anderes Widget öffnet, wie in der folgenden Abbildung gezeigt:

WidgetAusWidget1a.png

Durch Anklicken des Buttons in dem ersten Widget öffnet sich dann das zweite Widget:

WidgetAusWidget4.png

Um dies zu erreichen, muss zuerst im ersten Widget ein Button mit einem entsprechenden Icon angelegt werden. Den Button kann man z.B. in der Datei Widget.js in der Methode startup() wie folgt anlegen:

StartupCode.png

Dabei wird über DoJo-Funktionen dynamisch ein HTML-DIV Element und ein darin enthaltenes IMG Element angelegt. In einer Eventhandlermethode wird auf das Anklicken des Buttons reagiert und darin eine Funktion aufgerufen, die das zweite Widget aufruft:

ShowWidgetCode.png

Hier wird zuerst die Widget-Konfiguration des zu öffnenden Widgets ermittelt und dann über den PanelManager das Widget über die Funktion showPanel() aufgerufen. Zu beachten ist dabei, dass der PanelManager im define-Block des Widgets aufgenommen wird.

 

Happy coding!

Die aktuelle Version 10.2.5 des ArcGIS Runtime SDK for Android ist auf die Verwendung mit dem Android Studio als Entwicklungsumgebung ausgelegt. Es fand somit gegenüber der Vorgängerversion ein Wechsel der primär empfohlenen Entwicklungsumgebung von Eclipse zum Android Studio statt, was darauf zurückzuführen ist, dass das Android Studio inzwischen die offizielle Android-Entwicklungsumgebung ist.

Daher sollten diejenigen, die bisher mit Eclipse ihre ArcGIS for Android Projekte entwickelt haben, so bald wie möglich auf Android Studio wechseln.

Eine detailierte Anleitung, wie man bestehende Eclipse-Projekte zum Android Studio portieren kann, ist der folgenden Webseite zu entnehmen:

http://blogs.esri.com/esri/arcgis/2014/12/19/migrating-to-android-studio/

 

Diejenigen, die aktuell noch nicht zum Android Studio wechseln können, haben die Möglichkeit, das Eclipse Plugin des ArcGIS Runtime SDK for Android 10.2.4 weiter zu verwenden. Ab der Version 10.2.5 und später wird allerdings das Eclipse-Plugin des SDKs nicht mehr unterstützt bzw. ausgeliefert.

 

Eclipse kann weiterhin als Entwicklungsumgebung verwendet werden

 

Eclipse kann aber auch mit der ArcGIS for Android Version 10.2.5 und höher weiter verwendet werden, indem man das Projekt manuell einrichtet. Dazu läd man das SDK separat herunter und nimmt beim Anlegen eines neuen Android-Projekts ein paar Einstellungen vor.

Die einzelnen Schritte dazu kann man der folgenden Seite entnehmen:

http://blogs.esri.com/esri/arcgis/2015/01/15/the-state-of-eclipse-with-arcgis-android-v10-2-5/

Mit der Version 10.2.5 des ArcGIS Runtime SDK for Android wird die Entwicklung mit dem Android Studio von Google unterstützt, das nun die offizielle IDE für die Erstellung von Android Apps ist.

Das Eclipse-Plugin für das ArcGIS Runtime SDK for Android wird nicht mehr weiterentwickelt und auch nicht mehr mit dem SDK ausgeliefert. Es ist aber weiterhin möglich, Projekte mit Eclipse zu entwickeln.

Wer nun von Eclipse auf das Android Studio wechseln will, findet eine Anleitung zur Migration von Android-Projekten unter:

http://blogs.esri.com/esri/arcgis/2014/12/19/migrating-to-android-studio/

 

Funktional gibt es in der Version 10.2.5 nur kleinere Änderungen und Bugfixes.

Das SDK unterstützt auch das neue Android 5.0 Lollipop.

Alle Neuerungen unter:

https://developers.arcgis.com/android/guide/release-notes.htm

Das SDK bietet eine verbesserte Untersützung für ArcGIS Image Services, die Möglichkeit Sub-Layer in dynamischen Map-Services zu verwenden, eigene Renderer zu erzeugen und eine Verbesserung bei der Navigation in der Karte.

Alle Neuerungen unter:
https://developers.arcgis.com/os-x/objective-c/guide/whats-new.htm

Das SDK ist erhältlich unter:
https://developers.arcgis.com/os-x/

Filter Blog

By date: By tag: