Faltblatt: Wie benutzt man removeLayer?

13

Das macht mich verrückt. Weitere Informationen zum Hinzufügen eines Ebenensteuerelements zu Ihrer Karte finden Sie im Lernprogramm für Broschüren:

L.Icon.Default.imagePath = "Scripts/images";

var mapUrl = 'http://{s}.tile.openstreetmap.se/hydda/full/{z}/{x}/{y}.png';
var secondMap = 'http://{s}.tile.osm.org/{z}/{x}/{y}.png';

var littleton = L.marker([39.61, -105.02]).bindPopup('This is Littleton, CO.'),
denver = L.marker([39.74, -104.99]).bindPopup('This is Denver, CO.'),
aurora = L.marker([39.73, -104.8]).bindPopup('This is Aurora, CO.'),
golden = L.marker([39.77, -105.23]).bindPopup('This is Golden, CO.');

var cities = L.layerGroup([littleton, denver, aurora, golden]);

var grayscale = L.tileLayer(mapUrl, { id: mapUrl }),
streets = L.tileLayer(secondMap, { id: secondMap });

var map = L.map('map', {
    center: [39.73, -104.99],
    zoom: 10,
    layers: [grayscale, cities]
});

var baseMaps = {
    "Grayscale": grayscale,
    "Streets": streets
};

var overlayMaps = {
    "Cities": cities
};

L.control.layers(baseMaps, overlayMaps).addTo(map);

Wie verwende ich nun die Funktion removeLayer, um die "GrayScale" -Karte mithilfe eines map.on-Ereignisses ('click') aus dem Steuerelement zu entfernen? Der Code wäre:

map.on('click', function(){
    //remove GrayScale
});
Jaman
quelle
Möchten Sie, dass der Benutzer die Graustufen mit einer Schaltfläche entfernen kann? Oder damit es als Folge eines anderen Ereignisses dynamisch entfernt wird? Oder möchten Sie einfach, dass die Karte überhaupt ohne die Graustufenebene startet?
Hexamon
Sagen wir die einfachste Lösung: Dynamisch als Effekt auf ein Ereignis. Zum Beispiel map.on ('click', function () {}). Ich werde meinen Beitrag entsprechend bearbeiten.
Yesman

Antworten:

20

Wenn Sie die Graustufenkarte von Anfang an entfernen möchten, löschen Sie einfach:

    "Grayscale": grayscale,

Von

var baseMaps = {
    "Grayscale": grayscale,
    "Streets": streets
};

Wenn Sie den Layer mit einem Klick entfernen möchten, rufen Sie ihn als Methode für das Kartenobjekt auf. Wie so:

map.removeLayer(grayscale)

Um es aus dem Steuerelement zu entfernen, müssen Sie das Steuerelement zunächst einer Variablen zuweisen. Ändere das:

L.control.layers(baseMaps, overlayMaps).addTo(map);

Dazu:

lcontrol = L.control.layers(baseMaps, overlayMaps).addTo(map);

Dann können Sie anrufen:

lcontrol.removeLayer(grayscale) 

..um es von der Steuerung zu entfernen.

Hexamon
quelle