Schnittstellen

Interface description REST

Die REST-Schnittstelle von atlasFX wird typischer Weise über http angesprochen. Sollte das atlasFX hinter einem Proxy mit SSL-Verschüsselung geschützt sein, kann ebenfalls https verwendet werden. In dieser Dokumentation wird durchgängig http verwendet, obwohl die Aufrufe gegebenenfalls auch über https möglich sind.

Search Operation

URL:

http://<atlasFX-url>/spring/rest/maps/<mapId>/search

Parent Ressource:

Map

Description:

Diese Operation stellt eine Suchfunktionalität zu Verfügung, die es einbindenden Webseiten erlaubt ein vorschlagslistenunterstützendes Suchfeld mit Icons und Verlinkung zu einer atlasFX Karte zu implementieren.

Ressource Hierarchy

  • MapList http://<atlasFX-url>/spring/rest/maps

  • Map /<mapId>

  • Search Operation /search

Parameters

Parameter

Details

searchTerm

Hier soll die Benutzereingabe bzw. der Suchbegriff übergeben werden

urlTemplate

In diesem Parameter soll die Vorlage (Template) für die aufzurufende Url übergeben werden. Die Aufrufmöglichkeiten sind bei den jeweiligen Clients dokumentiert. Diese Vorlage kann die drei Template-Variablen $mapId$, $layerId$ und $featureId$ enthalten die für jedes Ergebnis inividuell ersetzt werden. Dieser Mechanismus ermöglicht eine maximale flexibilität bei der Konfiguration der Karte. Damit sind alle Funktionalitäten der verschiedenen Clients in Kombination mit sämtlichen Netzwerkkonfigurationsmöglichkeiten verwendbar.

useDefaultIcons

Dieser Parameter ist optional. Hier kann gesteuert werden, ob die atlasFX Default Icons verwendet werden sollen, falls kein Icon am Layer konfiguriert wurde. Gültige Werte sind hier true oder false.

JSON Response Syntax

[
 {
   "preview" : <previewText>,
   "url" : <mapClientUrl>,
   "iconId" : <iconId>
 } //, ...
]

Example

Es folgt ein Beispiel, das online unter http://roadshow.alta4cloud.com/atlasfx/js/index.html?mapId=530 nachvollzogen werden kann.

Erläuterung zum Testsystem

<atlasFX-url>

http://roadshow.alta4cloud.com/atlasfx

Dies ist die Url unter der der Context der atlasFX-Webapplication verfügbar ist.

<mapId>

530

In diesem Beispiel verwenden wir die Karte mit der Id 530. Diese Id identifiziert eine atlasFX-Karte. Sie kann einfach im atlasFX CMS abgelesen werden.

Zunächst müssen die Parameter bestückt werden. Der erste Parameter searchTerm ist tivial. Hier wird der eingegebenen Suchbegriff übergeben. Bei verwendung von Http Get ist zu beachten, dass die Parameter für die Verwendung in der Url encodiert werden müssen (Url Encoding). Das atlasFX Backend verwendet UTF-8 als Uri Encoding. Daher müssen Umlaute zum Beispiel 'ö' als %C3%B6 kodiert werden.

Als zweiten Parameter muss ein Template für die zu generierenden Urls übergeben werden. Mit dieser Schnittstelle können Sie beliebige Urls generieren lassen, die mit Werten des Suchergebnisses Parametrisiert werden. In diesem Beispiel soll einfach der atlasFX JS-Client mit dem gefundenen Objekt aufgerufen werden. Die erste Herausforderung besteht darin, dass das atlasFX-Backen nicht weiß, unter welcher Url es vom Internet aus erreichbar ist. Daher geben wir die <atlasFX-url> im Template Parameter mit. In diesem Beipiel wäre das http://roadshow.alta4cloud.com/atlasfx. Da die atlasFX-url alleine nicht ausreicht um den JavaScript-Client aufzurufen wird an den Pfad noch /js/index.html angehangen. Das Url Template sieht nun wie folgt aus:http://roadshow.alta4cloud.com/atlasfx/js/index.html.

Weiterhin ist es erforderlich dem JS-Client eine MapId zu übergeben. Hier kommt wieder unsere Beispie-MapId 530 zum Einsatz. Es ist wichtig die gleiche Karte aufzurufen, auf der auch die Suche selbst durchgeführt worden ist, da die Suchergebnisse eindeutig einer Karte zuzuordnen sind und in einer anderen Karte nicht aufgerufen werden können. Die MapId wird dem Client als Url Parameter mapId übergeben. Für weitere Informationen zum Aufruf des Clients schauen Sie bitte in der Dokumentation des Clients nach. Sie könne übrigens auf den Flex-Client nach gleichem Schema aufrufen. Hierzu ist eine etwas andere Url zu verwenden. Mit der MapId sieht unser Url Template nun so aus: http://roadshow.alta4cloud.com/atlasfx/js/index.html?mapId=530. Um Fehler zu vermeiden, können Sie auch die Template-Variable $mapId$ verwenden. Diese Variable wird durch die Id der Karte ersetzt auf der Sie die Suche ausführen. Unter Verwendung der Template-Variablen sieht das Url Template nun so aus: http://roadshow.alta4cloud.com/atlasfx/js/index.html?mapId=$mapId$. Nach der Prozessierung der Anfrage an die REST-Schnittstelle ist die Template-Variable durch den aktuellen Wert ersetzt worden. Für eine Anfrage unter Verwendung der Karte 530 würde die zurückgegebene Url nun sohttp://roadshow.alta4cloud.com/atlasfx/js/index.html?mapId=530 zurückgegeben werden. Meistens ist es Sinn und Zweck dieser Suchanfrage das gefundene Objekt, im GIS-Kontext Feature genannt in einer Karte darzustellen. Daher muss das darzustellende Feature an den Karten-Client übergeben werden. Der atlasFX-JS-Client stellt dazu die Url Parameter mapLayerId und featureId bereit. In atlasFX wird ein Feature durch eine Id, die innerhalb eines Layers eindeutig ist, und die entsprechende Layer Id eindeutig beschrieben. Diese beiden Ids stehen ebenfalls als Template-Variable zu Verfügung. Ergänzen wir nun abschießend unser Url Template zu http://roadshow.alta4cloud.com/atlasfx/js/index.html?mapId=$mapId$%26featureId=$featureId$%26mapLayerId=$layerId$. Bitte beachten Sie hier, dass wir das &-Zeichen innerhalb des Url Templates mit %26 escaped wurde, damit dieses nicht beim Aufruf der Suchschnittstelle ausgewertet wird.

Den optionalen Parameter useDefaultIcons lassen wir im ersten Beispiel weg.

Beispiel

Beispiel Parameter

Nehmen wir an, der Benutzer tippt 'Martin-Grundschule' in das Suchfeld ein.

Daraus ergibt sich folgender Aufruf der atlasFX-REST-Schnittstelle

http://roadshow.alta4cloud.com/atlasfx/spring/rest/maps/530/search?searchTerm=Martin-Grundschule&urlTemplate=http://roadshow.alta4cloud.com/atlasfx/js/index.html?mapId=$mapId$%26featureId=$featureId$%26mapLayerId=$layerId$"

Die Antwort des Suchservice

[
 {
   "iconId": 4,
   "preview": "Trier,GS Trier Martin",
   "url": "http://roadshow.alta4cloud.com/atlasfx/js/index.html?mapId=530&featureId=657&mapLayerId=2889"
 }
]

Hier ist zu erkennen, dass lediglich ein Objekt zurückgeliefert wurde. Das Ergebnisobjekt weist die drei Properies iconId, previewund url auf. Wie Sie das Icon anhand seiner Id abfragen können wird im Abschnitt Icon Ressource erläutert. Das Property preview enthält eine Zeichenkette die das Ergebnis beschreibt. Sie kann zum Beispiel in der Vorschlagsliste dargestellt werden. Das Propertyurl enthält die Url, die sich durch Variablenersetzung im Url Template entstanden ist. Diese kann zum Beispiel aufgerufen werden um den Karten-Client zu starten.

A demo application is available.

Icon Ressource

URL

http://<atlasFX-url>/spring/rest/icons/<iconId>

Parent Ressource

IconList

Description

Diese Ressource enthält die Bilddaten eines Icons.

Ressource Hierachy

  • IconList http://<atlasFX-url>/spring/rest/icons

  • Icon /<iconId>

Parameters

Diese Ressource unterstützt keine Url Parameter.

Response

Die Bilddatei wird mit binär zurückgegeben. Die Responseheadder werden entsprechend gesetzt, sodass die Url direkt im Browser verwendet werden kann

Example

Es folgt ein Beispiel, das online unter http://roadshow.alta4cloud.com/atlasfx/js/index.html?mapId=530 nachvollzogen werden kann.

Erläuterung zum Testsystem

<atlasFX-url>

http://roadshow.alta4cloud.com/atlasfx

This is the url where the context of atlasFX web application is available.
<iconId>
4
In this example we try to call the icon  with the ID 4.

The icon can simply be called at the URL http://roadshow.alta4cloud.com/atlasfx/spring/rest/icons/4.

Basis Features

Die externe Programmierschnittstelle des atlasFX Javascript Webclients dient der programmatischen Steuerung durch externe Skripte. Sie stellt über das dojo utility atlasExternalInterface („com/alta4/atlas/extensions/AtlasExternalInterface“) Funktionen zur Steuerung des Verhaltens der Kartenanwendung bereit.

Name

Parameter

Rückgabetyp

Beschreibung

configureLayerQuery

  • layerId: int

  • config: Map

  • suppressRefresh?: boolean

 

Diese Methode ist deprecated und wird bald entfernt. setLayerFieldFilter ist statt dessen zu benutzen.

Dies ermöglicht es den Query für Feature-Layer zu spezifizieren.

Beispiel Attribute für config:

  • *where: string => Eine SQL Where-Klausel um die Feature einzugrenzen

  • orderByFields: string => ?

  • outFields: string => Kommaseparierte Liste an Feldern, die zusätzlich geliefert werden sollen. * gibt alle Felder zurück.

  • geometry: Map => Wird automatisch auf den Map Extent gesetzt. überschreibt man es mit null wird der Extent ignoriert.

* Ist für layerId bereits ein FieldFilter gesetzt (siehe setLayerFieldFilter), so wird where ignoriert.

Ist suppressRefresh true, so wird ein Neuzeichnen verhindert.

setLayerFilter

  • layerId: int

  • whereExpression: string

  • suppressRefresh?: boolean

 

Diese Methode ist deprecated und wird bald entfernt. setLayerFieldFilter ist statt dessen zu benutzen.

Dies ist ein Alias für configureLayerQuery(layerId, {where: whereExpression}, suppressRefresh);

Ist suppressRefresh true, so wird ein Neuzeichnen verhindert.

setLayerFieldFilter

  • layerId: int

  • fieldName: string

  • filter: SqlGenFilter

  • suppressRefresh?: boolean

string

Unterschiede zu setLayerFilter:

  • Es wird ein SqlGenFilter objekt benötigt, kein SQL String.

  • Filter werden an die Kombination <layerId und Feldname> gebunden, nicht nur an layerId.

    • Dadurch können Filter unabhängig voneinander für verschiedene Feldnamen definiert werden.

    • Diese werden automatisch durch sqlGen.AND und-verknüpft.

  • Bei Aufruf wird ein Dojo Event veröffentlicht. Man kann auf dieses hören:

    • topic.subscribe(atlas.events.ATLAS_LAYER_FIELD_FILTER_UPATE, function(layerId, fieldName, filter, finalWhere) {...});

  • Zurückgegeben wird die berechnete Where-Klausel für den Layer (als string).

Ruft man im Event Callback wieder setLayerFieldFilter auf, so entsteht eine Endlosschleife.
Sollte dies notwendig sein, so wird empfohlen, dies mit setTimeout oder Ähnlichem auf einen späteren Zeitpunkt zu verschieben.

Ist suppressRefresh true, so wird ein Neuzeichnen verhindert.

getExtentWebMercator

 

esri/geometry/Extent

Liefert den Extent der Karte in WebMercator-Koordinaten.

getExtentGeographic

 

esri/geometry/Extent

Liefert den Extent der Karte in Längen- und Breitengrad.

setCenter

  • x: number

  • y: number

dojo/Deferred

Zentriert die Karte auf den übergebenen Punkt. Die Koordinaten müssen im gleichen Koordinatensystem wie die Map sein.

setCenterWgs84

  • lat: number

  • long: number

dojo/Deferred

Zentriert die Karte auf den übergebenen Punkt. Die Koordinaten sind als Längen- und Breitengrad anzugeben.

setScale

  • scale: number

dojo/Deferred

Setzt die Skalierung der Karte. Wenn die Karte im Maßstab 1 : 50.000 angezeigt werden soll, muss für den Parameter scale der Wert 50000 gesetzt sein.

getScale

 

number

Liefert die aktuelle Skalierung der Karte.

setCenterAndZoom

  • x: number

  • y: number

  • levelOrFactor: number

dojo/Deferred

Kombination aus obigen Funktionen, wobei die Koordinaten aus dem Koordinatensystem der Karte angenommen werden und wahlweise ein konfigurierter Zoomlevel oder Faktor angegeben wird.

setCenterAndScale

  • mapPoint: esri/geometry/Point

  • scale: number

dojo/Deferred

Wie oben. Hier wird aber ein Skalierungsfaktor angegeben.

setInfoWindowLinkClickCallback

  • callback: function

 

Wird in einem InfoBubble ein Link aufgerufen wird zuerst die Callback-Methode aufgerufen. callback(url): Callback gibt die angeklickte URL zurück. Die Callback-Methode muss false zurück geben, falls das Ausführen des Links unterdrückt werden soll.

wgs84ToWebMercator

  • lat: number

  • lon: number

esri/geometry/Point

Rechnet Längen- und Breitengrad in WebMercator-Koordinaten um.

refreshLayers

 

 

Veranlasst ein Neuzeichnen aller Layer.

registerGraphicCallback

  • layerId: int

  • callback: function

 

Registriert auf dem angegebenen Layer einen Klick-Callback für darauf befindliche Grafiken.

removeGraphicCallback

  • layerId: int

 

Entfernt die mit obiger Funktion registrierten Callback-Routinen.

showFeature

  • layerId: int

  • featureId: int

  • showInfoBubble: boolean,

  • scale: number

 

Zentriert die Karte auf das durch layerId und featureId identifizierte Feature. Mit dem booleschen Parameter showInfoBubble kann eingestellt werden, ob das zugehörige Info-Fenster angezeigt werden soll, sofern diese Eigenschaft des Features konfiguriert ist. Der scale-Parameter ist nur für Punktfeatures definiert und optional. Geometrien, die eine Ausdehnung besitzen (Flächen, Linien), werden immer in maximaler Zoom-Stufe dargestellt aber so, dass sie noch ganz auf der Karte liegen.

setMouseFeatureInteraction

  • layerTypes: string | Array<string>

  • event: string

  • procedure: string

  • handler: function

 

Erweitert oder ersetzt die voreingestellte Maus-Interaktion mit Kartenfeatures. Zulässige Parameterwerte:

  • layerTypes: Die zu überwachenden Layer Typen.

    • Einer der folgenden Strings oder eine Kombination daraus als Array:
      POINT, LINE, POLYGON, CLUSTER, SINGLE_FEATURE_CLUSTER
      Die letzten beiden Werte beziehen sich auf geclusterte Maßstabsbereiche. Es wird unterschieden zwischen „echten“ Clustern und solchen, die nur ein einzelnes Feature enthalten und wie ein normales Punktfeature dargestellt werden.

  • event: Die zu behandelnden Mausereignisse.

    • Einer der folgenden Strings:
      mouseOver, mouseOut, click

  • procedure: Wie die übergebene handler Funktion eingehängt werden soll.

    • before, after, replace
      Für den Fall, dass der eingehängte Handler nach der default-Funktion ausgeführt wird oder diese ersetzt, wird das Maus-Event dem handler übergeben.

enableOptionalTool

  • toolIdentifier: string

  • toolPublicName: string

  • config: Map

  • callback: function(tool)

 

Lädt und schaltet ein optionales Tool ein.

Der Aufrufer kann unter dem durch toolPublicName angegebenen Namen ein Modul (toolIdentifier) registrieren und mit einer Konfiguration config initialisieren. Nach erfolgreicher Initialisierung wird der callback aufgerufen und das Tool kann benutzt werden.

Gibt es verschiedene Caller, müssen sie verschiedene global gültige Namen verwenden oder die Funktion enableOptionalToolEx benutzen.

enableOptionalToolEx

  • toolIdentifier: string

  • config: Map

  • callback: function(tool)

 

Ähnlich zu enableOptionalTool. Hierbei wird das Tool jedoch nur einmal unter dem Namen toolIdentifier registriert und initialisiert. Bei nachfolgenden Aufrufen wird dann lediglich eine neue callback-Funktion registriert und aufgerufen.

atlasHelper ist ein global verfügbares Objekt, was automatisch mit dem atlasLoader zur verfügung gestellt wird.

Methoden

Name

Parameter

Rückgabetyp

Beschreibung

init

  • config: Map

-

Initialisiert Platzhalter entsprechend der Konfiguration. Siehe Initialisierung.

replace

  • str: string

string

Ersetzt Platzhalter im übergebenen String. Siehe Platzhalter ersetzen.

baseUrl

  • suffix: string

string

Alias für replace("{atlas}") + suffix

handleRelativeBaseUrl

  • url: string

string

Ersetzt ../ durch baseUrl("/")

jsUrl

  • suffix: string

string

Alias für replace("{atlas_js}") + suffix

springUrl

  • suffix: string

string

Alias für replace("{atlas_spring}") + suffix

handleRelativeSpringUrl

  • url: string

string

Ersetzt ../spring/rest/ durch restUrl("/")

restUrl

  • suffix: string

string

Alias für replace("{atlas_rest}") + suffix

restIconUrl

  • iconId: string

string

Alias für restUrl("/icons/image/") + iconId

proxyUrl

  • suffix: string

string

Alias für replace("{atlas_proxy}") + suffix

localUrl

  • suffix: string

string

Alias für replace("{local}") + suffix

strEndswith

  • str: string

  • suffix: string

boolean

Prüfen, ob ein String mit einem suffix endet.

getParameters

 

Map<string, string>

Gibt eine Map zurück, welche die GET Parameter wiederspiegelt.

transformToAssocArray

  • str: string

Map<string, string>

Nimmt einen String, der wie GET Parameter zusammen gesetzt ist und erzeugt daraus eine Map.

Bei den Url Methoden wird erwartet, dass ein führendes Slash mit angegeben wird. z.B. atlasHelper.localUrl("/index.php");

Initialisierung

atlasHelper.init(config) muss nur dann aufgerufen werden, wenn Optionen überschrieben werden sollen.

Sofern es aufgerufen wird, sollte dies noch vor dem Starten des atlasLoaders geschehen.

Name

Default

Beschreibung

backendUrl

Wird aus dem Script Tag von atlas_loader.js erzeugt

Die Url zum atlasFX Backend

dojoTheme

claro

Name des Dojo Themes

Platzhalter ersetzen

Mit der Methode atlasHelper.replace(str) lassen sich Platzhalter ersetzen. Z.B.:

atlasHelper.replace("Wir arbeiten mit ESRI API {arcgis_version}") liefert "Wir arbeiten mit ESRI API 3.11"

Folgende Variablen stehen zur Verfügung:

Platzhalter

Beispiel

Beschreibung

{protocol}

http:

document.location.protocol

{dojotheme}

claro

Name des Dojo Themes

{arcgis_version}

3.11

esri Javascript Version

{arcgis}

http://js.arcgis.com/3.11

Pfad zur esri Javascript API

{puredojo}

http://js.arcgis.com/3.11/dojo

Pfad zu einer reinen Dojo API

{atlas}

http://meinedomain.de/atlasfx

Pfad zum atlasFX Backend

{atlas_js}

http://meinedomain.de/atlasfx/js

Pfad zur atlasFX Javascript API

{atlas_spring}

http://meinedomain.de/atlasfx/spring

Pfad zum atlasFX Spring Backend

{atlas_rest}

http://meinedomain.de/atlasfx/spring/rest

Pfad zum atlasFX REST Backend

{atlas_proxy}

http://meinedomain.de/atlasfx/s3tile_proxy

Pfad zum atlasFX S3 Tile Proxy

{local}

http://meinedomain.de

Pfad zur Einbindenden HTML Seite, ohne Datei

Der atlasLoader wird genutzt um den atlasFX Javascript Client zu laden.

Einbindung

<pfad_zu_atlasfx_js>/atlas_loader.js wird vor allen anderen Javascript Dateien eingebunden. Mehr Dateien vom atlasFX müssen nicht manuell eingebunden werden, dies geschieht automatisch.

Danach wird das Script konfiguriert und der Prozess gestartet.

Sollte es notwendig sein, die atlasFX Backend URL oder das Dojo Theme zu ändern, so muss dies (optional) vorher mit dem atlasHelper konfiguriert werden:

atlasHelper.init({/* Konfigurationsobjekt */});

Danach wird der atlasLoader mit einer Konfiguration gestartet:

atlasLoader.run({/* Konfigurationsobjekt */});

Das Konfigurationsobjekt

Das an atlasLoader.run übergebene Objekt kann mit folgenden optionen gefüttert werden:

Name

Typ

Default

Beschreibung

supportedBrowsers

Map

siehe atlas_loader.js

Eine Map an unterstützten Browser-Versionen. Hier kann die minimalversion und der Anzeigestring konfiguriert werden. Ist die minVersion kleiner als die von atlasFX, so wird die von atlasFX genommen. Siehe atlas_loader.js für ein Beispiel.

noAtlas

boolean

false

Wenn dieser Wert true ist, wird nur dojo geladen, aber kein atlasFX Client.

useLogger

boolean

false

Wenn dieser Wert true ist, wird ein Loggerfenster zur verfügung gestellt, welches über Strg + Shift + Backspace einzusehen ist. Bei einem Wer von false warden Meldungen nur in die Browserkonsole ausgegeben.

extraConfigs

Array<string | function>

-

Ein Array an URLs (Javascript oder CSS Dateien) und/oder Funktionen die Synchronisiert geladen bzw. aufgerufen werden nachdem die atlasFX Konfigurationsdateien geladen wurden aber bevor weitere esri, dojo und atlasFX Resourcen geladen werden.

resources

Array<string | function>

-

Ein Array an URLs (Javascript oder CSS Dateien) und/oder Funktionen die Synchronisiert geladen bzw. aufgerufen werden nachdem die atlasFX Resourcen geladen wurden aber bevor atlasFX initialisiert wird.

templateParentId

string

atlasBody

Die ID des HTML Elements, in welches der atlas Eingebettet werden soll.

getTemplateLoader

function

-

Wird aufgerufen um den Dojo Klassenpfad zu bekommen, welcher genutzt wird um das atlasFX Template zu laden.

onBrowserCheck

function

Eine Implementierung, die den Benutzer warnt.

Dieser Callback wird aufgerufen sobald der Browserchecker initialisiert ist. Dieser Callback erhält 2 Parameter:

  • browserChecker: Eine Instanz des BrowserCheckers.

  • continueLoad: Ein Callback, der Aufgerufen werden muss, sobald es weiter gehen soll mit dem Laden.

onResourcesLoaded

function

-

Wird aufgerufen nachdem alle Ressourcen geladen wurden.

mapReadyCallbacks

Array<function>

-

Ein Array an MapReady Callbacks, die direkt vor onResourcesLoaded() zum atlasFX hinzugefügt werden.

Beispiel

Beispiel Konfiguration
<script src="http://meinedomain.de/atlasfx/js/atlas_loader.js" type="text/javascript" id="atlasLoaderScriptTag"></script>
<script type="text/javascript">
// Die erste Zeile ist nur notwendig, wenn der Javascript Client getrennt vom Backend installiert wurde.
atlasHelper.init({ backendUrl: document.location.protocol + "//frontendvm03.trier.alta4.com:8080/atlasfx" });
// atlasFX initialisieren
atlasLoader.run({
useLogger: true,
extraConfigs: ["{local}/extra.js"],
resources: ["{atlas_js}/mobile-detect.js"],
templateParentId: 'atlasBody',
getTemplateLoader: function() {
var loaders = {
"tablet": "com/alta4/atlas/client/views/template/TemplateLoaderMobileTablet",
"mobile": "com/alta4/atlas/client/views/template/TemplateLoaderMobile",
"desktop": "com/alta4/atlas/client/views/template/TemplateLoaderDesktop"
};
var key = atlasHelper.getParameters()["mobileMode"];
if(!key || !loaders.hasOwnProperty(key)) {
var mobileDetector = new MobileDetect(navigator.userAgent);
if (mobileDetector.tablet() !== null) {
key = "tablet";
} else if (mobileDetector.mobile() !== null) {
key = "mobile";
} else if(mobileDetector.os() !== null) {
// Wenn ein mobil os erkannt wurde, das gerät aber weder als tablet noch als mobile erkannt wurde
// Prüfe ob im user-agent das wort mobile vorkommt
if(navigator.userAgent.toLowerCase().indexOf('mobile') !== -1)
key = "mobile";
else
key = "tablet";
} else {
key = "desktop";
}
}
return loaders[key];
}
});
</script>

Variablen in Pfadangaben

In allen Pfadangaben werden Platzhalter Ersetzt, um URLs zu erzeugen. Z.B.:

"{atlas_js}/mobile-detect.js" wird zu "http://meinedomain.de/atlasfx/js/mobile-detect.js"

Folgende Variablen stehen zur Verfügung:

Fehler beim Rendern des Makros 'excerpt-include': No link could be created for 'atlasHelper'.

Die globale Variable loadedConfig wird für einige Konfigurationen genutzt.

Derzeit ist die Dokumentation dazu noch unvollständig.

Name

Wert

Beschreibung

loadedConfig.forceUseAtlasProxy

true|false

Erzwingt das nutzen des atlasFX Proxies.

loadedConfig.useMapNameAsBrowserTab

true|false

Gibt an ob der Kartenname im Browsertab gesetzt werden soll

loadedConfig.mapId

<ID>

Die Map ID. Gleiche ID wie im atlasFX CMS.

loadedConfig.declutterMaxCount

<Anzahl>

Maximale Anzahl an sichtbaren POIs damit das Decluttering noch ausgeführt wird.
Überschreiten die sichtbaren POIs diesen Wert, wird das Decluttering nicht durchgeführt

loadedConfig.labellingMaxCount

<Anzahl>

Analog zu declutterMaxCount, nur für POI-Beschriftungen

loadedConfig.enableBrowserHistory

true|false

Bestimmt ob eine History im Browser angelegt werden soll. Dies geschieht über die URL. Hier wird ggf. ein # und entsprechende Koordianten und Layer angebenen.

loadedConfig.logLevel

  • 0: None

  • 1: Error

  • 2: Warnings

  • 3: Logs

  • 4: Info

Gibt das Log Level für die Konsole an. In das Log Fenster werden alle Logs geloggt.

Dies bedeutet logLevel = 4 logge alles; logLevel = 1 logge nur Errors; logLevel = 0 logge nichts

loadedConfig.toc.maxIconSize

<Größe>

Gibt an ob die TOC bei Start ein- oder ausgeklappt ist, sowie die maximale Kantenlänge der Icons

loadedConfig.showToc

true|false

Table of Contents anzeigen

loadedConfig.showToolbar

true|false

Toolbar anzeigen

loadedConfig.showBasemapSelector

true|false

Hintergrundkartenauswahl anzeigen

loadedConfig.showSearchBox

true|false

Suchfeld anzeigen

loadedConfig.showPrintButton

true|false

Drucken-Button anzeigen

loadedConfig.showLogo

true|false

Logo anzeigen

loadedConfig.showCopyrightString

true|false

Copyright anzeigen

loadedConfig.showLanguageSelector

true|false

Sprachauswahl anzeigen

loadedConfig.showScalebar

true|false

Maßstab anzeigen

loadedConfig.showZoomSlider

true|false

Zoom-Slider anzeigen

loadedConfig.showFullscreenButton

true|false

Fullscreen-Button anzeigen (Sinnvoll bei eingebettetem atlasFX)

loadedConfig.searchBoxDelay

<Zeit>

Wartezeit in ms bevor die Suche anschlägt (nach dem letzten Tippen).

loadedConfig.manualLayers

<Objekt>

Mit dieser Variable kann man Layer und Pseudolayer noch einmal manuell anpassen. Das Typo3 Map-Plugin nutzt dies z.B.

Beispielkonfiguration
loadedConfig.manualLayers = {
'852': { // Layer-ID eines UVR Layers
include: true, // Layer hinzufügen
showInToc: true, // In der TOC anzeigen
checked: true, // Beim Start ausgewählt
showAsGroup: true, // Als Gruppe anzeigen
expanded: true, // Gruppe aufgeklappt
label: 'Alle meine Entchen', // Label überschreiben (Leer lassen um den Originaltext zu nehmen)
uniqueValueInfos: {
'othersValue': { include: false, showInToc: true, label: '' }, // Der "sonstige" Eintrag
'evangelisch': { include: true, showInToc: true, label: 'Efangählisch' },
'katholisch': { include: true, showInToc: true, label: 'Kathoden' }
}
},
'945': { // Layer-ID eines Gruppenlayers
include: true,
expanded: false,
label: 'Woop Woop Woop',
children: {
'946': { // Layer-ID eines Sub-Layers
include: true,
expanded: true,
checked: true,
label: 'Ding Ding Ding'
}
}
}
};

Um das Laden von Code zu erleichtern, der auf den atlasFX Client zugreifen will, wurde eine simple Plugin Schnittstelle geschaffen.

Um Konflikte zu vermeiden und es zu ermöglichen Plugincode auch schon vor dem atlasLoader einzubinden, muss ein bestimmtest Format eingehalten werden.

Beispiel Konfiguration
<script type="text/javascript">//<![CDATA[
(function () {
if (!window.atlasPlugins)
window.atlasPlugins = {};
window.atlasPlugins['geocoder'] = 'my/plugin/Main';
if (!window.atlasDojoPaths)
window.atlasDojoPaths = {};
window.atlasDojoPaths['my/plugin'] = '{local}/js/my/plugin/';
})();
//]]>
</script>

  1. In Zeile 3 + 4 wird die globale Variable atlasPlugins erzeugt, sollte sie noch nicht existieren.
    Diese Variable wird vom atlasLoader ausgewertet um Plugins zu laden.

  2. Mit Zeile 5 sagen wir dem atlasLoader, dass das Plugin mit der ID myplugin geladen werden soll und zwar mit der Dojo Klasse my/plugin/Main.

  3. In Zeile 6 + 7 wird die globale Variable atlasDojoPaths erzeugt, sollte sie noch nicht existieren.
    Diese Variable wird vom atlasLoader ausgewertet dojo Pfade zu URLS zu mappen.

  4. Mit Zeile 8 sagen wir dem atlasLoader, wo der Dojo Klassenpfad my/plugin zu finden ist. Hier können die normalen Platzhalter vom atlasFX genutzt werden.

  5. Das Plugin wird direkt nach dem Aufruf von erzeugt.

Übergabe eines Konfigurationsparameters

Sollte das Plugin einen Konfigurationsparameter benötigen, so kann man diesen in einer erweiterten Syntax übergeben:

Ohne Parameter
window.atlasPlugins['geocoder'] = 'my/plugin/Main';
Mit Parameter
window.atlasPlugins['geocoder'] = {
module: 'my/plugin/Main',
param: {
text: 'So long, and thanks for all the fish.',
size: 42,
}
};

Der Wert param wird so wie er ist an den Plugin Konstruktor (als erstes und einziges Argument) übergeben.

URL-Parameter

Allgemeines

Dem atlasFX JavaScript Client können verschiedene URL Parameter übergeben werden. Alle Parameter sind optional. Der Client kann auch komplett ohne Parameter aufgerufen werden. Dann muss allerdings die Konfigurationsvariable loadedConfig.mapId mit der Id einer veröffentlichten Kartenkonfiguration belegt sein.

Search-Parameter werden mit einem Fragezeichen (?) eingeleitet und sind durch das Kaufmanns-Und (&) voneinander getrennt. Das Ändern von Search-Parametern verursacht einen Reload des Clients.

Des weiteren gibt es noch Hash-Parameter, welche nach einer Raute (#) gelistet werden. Auch hier werden Parameter durch & getrennt. Das Ändern der Hash-Parameter verursacht jedoch keinen Reload des Clients.

Beispiel:

example.com/atlasfx/js/index.html?mapId=246#scale=1155581&centerX=771317&centerY=6423171&layers=17

Aus Gründen der Historisierbarkeit und um die aktuell angezeigte Karte zu verlinken, manipuliert der Client nach der Ausführung bestimmter Aktionen die zugehörigen Hash-Parameter selbst. So wird etwa beim Zoomen der scale-Parameter oder beim Verschieben der Karte die Koordinaten des Zentrums angepasst.

Die Hash-Parameter werden nach jeder Aktion vom Client angepasst! Die hier durch den Benutzer eingetragenen Parameter werden ggf. entfernt (z.B. zoomTo). Im Anschluss an die Liste der Parameter finden sich noch weitergehende Erläuterungen und Praxistipps.

Die folgende Parameterliste enthält auch mehrstellige Werte. Sollte eine Komponente davon optional sein, muss die Auslassung explizit durch Setzen eines Kommas gekennzeichnet werden, um die Stelligkeit zu erhalten.

Die Reihenfolge der Parameter ist seit 3.0 nicht mehr von Relevanz.

Kombinationsmöglichkeiten

Die Kombinationsmöglichkeiten der Parameter sind vielseitig, und es können hier nicht alle Anwendungsfälle beschrieben werden. Wichtig ist vor allem, dass alle Aktionen nacheinander und ohne Plausibilitätsprüfung ausgeführt werden.

Wenn etwa der feature-Parameter mit einer Zoom-Stufe angegeben wird, die außerhalb des für den entsprechenden Layer eingestellten Maßstabsbereich liegt, ist das Ergebnis nicht definiert.

Ebenso resultiert eine Kombination aus search- und zoomTo-Parameter in einer doppelten Verschiebung der Karte, so dass ein eventuell gefundenes, eindeutiges Suchergebnis außerhalb des sichtbaren Bereichs liegt.

Search-Parameter

Name

Parameter

Beschreibung

mapId

<Map ID>

Dieser Parameter gibt die Map ID an. Er überschreibt die Map ID der Konfiguration loadedConfig.mapId.
Beispiele:

http://karten.alta4cloud.com/atlasfx/js/index.html?mapId=93

http://karten.alta4cloud.com/atlasfx/js/index.html?mapId=94

tocOpen

<true|false>

Dieser Parameter bestimmt ob die TOC beim Start offen oder geschlossen ist. (default true)

Beispiele:

http://karten.alta4cloud.com/atlasfx/js/index.html?mapId=94&tocOpen=true

http://karten.alta4cloud.com/atlasfx/js/index.html?mapId=94&tocOpen=false

mobileMode

<mobile|tablet|desktop>

Erzwingt die Darstellung für Mobilgeräte beim Aufruf über einen PC. Dabei sind für modus die Werte „mobile“ und „tablet“ möglich, jeweils für Smartphone- oder Tablet-Geräte.

Beispiele:

http://karten.alta4cloud.com/atlasfx/js/index.html?mapId=94&mobileMode=mobile
http://karten.alta4cloud.com/atlasfx/js/index.html?mapId=94&mobileMode=tablet
http://karten.alta4cloud.com/atlasfx/js/index.html?mapId=94&mobileMode=desktop

atlasSearch

<Suchtext>

Führt eine Suche durch. Es wird die Standard atlasFX Suche ausgeführt. Wird nur ein Suchergebnis gefunden, dann wird standardmäßig auf dieses Suchergebnis zentriert. Es wird auf den im atlasFX CMS konfigurierten Maßstab für Suchergebnisse gezoomt.

Dieser Parameter überschreibt den Hash-Parameter search, da dieser nicht genutzt werden kann wenn der Client keine Browser-History nutzen soll.

Beispiele:

http://karten.alta4cloud.com/atlasfx/js/index.html?mapId=82&atlasSearch=Kasselhttp://karten.alta4cloud.com/atlasfx/js/index.html?mapId=82&atlasSearch=Trier

Hash-Parameter

Von Anwendungsseite besteht die Möglichkeit, die Browser-History abzuschalten. Wenn diese abgeschaltet ist, werden Hash-Parameter ignoriert.

Name

Parameter

Beschreibung

basemap

<Hintergrundkartenzahl>

Hier kann angegeben werden welche Hintergrundkarte geladen wird. Dabei werden alle im CMS eingebundene Hintergrundkarte von 0 bis n durchnummeriert. Die oberste Hintergrundkarte hat die basemap-Zahl 0. Für alle darunter folgenden wird jeweils die basemap-Zahl um 1 erhöht. In der Karte entspricht dies der Reihenfolge von links nach rechts. Die Hintergrundkarten in den Slidern werden auch mitgezählt.

http://karten.alta4cloud.com/atlasfx/js/index.html?mapId=88#basemap=0
http://karten.alta4cloud.com/atlasfx/js/index.html?mapId=88#basemap=1
http://karten.alta4cloud.com/atlasfx/js/index.html?mapId=88#basemap=2
http://karten.alta4cloud.com/atlasfx/js/index.html?mapId=88#basemap=3

level

<Zoomstufe>

Bestimmt die Zoomstufe. Er hat eine Wertebereich von 1 – n. Es muss beachtet werden, dass die Zoomstufen verschiedener Hintergrundkarten unterschiedlich sein können.

Dieser Parameter wird lediglich beim initialen Laden der Karte angewendet. Bei der weiteren Verwendung wird die Zoomstufe vom Parameter "scale" überschrieben.

Beispiele:

http://karten.alta4cloud.com/atlasfx/js/index.html?mapId=94#level=4
http://karten.alta4cloud.com/atlasfx/js/index.html?mapId=94#level=10
http://karten.alta4cloud.com/atlasfx/js/index.html?mapId=94#level=15

scale

<Maßstab>

Legt den Maßstab der Karte fest. Z.B. für einen Maßstab von 1:250.000 ist der Maßstab 250000.

Beispiele:

http://karten.alta4cloud.com/atlasfx/js/index.html?mapId=94#scale=10000

http://karten.alta4cloud.com/atlasfx/js/index.html?mapId=94#scale=2000000

centerX

<X-Position>

Legt die initiale X-Position der Karte fest. Muss in Kombination mit centerY angegeben werden. Das Koordinatensystem der Position muss im gleichen wie die Karte sein.

Beispiele:

http://karten.alta4cloud.com/atlasfx/js/index.html?mapId=94#scale=288895&centerX=310000&centerY=6500000

http://karten.alta4cloud.com/atlasfx/js/index.html?mapId=94#scale=288895&centerX=810000&centerY=6500000

centerY

<Y-Position>

Legt die initiale Y-Position der Karte fest. Muss in Kombination mit centerX angegeben werden. Das Koordinatensystem der Position muss im gleichen wie die Karte sein.

Beispiele:

http://karten.alta4cloud.com/atlasfx/js/index.html?mapId=94#scale=288895&centerX=810000&centerY=6500000

http://karten.alta4cloud.com/atlasfx/js/index.html?mapId=94#scale=288895&centerX=810000&centerY=5500000

zoomTo

<X-Position>,<Y-Position>,<Maßstab>

Zoomt zu dem übergebenen Maßstab und zentriert die Karte an die übergebene Position. Die übergebene Position wird markiert. Sobald die Karte bewegt wird, verschwindet die Markierung wieder. Das Koordinatensystem der Position muss im gleichen wie die Karte sein.

Beispiele:

http://karten.alta4cloud.com/atlasfx/js/index.html?mapId=94#zoomTo=810000,5500000,288895

http://karten.alta4cloud.com/atlasfx/js/index.html?mapId=94#zoomTo=740153.7177280418,6404905.776935048,18055

zoomtoposition

<X-Position>,<Y-Position>,<Maßstab>

Die alte Schreibweise für zoomTo. Sollte nicht mehr verwendet werden.

feature

<atlasFX Layer ID>,<atlasFX Feature ID>,<InfoBubble?>,<Maßstab|auto>

Zentriert die Karte auf das übergebene Feature. Um das Feature eindeutig zu identifizieren muss die entsprechende atlasFX Layer ID und die atlasFX Feature ID angegeben werden. Der dritte optionale Parameter bestimmt ob das InfoBubble des Features geöffnet werden soll (nur falls dieses auch im atlasFX CMS konfiguriert ist).

Der vierte optionale Parameter ist der Maßstab. Er kann nur genutzt werden wenn der dritte Parameter gesetzt ist. Dieser kann auch auf auto gestellt werden. In diesem Fall wird der Maßstab der Suche genutzt.

Ist das Feature ein Polygon oder eine Polylinie dann wird auf den entsprechenden Extent gezoomt.

Ist das Feature eine Punktgeometrie, kann keine Zoomstufe bestimmt werden. Dann wird nicht gezoomt. Es wird die initiale Zoomstufe verwendet. Soll trotzdem auf eine bestimmte Zoomstufe oder einen Maßstab gezoomt werden, kann feature mit den URL Parameter level oder scale kombiniert werden.

Beispiele:

http://karten.alta4cloud.com/atlasfx/js/index.html?mapId=102#feature=339,13169,true

http://karten.alta4cloud.com/atlasfx/js/index.html?mapId=102#feature=339,20730,true

http://karten.alta4cloud.com/atlasfx/js/index.html?mapId=102#feature=339,20730,false

search

<Suchtext>

Führt eine Suche durch. Es wird die Standard atlasFX Suche ausgeführt. Wird nur ein Suchergebnis gefunden, dann wird standardmäßig auf dieses Suchergebnis zentriert. Es wird auf den im atlasFX CMS konfigurierten Maßstab für Suchergebnisse gezoomt.

Beispiele:

http://karten.alta4cloud.com/atlasfx/js/index.html?mapId=82#search=Kassel

http://karten.alta4cloud.com/atlasfx/js/index.html?mapId=82#search=Berlin

notepadId

<ID der Zeichnung>

Mit dem Map Notepad Tool kann man Zeichnungen auf die Karte legen. Diese können auf dem atlasFX Server gespeichert werden. Es wird vom Server eine entsprechende ID zurückgegeben. Mit dieser ID kann die Zeichnung später wieder geladen werden.

Beispiel:

http://karten.alta4cloud.com/atlasfx/js/index.html?mapId=98#&notepadId=4

layerIds

<Liste>

Liste von IDs der sichtbaren Layer. Das Trennzeichen ist der Punkt. Bei Layern mit unique value rendering werden sogenannten Pseudo-Layer erzeugt. Sie werden adressiert mit einer Kombination aus Layer-Id und Wert. Trennzeichen ist hier das Ausrufezeichen. Die Trennzeichen werden im Wert maskiert. Üblicherweise wird dieser Parameter nicht "von Hand" erstellt.

Beispiel: layerIds=945.946.852.852!othersValue.852!typeA.852!typeB

http://karten.alta4cloud.com/atlasfx/js/index.html?mapId=83#layerIds=209.199.200

http://karten.alta4cloud.com/atlasfx/js/index.html?mapId=83#layerIds=207.197.210

http://karten.alta4cloud.com/atlasfx/js/index.html?mapId=83#layerIds=206.196.217

heat<layer ID>

<Opacity>-<Blur Radius>-<Minimum>-<Maximum>

Für die Heatmap-Layer lassen sich über ein Panel in der TOC verschiedene Parameter einstellen: die Opazität als Prozentwert, der Blur-Radius in Pixeln, sowie die untere und obere Schranke für die Berücksichtigung der Werte. Bei von der Voreinstellung abweichenden Einstellung wird für jeden Heatmap-Layer in der URL die Parameterkombination festgehalten. Der Name des URL-Parameters eines Heatmap-Layers setzt sich zusammen aus "heat" und der Layer ID. Abweichend vom Konfigurationspanel sind die Angaben der oberen und unteren Schranke in der URL als Prozentwert vom Maximum des Wertebereichs der Daten angegeben.

Beispiel für Layer mit ID 860 und 66% vom Maximalwert als obere Schranke: heat860=76-4-0-66

Beispiele:

http://karten.alta4cloud.com/atlasfx/js/index.html?mapId=105#heat376=83-9-0-7

http://karten.alta4cloud.com/atlasfx/js/index.html?mapId=105#heat376=83-7-0-80

symbol 1

<symbol>,<size>,<color>,<X-Position>,<Y-Position>

Zeichnet ein Symbol (esri.symbol.SimpleMarkerSymbol) an die definierte Position. Bei fehlenden Parametern, wird ein Fehler auf die Konsole ausgegeben.

Alle Parameter außer x/y sind optional. Bei Nichtangabe eines Parameterwertes wird der default-Wert des esri-Objektes gesetzt. Die Kommas müssen dennoch gesetzt werden.

Wird x oder y weggelassen, so wird aus Kompatibilitätsgründen der Wert aus centerX und centerY genommen. Dies sollte jedoch vermieden werden.

Folgende symbol-Typen sind möglich: circle, square, diamond, cross, x.

Die size wird in Pixeln angegeben.

Color ist ein hexadezimaler RGB-Wert ohne das #-Zeichen.

Beispiele:

http://karten.alta4cloud.com/atlasfx/js/index.html?mapId=88#symbol=square,20,ff0000,805801,6463182

http://karten.alta4cloud.com/atlasfx/js/index.html?mapId=88#symbol=circle,30,0c34e2,805801,7000000

symbol 2

<url>,<width>,<height>,<X-Position>,<Y-Position>

Zeichnet ein GrafikSymbol (esri.symbol.PictureMarkerSymbol) an die definierte Position. Bei fehlenden Parametern, wird ein Fehler auf die Konsole ausgegeben.

Alle Parameter sind zwingend anzugeben.

Breite und Höhe werden in Pixeln angegeben. Angaben müssen größer als null sein.

URL-Parameter muss mit der JavaScript-Funktion encodeURIComponent kodiert sein.

Als Bildformate erlaubt die ArcGIS-Schnittstelle für das PictureMarkerSymbol die Formate BMP und EMF.

Beispiel:

http://karten.alta4cloud.com/atlasfx/js/index.html?mapId=88#symbol=http%3A%2F%2Fwww.loewenstark.com%2Floc%2Ffileadmin%2Fimage_archiv%2Fleuchtt_01.bmp,110,222,805801,7200000

startTime

<timestamp>

Dieser URL-Parameter bezeichnet einen Startzeitpunkt und besitzt lediglich Bedeutung wenn das Werkzeug "TimeExtentTool" verwendet wird.

Die zu verwendende Zahl ist ein Unix-Timestamp, der die Anzahl der Sekunden relativ zum 1. Januar 1970 00:00 Uhr UTC angibt. Entsprechend muss ein Startzeitpunkt umgerechnet werden.

Beispiele:

http://erzbistum-muenchen.alta4cloud.com/kalender/#startTime=1475272800000&endTime=1477868400000

http://erzbistum-muenchen.alta4cloud.com/kalender/#startTime=1476914400000&endTime=1477868400000

endTime

<timestamp>

Dieser URL-Parameter bezeichnet den Endzeitpunkt, der im Werkzeug TimeExtentTool verwendet wird. Er wird ausschließlich vom Werkzeug "TimeExtentTool" interpretiert. Ist das Werkzeug nicht konfiguriert, wird der Parameter nicht berücksichtigt.

Die zu verwendende Zahl ist ein Unix-Timestamp, der die Anzahl der Sekunden relativ zum 1. Januar 1970 00:00 Uhr UTC angibt. Entsprechend muss ein Endzeitpunkt umgerechnet werden.

Beispiele:

http://erzbistum-muenchen.alta4cloud.com/kalender/#startTime=1476914400000&endTime=1477868400000

http://erzbistum-muenchen.alta4cloud.com/kalender/#startTime=1476914400000&endTime=148046040000