Leaflet.js: So entfernen Sie mehrere Ebenen aus der Karte

8

Ich verwende Leaflet.js für eine Karte. Jetzt möchte ich zusätzliche Layer von der Karte entfernen. Wenn Sie auf die Schaltfläche # klicken, werden alle markierten Kontrollkästchen deaktiviert, und alle entsprechenden Ebenen werden aus der Karte entfernt.

Um eine Ebene aus der Karte zu entfernen, wird die ID der Ebene benötigt. Diese ID entspricht der ID des entsprechenden Kontrollkästchens. Deshalb benutze ich jQuery, um die IDs aller markierten Checkboxen zu erhalten und ihren Wert in einem Objekt zu speichern, das hier someObj.idsChecked genannt wird.

Wenn ich versuche, den gespeicherten Wert val zu verwenden, um eine Ebene zu entfernen, funktioniert es nicht, während console.log den gewünschten Wert anzeigt. Hier zum Beispiel: mapcat52.

Beim Einfügen der vorherigen ID in die Funktion wie map.removeLayer (mapcat52) funktioniert es wie erwartet.

Wo ist der Fehler in meinem Code oder meinen Gedanken?
Jede Hilfe wird sehr geschätzt.

Das HTML

%Vor%

Das JS:

%Vor%     
LuNarez 29.08.2013, 11:23
quelle

2 Antworten

6

Gemäß dem Leaflet-API-Dokument Ссылка verwendet removeLayer einen ILayer-Parameter: removeLayer( <ILayer> layer ) , aber Sie sind übergibt es einen String: $(this).attr("id")

Es sieht so aus, als ob Sie das Layer-Objekt bereits in einer Variablen haben: mapcat52. Sie können die Layer-Objekte speichern, wenn Sie sie erstellen, und dann nach ID suchen, um sie an removeLayer zu übergeben:

%Vor%     
kielni 11.09.2013, 18:31
quelle
16

Ich würde sagen, der einfachste Weg zum Entfernen / Hinzufügen (Umschalten) von Layern aus der Map wäre die Verwendung einer LayerGroup .

Fügen Sie der Karte nur einzelne Layer hinzu, fügen Sie sie stattdessen einer LayerGroup hinzu und fügen Sie diese LayerGroup dann zu Ihrer Map hinzu.

Wenn Sie die Ebenen entfernen müssen, rufen Sie einfach die Funktion clearLayers () auf.

Sehen Sie sich die API für LayerGroup Ссылка

an

Beispiel

%Vor%

Wenn Kontrollkästchen entfernen aktiviert ist

%Vor%     
Shriram Sharma 18.09.2013 20:08
quelle