JS-Dummy findet keine Lösung für Popup-Verhalten

Für eine Funktion in einer OSM-Karte mit Openlayers und util.js finde ich keine Lösung und brauche Rat.

In der Karte werden Marker (unterschiedliche Icons) mit Popup genutzt. Wie kann ich die util.js veranlassen, dass beim Klick auf einen Marker ein schon vorher geöffnetes Popup wieder geschlossen wird?

map.addPopup(feature.createPopup(feature.closeBox), null);

– funktioniert nicht

Vielen Dank vorab.

PC-Opa

Vorweg: ich kann kein OpenLayers. Aber ich hab trotzdem Senf:

Speichere das zuletzt geöffnete Popup in einer globalen Variable, und rufe dann beim Öffnen .hide() auf dem alten Popup auf.

Googeln liefert alternativ auch noch folgendes Codefragment:

while (map.popups.length > 0) {
    map.removePopup(map.popups[0]);
} 

zum entfernen aller bisherigen Popups.

Alles ungetestet.

Hmm, ich habe mich leider auch noch nicht mit OpenLayers beschäftigt … und werde dies vermutlich auch nicht tun, wenn so eine Standardfunktionalität nicht out-of-the-box dabei ist, man dafür aber Popup.closeOnMove aktivieren kann ?!

Vielen Dank für den Senf!

Beide Varianten bekomme ich nicht hin. Ich JS-Dummy weiß nicht,wie das zuletzt geöffnete Popup in einer globalen Variable zu speichern ist.

Wenn ich

while (map.popups.length > 0) {
    map.removePopup(map.popups[0]);
} 

einbaue, funktioniert das Popup nur beim zuletzt eingefügten Marker.

Als js-Dummy würde ich Dir dringend empfehlen, Leaflet anstatt OpenLayers zu nutzen wenn das irgendwie geht.

OpenLayers ist wesentlich schwerer zu verstehen und umständlicher zu nutzen.

bye, Nop

Hi,
Ich geh mal davon aus das du OL 2.x benutzt.
Probier mal das :

map.addPopup(feature.createPopup(feature.closeBox), true);

Laut Doku http://dev.openlayers.org/releases/OpenLayers-2.13.1/doc/apidocs/files/OpenLayers/Map-js.html#OpenLayers.Map.addPopup schließt das true alle vorherigen popups automatisch.

LG Thomas

Hallo Thomas,

super!!! Das war’s. Vielen Dank: