Das GeoRef-Plugin bietet die Möglichkeit Polymap mit externen Web-Applikationen zu verflechten. Ziel ist es, dem Nutzer einen möglichst nahtlosen Übergang von der einen zur anderen Anwendung zu bieten. Um zum Beispiel auf Knopfdruck ein Flurstück einer externen Flurstücksverwaltung im Polymap sehen zu können; oder andersherum die Flurstückinformationen zu einem Geo-Objekt direkt anzeigen zu können.
Die Integration findet auf der Ebene der Bedienoberfläche im Browser statt (im Gegensatz zur Datenintegration auf dem Server). Das jeweils andere Programm wird durch geschickten Aufruf von URLs im Browser gesteuert. Über diesen Mechanismus werden auch die ggf. nötigen Parameter ausgetauscht.
POLYMAP ist über diesen Weg weitestgehend steuerbar. Man muss sich aber auch hier Gedanken über die richtige Konfiguration machen, denn jeder Zugriff auf Polymap erfolgt, wie im “normalen” Betrieb, unter einem bestimmten Login/Passwort mit spezifischen Einstellungen. Man muss also zwei Fälle unterscheiden:
Fall 1: der Nutzer hat sonst nichts mit Polymap zu tun
In diesem Fall können die Zugriffe aus der externen Web-Applikation eventuell unter einem einzigen Login/Passwort erfolgen. Dieses kann dann in der URL mit übergeben werden (wenn das keine Sicherheitsprobleme bringt).
Fall 2: der Nutzer hat sowieso ein Polymap-Login
Der Nutzer bekommt beim ersten Zugriff auf Polymap das gewohnte Login-Fenster. Danach bekommt er seine gewohnte Umgebung; zusätzlich werden die jeweils von der externen Web-Applikation angeforderten Funktionen ausgeführt.
Konfiguration
Grundsätzlich sollen bei der Integration einer externen Web-Applikation meist Referenzen zwischen externen Daten und Daten in Polymap hergestellt werden. Dazu ist ein passender externer Datenlieferant und die Referenz zwischen externen und internen Daten zu konfigurieren:
Beispiel:
<dataProviders>
...
<!-- PolyGIS ********************************** -->
<polygis1 label="Freitag" class="polymap2.sinca.SincaSession">
...
</polygis1>
<!-- webFLUR ********************************** -->
<webflur label="webFLUR" class="polymap2.georef.external.ExternalDataProvider">
<baseURL>https://212.78.108.174:8443/iac-wiki/Wiki.jsp</baseURL>
</webflur>
</dataProviders>
<refs>
...
<polygis_webflur label="webFLUR"
objectProviderId="polygis1"
objectReferencer="polymap2.georef.sinca.KeyFieldObjectReferencer"
dataProviderId="webflur"
dataReferencer="polymap2.georef.external.ExternalDataReferencer">
<keyIndex>1</keyIndex>
<layerNames>POLYGIS Ebene</layerNames>
<externalWindowWidth>800</externalWindowWidth>
<externalWindowHeight>750</externalWindowHeight>
<externalURLParamName>page</externalURLParamName>
<externalURLTarget>page</externalURLTarget>
</polygis_webflur>
</refs>
Folgende Parameter steuern das Verhalten der externen Referenz:
- externalWindowWidth/Height (optional): die Größe des Fensters
- externalURLParamName: Name des URL-Parameters, über den die Geo-Referenz-ID übergeben wird; wenn nicht angegeben, wird Referenz-ID direkt an die Basis-URL des Providers angehängt (ab Version 1.0)
- externalURLTarget (optional): wenn angegeben, wird über Javascript window.open() mit diesem Parameter (als Window-Name) ein drittes Fenster geöffnet.
URL-Parameter
Um ein Kommando an POLYMAP zu senden, muss immer der Parameter E_id=ExternalEvent in der URL enthalten sein. Eine gültige URL ist zum Beispiel:
http://localhost/polymap2.standard/app?E_id=ExternalEvent&command=map&activeMap=map3Diese enthält ein Kommando. Dieses Kommando lädt die Sicht map3. Es können auch mehrere Kommandos angegeben werden. Der Parametername command muss dann für jedes Kommando mit einem eindeutigen Suffix versehen werden. Dieses Suffix muss dann ebenfalls in dem zugehörigen Parameternamen verwendet werden. Beispiel:
http://localhost/polymap2.standard/app?E_id=ExternalEvent&command=map&activeMap=map3&In diesem Aufruf werden 2 Kommandos aufgerufen. Zuerst wird mittels des Kommandos map sichergestellt, dass eine bestimmte Sicht aktiviert ist. Das zweite Kommando external zentriert anschließend das angegebene Objekt. Für die Reihenfolge der Abarbeitung ist das gewählte Suffix entscheidend. Im obigen Beispiel wird das Kommando external als zweites ausgeführt, da die Zeichenkette “_2” grösser ist als “” (leeres Suffix für das erste Kommando).
command_2=external&refId_2=M70062¢er_2=true
Folgenden Kommandos stehen zur Verfügung
Login
Ist kein spezielles Kommando. Es ermöglicht das Ausführen unter dem angegebenen Login.
Achtung!: Login und Passwort werden leserlich übermittelt und stellen somit potentiell ein Sicherheitsrisiko dar.
- login/passwd:
Kommando: map
Die angegebene Sicht aktivieren.
- activeMap: eine oder mehrere Konfigurationsnamen der Sichten, die aktiviert werden sollen; wenn mehrere Sichten aktiviert werden sollen, dann wird dieser Parameter mehrfach mit den unterschiedlichen Werten angegeben.
Kommando: external
Es werden Geo-Referenzen für die angegebenen Referenz-IDs gesucht; dazu muss die entsprechende Geo-Referenz konfiguriert sein (siehe oben).
- refId: eine oder mehrere Referenz-IDs (bei mehreren wird der Parameter mehrfach angegeben)
- center (optional):
- mark (optional):
Realisierung im Browser
Mit der obigen Konfiguration ist es möglich, Polymap von aussen zu steuern und/oder Polymap eine externe Web-Applikation steuern zu lassen. Bei der Realisierung können folgende Fälle auftreten:
Fall 1: Polymap im Fenster
Die externe Web-Applikation läuft in einem “primären” Browser-Fenster und lässt Daten von Polymap in einem externen Fenster anzeigen.
- im Link oder Javascript immer denselben Namen für Target/Window-Namen angeben, ansonsten wird immer ein neues Fenster geöffnet
- Achtung: noch Probleme: im Moment wird bei *jedem* Aufruf ein neues Fenster geöffnet
Fall 2: Web-Applikation im Fenster
- beim Referenzer richtiges Target angeben
- zurück mit “opener” ???
Fall 3: Polymap und Web-Applikation in Frames
- beim Aufruf von Polymap das Target “_top” für den Link angeben
- Parameter an Polymap weiterleiten
- ansonsten siehe Fall 1 und 2





