Entfernen Sie alle Popups von OpenLayers Features
Ich bin mit OpenLayers, eine map zu erstellen und plot-locations. Jeder Standort hat eine Markierung und ein popup und erstellt mit OpenLayers.Feature - im moment bin ich auf jeden Fall außerhalb meiner Komfort-zone hier, also bin cobbling Beispiel-code zusammen.
Wird eine Marke wie folgt erstellt (ich habe gehackt, was ich hoffe, sind offensichtliche variable-Zuweisungen für die Kürze):
function addMarker(ll, popupClass, popupContentHTML, closeBox, overflow, type)
{
var feature = new OpenLayers.Feature(markerLayer, ll);
feature.closeBox = closeBox;
feature.popupClass = popupClass;
feature.data.icon = icon;
feature.data.popupContentHTML = popupContentHTML;
feature.data.overflow = (overflow) ? "auto" : "hidden";
var marker = feature.createMarker();
var markerClick = function (evt) {
if (this.popup == null) {
this.popup = this.createPopup(this.closeBox);
map.addPopup(this.popup);
this.popup.show();
} else {
this.popup.toggle();
}
currentPopup = this.popup;
OpenLayers.Event.stop(evt);
};
marker.events.register("mousedown", feature, markerClick);
markerLayer.addMarker(marker);
}
Kann die Karte enthält viele Marker.
Wenn eine Markierung geklickt, ein popup aktiviert und deaktiviert werden. Was ich versuche zu ado machen ALLE popups über alle Marker auf die Karte schließen, wenn ein neuer marker klicken und ein popup blendet - das heißt, ich möchte nur, dass eine popup-Anzeige zu einem Zeitpunkt.
Kann es sein, dass mein Ansatz falsch ist, wäre aber dankbar für Hinweise, auch nur Ideen zu versuchen.
InformationsquelleAutor Christian Mayne | 2012-02-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
WENN Sie eine Lösung implementieren, in der Erwägung, dass nur ein popup ist zu einem Zeitpunkt aktiv (d.h. jedes mal, wenn ein popup deaktiviert ist, verschwindet es), wirst du NIE mehr als ein popup zu einer Zeit.
Lesen diese STACKOVERFLOW-Antwort, die ich schrieb, für genau dieses problem. haben Sie alle notwendigen pseudocode (mit langen Erklärungen über alles).
wenn Sie nicht brauchen, die Erklärungen, das zeigt die Lösung:
nun, wenn Sie WIRKLICH wollen, alles zu zerstören, popups, unabhängig (was ich sehr abraten):
InformationsquelleAutor tony gil
Was ich mich erinnere über OpenLayers ist, dass Sie sollten zu implementieren, die eine Steuerung für die feature Auswahl.
Ich hoffe, dass es funktioniert mit Ihrem Marker...
Ahk - und wie man code-Blöcke in Kommentaren ist ein völliges Rätsel...
klicken Sie auf die Hilfe neben der Kommentar-box, und es wird Ihnen sagen.
code
InformationsquelleAutor j_freyre
Warum nicht werfen Sie das öffnen von popups in ein array auf die
if(this.popup == null)
Zweig, und auf derelse
Zweig Schleife über dieses array und verstecken alle popups.InformationsquelleAutor mihai