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.
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
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.
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?
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.
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
Ö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.