Листовка: Як ви користуєтеся RemoveLayer?


15

Це зводить мене з розуму. Дивіться підручник "Листовка" для додавання елемента управління шаром до вашої карти:

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);

Тепер, як я можу використовувати функцію RemoveLayer, щоб видалити карту "GrayScale" з елемента керування за допомогою події map.on ("click")? Код буде:

map.on('click', function(){
    //remove GrayScale
});

Ви хочете, щоб користувач міг видалити відтінки сірого за допомогою кнопки? Або для того, щоб воно було динамічно усунене як вплив якоїсь іншої події? Або ви просто хочете, щоб карта починалася без шару сірого?
гексамон

Скажімо, найпростіше рішення: динамічно як вплив на подію. Наприклад, map.on ('click', function () {}). Я відповідно відредагую свій пост.
yesman

Відповіді:


21

Якщо ви хочете видалити мапу сірого масштабу з самого початку, просто видаліть:

    "Grayscale": grayscale,

З

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

Якщо ви хочете видалити шар при натисканні, ви називаєте його як метод на об’єкті карти. Так:

map.removeLayer(grayscale)

Щоб видалити його з елемента управління, спочатку потрібно призначити елемент керування змінною. Змініть це:

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

До цього:

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

Тоді ви можете зателефонувати:

lcontrol.removeLayer(grayscale) 

..вийняти його з керування.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.