JavaScript-Plugins
JavaScript Plugins ermöglichen das Erweitern der Munimap Anwendung um nutzergenerierte Funktionalität. Hierdurch wird Administratoren die Möglichkeit gegeben, eigene JavaScript Funktionen zu erstellen und in Munimap einzubinden. Die erzeugten Funktionen können ausschließlich mittels PostMessage getriggert werden.
Neues Plugin erstellen
Bemerkung
JavaScript Plugins können im Administrationsbereich erstellt werden. Dazu in der Seitennavigation auf den Reiter
Plugins klicken.
Jedes Plugin muss folgende Konventionen einhalten:
Ein Plugin muss immer die Funktion
registerCommunicationPlugin('<eventName>', <PluginFunktion>)genau ein Mal aufrufen. Weitere Funktionsaufrufe sind nicht gestattet.Die Logik eines Plugins muss innerhalb der
<PluginFunktion>definiert werden.Die PostMessage-Events
munimapReady,finishGeoEditingundprintGeoEditingkönnen nicht durch Plugins überschrieben werden.
Soll bspw. ein Plugin für das PostMessage-Event zoomToBbox erstellt werden, könnte dies folgendermaßen aussehen:
registerCommunicationPlugin('zoomToBbox', function(value, context, postMessage) {
// Zoome auf die in value spezifizierte BoundingBox
context.map.getView().fit(value.bbox);
// Antworte der Anwendung, dass die Karte
// jetzt genau auf den Ausschnitt der BoundBox ausgerichtet ist
postMessage({
action: 'zoomToBbox_response',
value: {
success: true
}
});
});
registerCommunicationPlugin()
Diese Funktion registriert das Plugin für das angegebene PostMessage-Event. Jedes JavaScript Plugin darf
ausschließlich den Aufruf zu registerCommunicationPlugin() enthalten.
registerCommunicationPlugin() hat folgende Funktionssignatur:
registerCommunicationPlugin(eventName, eventFunction(value, context, postMessage)).
eventNameString. Die Referenz auf das zu lauschende PostMessage-Event.
eventFunctionDie Funktion, die ausgeführt wird, wenn das PostMessage-Event
eventNamevon einer aufrufenden Anwendung gefeuert wird.Folgende Argumente werden der Funktion hinzugefügt:
valueDer Wert, der über PostMessage mitgesendet wurde. Die Struktur von
valuewird von der Anwendung spezifiziert, die das jeweilige PostMessage-Event feuert.contextEin Objekt, welches Kontextvariablen der Munimap Anwendung bereitstellt. Dazu gehören:
appNameDer Name der Munimap Anwendung
mapDas Map-Objekt der Munimap Anwendung
mapSrsDas Koordinatenreferenzsystem der Munimap Anwendung
olGeoJSONDie OpenLayers GeoJSON format Klasse. Details in OpenLayers Dokumentation
olWKTDie OpenLayers WKT format Klasse. Details in OpenLayers Dokumentation
olVollständiger Zugriff auf alle OpenLayers Funktionalitäten. Details in OpenLayers Dokumentation
LayersServiceDer anol LayersService. Mit Hilfe von
.addSystemLayerlassen sich Layer hinzufügen. Neue Layer können mit den anol Funktionalitäten erzeugt werden: https://github.com/terrestris/anol/tree/master/src/anol/layer.MapServiceDer anol MapService.
DrawServiceDer anol DrawService.
PrintPageServiceDer anol PrintPageService.
PrintServiceDer anol PrintService.
postMessageEine Funktion, die aufgerufen werden kann um eine Antwort an die Anwendung zu schicken, die das PostMessage-Event gefeuert hat. Dies geschieht ebenfalls mittels PostMessage.
postMessageerwartet als Argument ein Objekt mit folgenden Attributen:
actionDer Name der PostMessage-Events, das gefeuert werden soll
valueEin Objekt mit beliebigem Inhalt, welches die Antwortdaten enthält
Plugins referenzieren
JavaScript Plugins können in den App-Optionen unter communication durch ihren Pluginnamen referenziert werden.
Genaue Details dazu finden sich unter Communication.