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% 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%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 Ссылка
anBeispiel
%Vor%Wenn Kontrollkästchen entfernen aktiviert ist
%Vor%Tags und Links javascript jquery checkbox leaflet maps