Marker (+div) sowie hover auf einer Karte

Hallo zusammen,

mit dem Material von Netzwolf sowie dieversen Hinweisen aus diesem Forum habe ich mir folgendes zusammengebastelt, um Marker und Routen auf einer Karte darzustellen:

http://s339491593.online.de/beispiel/index.php

Deaktiviere ich Zeile 153 (selectControl.activate(); ) dann kann ich im schwarzen Bereich auf den Link “Test” klicken,
aktiviere ich jedoch selbige Zeile, kann ich den Link nicht mehr anklicken.

Hat jemand einen Tip für mich?

Mit den z-indizies habe ich nun einen halben Nachmittag herumgespielt, einer Lösung aber keinen Schritt näher gekommen.
Wäre schön, wenn mir jemand einen Schubs “herunter vom Schlauch” geben könnte…

Danke und Gruß
Ghostrider

Nahmd,

“selectControl” ist ein Control, die Layers sind Layer.

Die OpenLayers-Struktur ist:

[…]
[…]

“z-index” wird oft falsch verstanden: es wirkt nur zwischen Geschwister-Elementen, aber nicht global.

Sichtbare Controls (Layer-Switcher, Attribution usw.) müssen über dem Container liegen, weil sie ansonsten von den Kartenkacheln überdeckt würden. Das selectControl fängt nach Aktivierung alle Events auf der Zeichenfläche ab und leitet auch die, die es selbst nicht verarbeitet, nicht nach unten weiter.

Sobald ein SelectFeature aktiviert wird, kommt kein Klick mehr bei den Layern an.

Die Tooltips sind als Tooltips gedacht, also nur zur Darstellung eines kurzen Textes und nicht zur Darstellung beliebiger HTML-Elemente; deshalb werden sie anders als Popups in den Layer hineingezeichnet (genauer: sie werden in das Icon-

eingefügt), und sind in der Konstellation mit selectControl nicht anklickbar.

Eine schnelle Lösung für das Problem habe ich leider nicht.

Gruß Wolf

Hoi Wolf,

danke für dein Feedback.

Wenn auch keine Lösung schon mal eine gute Info, dass ich mir den z-Indizies auf dem Holzweg war, ich habe schon an meinem Verstand gezweifelt.

Entweder hauten die Hovers auf den blauen Punkten hin, oder aber das Klicken im schwarzen Fenster, nie aber beides gleichzeitig - ich hab gedacht “kann doch nicht wahr sein”.

Könnte ein selectControl nicht an die ID eines Objektes geknüpft werden getreu dem Motto “reagiere nur bei Klick auf DIV mit der ID xyz”?

Wenn dem so wäre, müsste man doch “nur” dem schwarzen Fenster eine eigene ID verpassen, auf welcher der Event Listener dann lauscht?

Auch wenn die Tooltips nicht zum Darstellen von HTML Elementen geeignet sind so klappt dies doch an sich tadellos - nur nicht in Verbindung mit dem Icon und des DIVs, welches daneben dargestellt wird.

Aber auf jeden Fall schon einmal Danke für deine Erläuterungen.

Viele Grüße
Ghostrider

Nahmd,

Das Missverständnis bzgl. z-index ist weitverbreitet. Daraus resultieren auch die oft verwendeten irrwitzigen Werte, wo doch ein paar kleine Zahlen ausreichten.

Das selectfeature dockt sich direkt an das Eventmanagement der Map an, da müsste man einen der Openlayers-Architekten befragen.

Natürlich funktioniert HTML komplett. Nur kommen wegen des Selectfeature keine Events an. Aus diesem Grund werden Popups nicht in den Layer eingebunden, sondern nach allen Controls eingehängt - damit liegen sie über allen anderen Objekten werden von allen Events erricht.

Du könntest mal am Ende der Initialisierungsroutine einfügen (ungetestet):

selectControl.handlers.feature.stopClick = false;

Falls dann die Seite klemmt, interessiert mich die Ausgabe von (an gleicher Stelle eingefügt):
alert (selectControl.handlers);
alert (selectControl.handlers.feature);
alert (selectControl.handlers.feature.stopClick);

Gruß Wolf

selectControl.handlers.feature.stopClick = false;

verändert nichts.

Meine Ausweichidee wäre nun, einfach 2 kml Layer einzubinden (Icons entstammen unterschiedlicher Datenherkunft), aber nachdem ich deine Texte nochmal gelesen haben und tatsächlich mal versucht habe, zwei selectControls einzubauen - was auch nicht hinhaut (er berücksichtigt immer nur das zweite), ist damit auch diese Ausweichidee fürn Mors.

Nahmd,

Du kannst ein SF mehrere Vector-Layer betreuen lassen.

Nachtrag:

ich habe mal jemanden gefragt, der sich mit der Sache auskennt: das Problem liegt nicht am Event-Management, sondern das SelectFeature legt ein

über die ganze Karte mit einem durchsichtigen drin. Wäre das undurchsichtig, läge das Problem auf der Hand: die Bedienelemente darunter sind schlichtweg unsichtbar, also unerreichbar. Das W3C und die BrowserMacher haben sich des Problems angenommen und ein neues CSS-Attribut “pointer-events” und eine Methode “elementFromPoint()” eingeführt; die sind aber noch sehr neu und werden nicht überall unterstützt.

Ich habe “elementFromPoint()” benutzt und deaktiviere das SelectFeature, wo ein Link darunter liegt. Ist nicht schön und auch nur mit meinem FF getestet, aber zum ersten Mal verträgt SF sich mit einem fremden Layer. :sunglasses:

Gruß Wolf

Edit: Lösungshack ergänzt.

Nahmd,

Probier mal das hier.

Nicht schön, funktioniert aber mit FF und IE.

Gruß Wolf