[Mapserver-DE] Objekte selektieren und markieren

Sebastian Albrecht albrecht at fielax.de
Mon Mar 13 13:12:49 CET 2006


Hallo Jochen,

ich bin mir nicht sicher, was du unter einem "einfachen HTML-Client" 
verstehst. Wenn du damit eine Anwendung meinst, die nur das 
MapServer-CGI benutzt, dann wirst du deine gewünschte Funktionalität 
IMHO nicht erreichen. Mit dem CGI hast du keine Möglichkeit die zuvor 
ausgewählten Objekte zwischenzuspeichern.

Mit dem Einsatz von MapScript wäre es dagegen möglich, da du bspw. bei 
PHP/MapScript mit Sessions arbeiten kannst.


> 1. Wie kann ich es erreichen das alle nacheinander abgefragten Objekte auch 
> markiert bleiben?

Wenn jedes Objekt über ein eindeutiges Attribut (z. B. OID) angesprochen 
werden kann, dann kannst du das Attribut von jedem neu selektierten 
Objekt an ein Array in der Session dranhängen. Anschließend erzeugst du 
aus diesem Array einen EXPRESSION-String a la
"(OID = 3) OR (OID = 5) OR (OID = 17)"
und erreichst mit queryByAttribute, dass diese Objekte markiert werden.

Alternativ kannst du in deiner Map-Datei ein gesondertes CLASS-Objekt 
anlegen, das bspw. rot ist und diesem den EXPRESSION-String zuweisen. 
Dann erzeugst du eine normale Karte, in der die entsprechenden Objekte 
rot eingefärbt sind, ohne eine Abfrage durchführen zu müssen. Ich bin 
mir nicht sicher, welche der Lösungen performanter ist oder ob sie 
gleichschnell sind.

> 2. Wäre es auch möglich Objekte durch Klick zu markieren und nach einem 
> weiteren Klick auf dasselbe Objekt die Markierung wieder aufzuheben?

Wenn du deine Objekte bzw. deren Attributwerte (3, 5, 17) in einem Array 
in der Session vorhälst, kannst du sie daraus auch wieder entfernen.


Falls du von MapScript noch gar nichts gehört hast, aber in einer der 
angebotenen Programmiersprachen PHP, Perl, Java, C#, ... heim bist, 
empfehle ich dir auf jeden Fall den Einstieg, da man wesentlich 
flexiblere Anwendungen gestalten kann.

Falls du MapScript bereits kennst, hilft dir obiges vielleicht deine 
Einkaufsanwendung umzusetzen...


Viele Grüße

Sebastian


-- 
----------------------------------------------------------------
FIELAX Gesellschaft fuer wissenschaftliche Datenverarbeitung mbH
Schifferstr. 10-14, 27568 Bremerhaven, GERMANY

Sebastian Albrecht

Phone:    +49 (0)471 30015-16
Fax:      +49 (0)471 30015-22
EMail:    albrecht at fielax.de
----------------------------------------------------------------




This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)