Javascript einem Marker zuweisen

Hallöchen zusammen.

Gibt es eine Möglichkeit, ohne events einem Label zu einem Marker oder dem Marker selbst zu sagen, dass er bei Click oder mouseOver eine JS Funktion ausführen soll?
Mir ist es leider nicht gelunge, HTML oder JS in einem Label unterzubringen.

Vielen Dank im voraus

Nahmd,

Ja.

Das Marker-Objekt enthält ein Icon-Objekt und dieses unter dem Namen imageDiv ein

, und darin befindet sich das des Icons.
Du kannst an das imageDiv ein “onclick” anhängen:

Aber erst nachdem der Marker beim Layer und das Layer bei der Map angemeldet wurden.
Denn erst die Map kennt das JS-window/document, und nur das kann ein

erzeugen.

Hier ein Beispiel zum Ausschlachten:

Gruß Wolf

Super, vielen Dank schonmal für deine Unterstützung.

Wie sieht die Sache nun aber aus, wenn ich einen Marker folgend setze?

marker = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(x_$r,y_$r).transform(map.displayProjection,map.projection),null,markerstyle);

Ich habe mir mal sagen lassen, dass man Marker mittlerweise so setzen sollte.

Nahmd,

Ich nehme an, dass der Marker nicht wie bei meiner (veralteten) Version als

realisiert wird, sondern auf ein SVG-Layer gemalt wird. Damit hat der keine HTML-Identität und man kann auch keinen HTML/DOM “onXXXX”-Handler daran hängen.

Gruß Wolf

Gibts es da vielleicht einen “Hinten-rum-work-around”?
Vielleicht eine Grafik (PNG Datei, vollständig durchsichtig) per Marker einbinden, darunter dann meinen Feator.vector, und dafür die PNG (Marker) darüber mit einem JS betüdeln?

Nahmd,

Du kannst natürlichen einen unsichtbaren Marker erzeugen:

http://www.netzwolf.info/kartografie/openlayers/clickme2.htm

Ok, der ist jetzt nicht ganz unsichtbar. Das ist Absicht, damit Du ihn findest.

Aber ein Markerlayer, nur um einen Klick abzufangen, erscheint mir als Overkill.

Das Vector-Framework sollte da eine bessere Lösung bereitstellen.
Nur habe ich mich damit noch nicht auseinandergesetzt, da muss ein anderer ran.

Gruß Wolf

Moin Moin,

beschreib doch bitte mal , WAS du eigentlich erreichen möchtest ohne gleich schon das WIE festzulegen.
Also “wo soll der Anwender klicken, damit was passiert?” Und auch bitte “warum ohne Events?” - die sind doch für sowas gedacht.

Gruss
Walter

p.s. was sagt denn das openlayers-forum dazu?

@ Wolf und Wambacher

Overkill sicher, jedoch habe ich bis dato so ziemlich alles probiert (events), was mir eingefallen ist oder was ich finden konnte, nachdem keine meiner Lösungen funktionierte, habe ich mich gegen die events entschieden.

Soll Zustand:

Per AJAX werden Koordinaten aus einer DB abgefragt, das zugrunde liegende Javascript wird zeitgesteuert aufgerufen. Der Marker (Vector in meinem Falle) trägt dabei ein event, Klick auf Marker = Popup mit Zusatzinfos.

Das Fehlerbild: Beim nächsten Schleifendurchlauf liess sich aber ein zuvor geöffnetes Popup nicht mehr schließen und es blieb nur noch F5.
Daher habe ich mich am Ende gegen die Events entschieden.

Aha, DA liegt das Problem: popups lassen sich nicht schliessen.

Das hat mit Verlaub nicht viel mit Events zu tun. Ich hab in meiner Karte einfach ein “removeAllPopups(map)” eingebaut, bevor ein neues popup aufgemacht wird.
Dadurch waren eventuell übrig gebliebene Popups spätestens dann weg.
Quick&Dirty - aber sehr effektiv :wink:

Gruss
Walter

Öhm, ich konnte Popus schließen, nur wenn die “nächste JS Schleife” durchgelaufen ist, konnte das Popup, was in der Schleife zuvor geöffnet wurde, nicht mehr geschlossen werden.