Die Kommunikationsschnittstelle (Remote-Interface) bietet Zugriff auf festgelegte Events und Funktionen in unterschiedlichen Modulen. Sie ist mit Backbone.Radio umgesetzt. Backbone.Radio wird als Radio in den globalen Namespace importiert.
Die Kommunikationsschnittstelle kann erst verwendet werden, wenn alle notwendigen Module geladen sind. Hierfür wird per window.postMessage() ein MessageEvent bereitgestellt, auf das sich wie folgt registriert werden kann:
#!js
window.addEventListener("message", function (messageEvent) {
if (messageEvent.data === "portalReady") {
Radio.request("RemoteInterface", "getZoomLevel");
}
}, false);
Eine vollständige Auflistung aller Events erfolgt nachfolgend. Die Syntax unterscheidet sich zwischen Triggern zum Verändern von Kartenzuständen und Auslösen von Operationen, Requests zum Abfragen von Kartenzuständen und Events, auf die sich registriert werden kann. Sie ist nachfolgend beschrieben.
Syntax Trigger
#!js
Radio.trigger("RemoteInterface", eventName [, parameter])
Syntax Request
#!js
Radio.request("RemoteInterface", eventName);
Syntax Event
Radio.on("RemoteInterface", eventName, function (eventObject) {
console.log(eventObject);
});
Radio.once("RemoteInterface", eventName, function (eventObject) {
console.log(eventObject);
});
Inhaltsverzeichnis:
[TOC]
RemoteHost #
Über die hier genannten Aufrufe kann das Masterportal, sofern es als iFrame eingebunden ist, mit dem parentObject kommunizieren.
Nachricht senden #
(postMessage)
Sendet eine Nachricht an das parent-Object über postMessage-API.
Parameter
Name | Typ | Beschreibung |
---|---|---|
content | Object | der zu sendende Content. |
Beispiel-Aufruf
Radio.request("RemoteInterface", "postMessage", {...});
Das Portal kann auch per PostMessage Funktionsaufrufe und Daten entgegen nehmen und entsprechend reagieren. Dabei ist es wichtig, dass im mitgesendeten JSON ein Key so heißt wie die Funktion die ausgeführt werden soll.
Mögliche Funktionen sind: #
showPositionByExtent #
Wird diese Funktion angetriggered, so wird ein Marker an die Zentrumskoordinate des übergebenen Extents gesetzt und die Karte auf diese Koordinate zentriert.
Beispiel-Aufruf von extern
var iframe = document.getElementById("id").contentWindow;
iframe.postMessage({"showPositionByExtent": [xMin, yMin, xMax, yMax]}, domain);
Attribute des JSON-Objektes:
Name | Typ | Beschreibung |
---|---|---|
showPositionByExtent | Array | Extent an dessen Zentrumskoordiante ein Marker gesetzt wird. |
showPositionByExtentNoScroll #
Wird diese Funktion angetriggered, so wird ein Marker an die Zentrumskoordinate des übergebenen Extents gesetzt. Allerdings wird die Karte nicht auf diese Koordinate zentriert.
Beispiel-Aufruf von extern
var iframe = document.getElementById("id").contentWindow;
iframe.postMessage({"showPositionByExtentNoScroll": [xMin, yMin, xMax, yMax]}, domain);
Attribute des JSON-Objektes:
Name | Typ | Beschreibung |
---|---|---|
showPositionByExtentNoScroll | Array | Extent an dessen Zentrumskoordiante ein Marker gesetzt wird. |
transactFeatureById #
Wird diese Funktion angetriggered, so wird ein Feature eines gegebenen WFST-Layers modifiziert.
Beispiel-Aufruf von extern
var iframe = document.getElementById("id").contentWindow;
iframe.postMessage({"transactFeatureById": "id", "layerId": layerId, "attributes": attrs, "mode": "update"}, domain);
Attribute des JSON-Objektes:
Name | Typ | Beschreibung |
---|---|---|
transactFeaturesById | String | Id des Features. |
layerId | String | Id des Layers. |
attributes | String | JSON mit den Attributes des Features. |
mode | String | auszuführende Operation. Momentan nur “update” implementiert. |
zoomToExtent #
Wird diese Funktion angetriggered, so wird die Karte auf den übergebenen Extent gezoomt.
Beispiel-Aufruf von extern
var iframe = document.getElementById("id").contentWindow;
iframe.postMessage({"zoomToExtent": [xmin, ymin, xmax, ymax]}, domain);
Attribute des JSON-Objektes:
Name | Typ | Beschreibung |
---|---|---|
zoomToExtent | Array | Extent. |
highlightfeature #
Wird diese Funktion angetriggered, so wird ein Vektor-Feature in der Karte gehighlightet.
Beispiel-Aufruf von extern
var iframe = document.getElementById("id").contentWindow;
iframe.postMessage({"highlightfeature": "layerid,featureId"}, domain);
Attribute des JSON-Objektes:
Name | Typ | Beschreibung |
---|---|---|
highlightfeature | String | LayerId und FeatureId in einem String per Komma separiert |
hidePosition #
Wird diese Funktion angetriggered, so wird der Marker versteckt.
Beispiel-Aufruf von extern
var iframe = document.getElementById("id").contentWindow;
iframe.postMessage("hidePosition", domain);
Name | Typ | Beschreibung |
---|---|---|
hidePosition | String | “hidePosition”. Dadurch wird der Marker versteckt. |
Nachricht ans Radio senden #
Eine Möglichkeit, via postMessage direkt das Radio der Kartenviewer API anzusprechen ist, den Radio-Channel und die anzutriggernde Funktion zu übergeben.
Beispiel-Aufruf von extern
var iframe = document.getElementById("id").contentWindow;
iframe.postMessage({"radio_channel": "Draw", "radio_function": "initWithoutGUI", "radio_para_object": {"drawType": "Polygon"}}, domain);
Attribute des JSON-Objektes:
Name | Typ | Beschreibung |
---|---|---|
radio_channel | String | Der Radio-Channel, der angesprochen werden soll. |
radio_function | String | Die Funktion des Radio-Channels, die angesprochen werden soll. |
radio_para_object | Object | (optional) Ein Parameter-Objekt, das an die Radio-Funktion übergeben wird. |
Karte #
Über die hier genannten Aufrufe können bestimmte Kartenzustände gesetzt oder abgefragt werden und die Sichtbarkeit von Layern verändert werden.
URL der aktuellen View zurückgeben #
(getMapState)
Gibt die parametrisierte URL zurück, mit der die aktuelle Ausprägung der Karte mit dargestellten Layern und deren Sichtbarkeit und Transparenz zentriert und im selben Maßstab geöffnet werden kann.
Returns URL String
Beispiel-Aufruf
#!js
Radio.request("RemoteInterface", "getMapState");
BoundingBox WGS84 abfragen #
(getWGS84MapSizeBBOX)
Gibt den aktuellen Extent (BoundingBox) der Karte im WGS84 zurück.
Returns [Rechtswert Min, Hochwert Max, Rechtswert Max, Hochwert Min] (Array mit Rechts- und Hochwerten)
Beispiel-Aufruf
#!js
Radio.request("RemoteInterface", "getWGS84MapSizeBBOX");
Setzt die View der Map zurück #
(resetView)
Zoomt die View der Map auf den Ausgangsmaßstab und -ausschnitt und entfernt den MapMarker.
Beispiel-Aufruf
#!js
Radio.request("RemoteInterface", "resetView");
Übernimmt Attribute an einen Layer #
(setModelAttributesById)
Übernimmt das attributes-Object an speziellen Layer.
Parameter
Name | Typ | Beschreibung |
---|---|---|
id | String | LayerID des Layers, dem Attribute zegeordnet werden. |
attributes | Object | Attribute |
Beispiel-Aufruf
#!js
Radio.trigger("RemoteInterface", "setModelAttributesById", {...});
Vektorfeatures #
Über die hier genannten Aufrufe können spezielle Methoden und Funktionen für Vektorfeatures aufgerufen werden.
Zeige alle Features in speziellem Layer #
(showAllFeatures)
Zeigt alle Vektorfeatures des genannten Layers an.
Parameter
Name | Typ | Beschreibung |
---|---|---|
value | String | Layername mit den Vektorfeatures |
Beispiel-Aufruf
#!js
Radio.trigger("RemoteInterface", "showAllFeatures", "Anliegen");
Zeige spezielle Features in speziellem Layer #
(showFeaturesById)
Zeigt alle Vektorfeatures des genannten Layers an.
Parameter
Name | Typ | Beschreibung |
---|---|---|
value | String | Layername mit den Vektorfeatures |
featureIds | [id] | Array mit FeautureIDs |
Beispiel-Aufruf
#!js
Radio.trigger("RemoteInterface", "showFeaturesById", "Anliegen", ["1", "2"]);
Zeige Marker im gegebenen Extent #
(showPositionByExtent)
Positioniert einen Marker auf der Karte im Zentrum des übergebenen Extents.
Parameter
Name | Typ | Beschreibung |
---|---|---|
extent | Array | Extent |
Beispiel-Aufruf
#!js
Radio.trigger("RemoteInterface", "showPositionByExtent", [minX, minY, maxX, maxY]);