Die Entwicklerdokumentation finden Sie hier.
COM-Schnittstelle analog cardo3 zum Aufrufen von cardo mit vordefinierten Anwendungen und Aktionen.
Beispiel: Selektiert den Layer L34 und markiert die Objekte 1 und 2 aus der Spalte ID
http://myServer/net4/icom.ashx?action=select&layer=L34&field=id&value=1|2
Beispiel: Selektiert den Layer L34 und markiert die Objekte 1 und 2 aus der Spalte ID und startet die Anwendung GSS
http://myServer/net4/icom.ashx?action=select&layer=L34&field=id&value=1|2&action=startApp&app=IduIT.cardo.Core.Applications.Gss.GssApplication
Beispiel: Flurstück (Gemarkung, Zähler und Nenner) mittels cardo4.com aufrufen und angezeigt bekommen
http://myCardo/net4/icom.ashx?action=select&layer=L17&field=gemarkung_key|zaehler|nenner&value=144167|64|9&preventAutoClose=true
Lösung, wenn Nenner NULL Werte enthält, da ein Null – Wert in diesem Aufruf nicht verglichen werden kann.
Zusammensetzung der ALKNR, wenn diese nicht verfügbar ist: aus der Gemarkungsnummer, dann eine ALKNR nach den Regeln zusammensetzen und dann den Link nur auf die ALKNR – Selektion reduzieren.
(Oder wenn das nicht funktioniert, aus den verfügbaren Angaben einen Selektionsstring zusammensetzen und in der Ebene, wie zum Beispiel die Flurstücke, ebenfalls eine Spalte anfügen für den Selektionsstring. Dann nach dem selben Prinzip eine Spalte Selektionsstring anhängen.
Der Link würde sich dann auf die Spalte mit dem Selektionsstring reduzieren.
z.B. http://mycardo/net4/icom.ashx?action=select&layer=L17&field=selektionsstring&value=144167-64-9&preventAutoClose=true
Parameter können als GET oder POST Argumente an cardo.com.asp übergeben werden. (Also Aufruf per Link oder Formular)
Folgende Parameter sind verfügbar:
Selektion von Objekten:
Die Angaben SELLAYER, SELFIELD und SELVALUE müssen ordnungsgemäß gesetzt sein, damit diese Funktion ausgeführt wird. Die übrigen Angaben sind optional.
Wenn mehrere Objekte selektiert werden sollen, so kann darauf verzichtet werden, immer wieder den selben Feldnamen zu wiederholen. Es reicht dann einen Feldnamen und eine "|" getrennte Liste von Werten zu übergeben. In diesem Fall muss aber der SELJOINTYPE explizit auf OR gesetzt werden, um das gewünschte Ergebnis zu erhalten.
Zoom auf bestimmten Ausschnitt:
(wird ignoriert, wenn eine Selektion stattfindet - außer SELNOZOOM ist TRUE)
[nur cardo3] Gespeicherte Karte laden:
Auswahl eines bestimmten Ebenenbaumes, falls cardo noch nicht gestartet ist:
(wird nur ausgewertet, wenn PKGID und PROJECT nicht angegeben sind oder zu keinem verwertbaren Ergebnis (d.h. Ebenenbaum) führten)
Starten einer Anwendung:
Starten einer Anwendung und Übergabe der Parameter als Selektionsobjekt:
Ausführen eines Anwendungsmodules:
//--------------------------------------------------------- var expectedEvent=Request.Form("expectedEvent"); %> <script> function continueCardoCom() { var expectedEvent="<%=expectedEvent%>"; top.cardoEvents.fireEvent(expectedEvent, null); } </script> <% //-----------------------------------------------------------
Weitere Argumente:
<a href="http://cardoServer/cardo.com.asp?CRTID=1" target="CARDO_COM_FRAME">cardo starten</a>
----- oder -----
<form method="POST" action="http://cardoServer/cardo.com.asp?CRTID=1" target="CARDO_COM_FRAME"> <input name="CRTID" value="1" /> </form>
Dieses Beispiel zeigt den Aufruf aus einer Desktopanwendung. Zum Absetzen der zusammengestellten URL wird das Internet Explorer Steuerungselement verwendet. Der vorliegende Mechanismus kann in jede Sprache portiert werden, die COM Objekte ertellen und nutzen kann.
Option Explicit
'Beispiel GIS-Selektion in cardo Public Sub CardoGisSelect(selValue As String, selOffset As Integer, showTable As Boolean)
Dim cardoComBaseUrl As String '="http://cardoServer/cardo.com.asp?PREVENT_AUTO_CLOSE=true&" 'BasisUrl für cardo.com Dim cardoTreeId As String '="1" 'in cardo kann es mehrere Ebenenbäume zur Auswahl geben (Angabe ist optional) Dim selLayer As String '="L96" 'Ebenen-ID oder Aliasname der Ebene, in der selektiert werden soll Dim selField As String ' ="ALKNR" 'Spalte in der selektiert werden soll
'cardo.com BasisUrl 'Sollte in der Anwendung auf geeignete Weise konfiguriert werden können und auf ? bzw. & enden. 'Außerdem sollte die BasisUrl alle Parameter enthalten, die nicht von der 'Anwenung dynamisch belegt werden. Damit können bei Bedarf weitere Parameter problemlos hinzugefügt werden. '(Das PREVENT_AUTO_CLOSE ist hier besonders wichtig) cardoComBaseUrl = "http://cardo3.idu.de/cardo.com.asp?PREVENT_AUTO_CLOSE=true&"
cardoTreeId = "1" selLayer = "L96" selField = "ALKNR"
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 'weitere Parameter (die in diesem Beispiel aus den Funktionsargumenten kommen): 'selValue ' ="143072000000002300002"; 'zu recherchierender Wert ' ' selValue kann auch eine Liste von Werten sein, die durch | getrennt sind (selValue="123|124|125|126") 'selOffset'="100" '100m Abstand zum Kartenrand rings um das selektierte Objekt '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'================================================================================== ' Jetzt das Wesentliche ... '==================================================================================
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ' URL zusammenstellen und absetzen ' Zum Ansteuern von cardo wird das IE COM Objekt genutzt. ' (http://msdn2.microsoft.com/en-us/library/Aa752127.aspx) '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Dim url As String url = cardoComBaseUrl & "CRTID=" & cardoTreeId & "&" & _ "SELLAYER=" & selLayer & "&" & _ "SELFIELD=" & selField & "&" & _ "SELVALUE=" & selValue & "&" & _ "SELOFFSET=" & CStr(selOffset) & "&" & _ "SELJOINTYPE=OR&" & _ IIf(showTable, "SELMODE=WINDOW", "SELMODE=SHOW") & "&" 'Debug.Print url
Dim oIE As Object Set oIE = CreateObject("InternetExplorer.Application") oIE.Visible = False 'nicht sichtbar - diese IE Instanz ist nur temporär
oIE.navigate url 'Request absetzen
While (oIE.Busy) 'warten Wend
Sleep 1000 'Vorsichtshalber noch eine Sekunde warten, bis die IE Instanz geschlossen wird
oIE.Quit 'die versteckte IE Instanz wieder schließen '(spielt zusammen mit PREVENT_AUTO_CLOSE=true, denn würde versucht das Fenster per JavaScript aus dem ' Browser heraus zu schließen, gäbe es eine lästige Nachfrage, da das Fenster von extern geöffnet wurde)
Set oIE = Nothing
End Sub
'~~~~~~~~~~~~~~~~ ' Testfunktionen '~~~~~~~~~~~~~~~~
Sub test1() Call CardoGisSelect("142260000000006900002", 25, False) End Sub
Sub test2() Call CardoGisSelect("142260000000000100013|142260000000000100011|142260000000000100007|142260000000001k00000|142260000000001c00000", 50, False) ' Anzeige mehrerer Objekte gleichzeitig End Sub
Sub test3() Call CardoGisSelect("142480000000007000005", 25, True) 'Selektionstabelle zur Ansicht der Sachdaten zum Objekt mit anzeigen End Sub
|
Falls Sie den im vorhergehenden Abschnitt beschriebenen Mechanismus nicht implementieren können oder möchten, dann können Sie ein WSH Script nutzen, welches die aufzurufende URL als einzigen Parameter erhält. [Download] Im Archiv ist eine VBScript- und eine JScript-Variante. Wählen Sie eine der beiden Dateien aus. Die Dateien sollen lediglich als weitere Beispiele dienen.
Praktische Umsetzung:
Wir empfehlen, dass Sie in Ihrer Anwendungskonfiguration einen Eintrag "cardoBasisUrl" vorsehen, wo der Nutzer die URL zu seinem cardo-Server inklusive einiger Steuerungsparameter eintragen kann.
Beispiel einer Basis-URL:
http://cardo3.idu.de/cardo.com.asp?CRTID=1&SELLAYER=L96&SELFIELD=ALKNR&SELOFFSET=50&SELJOINTYPE=OR&PREVENT_AUTO_CLOSE=true&
An diese URL hängen Sie dann noch die konkrenten Informationen an, die den Sprung zu dem oder den Zielobjekt(en) ermöglicht.
etwa eine oder mehrere ALK-Nummer(n), um das Beispiel fortzuführen:
SELVALUE=142260000000000100013 oder SELVALUE=142260000000000100013|142260000000000100011
Der komplette Aufruf könnte dann wie folgt aussehen (VB):
Set Shell = CreateObject("WScript.Shell") Shell.Execute "startCardo.js ""http://cardo3.idu.de/cardo.com.asp?CRTID=1&SELLAYER=L96&SELFIELD=ALKNR&SELOFFSET=50&SELJOINTYPE=OR&PREVENT_AUTO_CLOSE=true&SELVALUE=142260000000000100013"""
oder direkt zum Testen auf der Konsole:
startCardo.js "http://cardo3.idu.de/cardo.com.asp?CRTID=1&SELLAYER=L96&SELFIELD=ALKNR&SELOFFSET=50&SELJOINTYPE=OR&PREVENT_AUTO_CLOSE=true&SELVALUE=142260000000000100013"
cardo::Com kann auch in Verbindung mit einem kleinen Script [Download] dazu genutzt werden, cardo vom Desktop des Nutzers zu starten. Laden Sie dazu das Script herunter und öffnen sie die js-Datei mit einem Texteditor. Nach dem einleitenden Kommentar finden sie in Zeile 15 die Anweisung:
CARDO_URL=""; // <--- HIER EINTRAGEN (...)
Tragen Sie dort zwischen den doppelten Anführungszeichen die URL zu Ihrem cardo-Server in der cardo::Com-Form ein (einige Beispiele sind direkt in der Datei gegeben).
Anschließend können Sie diese Datei auf den Desktops der Clientrechner verteilen oder auf einer Freigabe ablegen und von den Desktops der Nutzer Verknüpfungen darauf erstellen.