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.
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>
} //, ...
]
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> |
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 Parameter
Nehmen wir an, der Benutzer tippt 'Martin-Grundschule' in das Suchfeld ein.
Parameter |
Beispielwert |
searchTerm |
Martin-Grundschule |
urlTemplate |
Daraus ergibt sich folgender Aufruf der atlasFX-REST-Schnittstelle
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.
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> |
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.
Javascript API
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 |
|
|
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:
* Ist für layerId bereits ein FieldFilter gesetzt (siehe setLayerFieldFilter), so wird where ignoriert. Ist suppressRefresh true, so wird ein Neuzeichnen verhindert. |
setLayerFilter |
|
|
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 |
|
string |
Unterschiede zu setLayerFilter:
Ruft man im Event Callback wieder setLayerFieldFilter auf, so entsteht eine Endlosschleife. 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 |
|
dojo/Deferred |
Zentriert die Karte auf den übergebenen Punkt. Die Koordinaten müssen im gleichen Koordinatensystem wie die Map sein. |
setCenterWgs84 |
|
dojo/Deferred |
Zentriert die Karte auf den übergebenen Punkt. Die Koordinaten sind als Längen- und Breitengrad anzugeben. |
setScale |
|
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 |
|
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 |
|
dojo/Deferred |
Wie oben. Hier wird aber ein Skalierungsfaktor angegeben. |
setInfoWindowLinkClickCallback |
|
|
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 |
|
esri/geometry/Point |
Rechnet Längen- und Breitengrad in WebMercator-Koordinaten um. |
refreshLayers |
|
|
Veranlasst ein Neuzeichnen aller Layer. |
registerGraphicCallback |
|
|
Registriert auf dem angegebenen Layer einen Klick-Callback für darauf befindliche Grafiken. |
removeGraphicCallback |
|
|
Entfernt die mit obiger Funktion registrierten Callback-Routinen. |
showFeature |
|
|
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 |
|
|
Erweitert oder ersetzt die voreingestellte Maus-Interaktion mit Kartenfeatures. Zulässige Parameterwerte:
|
enableOptionalTool |
|
|
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 |
|
|
Ä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 |
|
- |
Initialisiert Platzhalter entsprechend der Konfiguration. Siehe Initialisierung. |
replace |
|
string |
Ersetzt Platzhalter im übergebenen String. Siehe Platzhalter ersetzen. |
baseUrl |
|
string |
Alias für replace("{atlas}") + suffix |
handleRelativeBaseUrl |
|
string |
Ersetzt ../ durch baseUrl("/") |
jsUrl |
|
string |
Alias für replace("{atlas_js}") + suffix |
springUrl |
|
string |
Alias für replace("{atlas_spring}") + suffix |
handleRelativeSpringUrl |
|
string |
Ersetzt ../spring/rest/ durch restUrl("/") |
restUrl |
|
string |
Alias für replace("{atlas_rest}") + suffix |
restIconUrl |
|
string |
Alias für restUrl("/icons/image/") + iconId |
proxyUrl |
|
string |
Alias für replace("{atlas_proxy}") + suffix |
localUrl |
|
string |
Alias für replace("{local}") + suffix |
strEndswith |
|
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 |
|
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} |
Pfad zur esri Javascript API |
|
{puredojo} |
Pfad zu einer reinen Dojo API |
|
{atlas} |
Pfad zum atlasFX Backend |
|
{atlas_js} |
Pfad zur atlasFX Javascript API |
|
{atlas_spring} |
Pfad zum atlasFX Spring Backend |
|
{atlas_rest} |
Pfad zum atlasFX REST Backend |
|
{atlas_proxy} |
Pfad zum atlasFX S3 Tile Proxy |
|
{local} |
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:
|
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
<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. |
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 |
|
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.
<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>
-
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. -
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.
-
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. -
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.
-
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:
window.atlasPlugins[
'geocoder'
] =
'my/plugin/Main'
;
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¢erX=771317¢erY=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. |
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 |
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 |
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 |
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: |
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: |
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 |
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#¬epadId=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: |
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 |