Отключите наложение листов в элементе управления слоями

1

Может ли кто-нибудь помочь мне разобраться, как установить обложку листка OFF по умолчанию при добавлении ее на карту, пожалуйста? Например, установив слой CITIES OFF на карте, как показано в приведенном ниже коде. Дело в том, что по умолчанию должен быть включен только уровень STATES ON и CITY OFF.

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

var overlayMaps = {
    "Cities": cities, // Need to set OFF over the map
    "States": states  // Need to set ON  over the map
};

L.control.layers(baseMaps, overlayMaps).addTo(map);
Теги:
leaflet

1 ответ

2

Вы не должны добавлять его на карту в первую очередь. Где-то перед этим кодом, который вы опубликовали, вы инициализируете слой городов и добавляете его на карту. В противном случае это не было бы на карте. Например:

var cities = new L.GeoJSON(...);
cities.addTo(map);

//Or

var cities = new L.GeoJSON(...);
map.addLayer(cities); 

Теперь, когда вы добавляете это в свой уровень управления, этот флажок автоматически проверяется элементом управления, потому что он уже добавлен на вашу карту.

Пример добавлен после комментария для пояснения. Вот одна группа слоев добавлена к карте, а другая - нет. Оба добавляются в элемент управления уровнем. В элементе управления проверяется только тот, который добавлен на карту:

var map = new L.Map('leaflet', {
    center: [0, 0],
    zoom: 0,
    layers: [
        new L.TileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
            'attribution': 'Map data  <a href="http://openstreetmap.org">OpenStreetMap</a> contributors'
        })
    ]
});

// LAYERGROUP WITH ADD TO MAP
var layerGroup1 = new L.LayerGroup([
    new L.Marker([25, 25])
]).addTo(map);

// LAYERGROUP WITHOUT ADD TO MAP
var layerGroup2 = new L.LayerGroup([
    new L.Marker([-25, -25])
]);

var layerControl = new L.Control.Layers(null, {
    'Group 1': layerGroup1,
    'Group 2': layerGroup2
}).addTo(map);
body {
    margin: 0;
}

html, body, #leaflet {
    height: 100%;
}
<!DOCTYPE html>
<html>
  <head>
    <title>Leaflet 1.0.3</title>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <link type="text/css" rel="stylesheet" href="//unpkg.com/[email protected]/dist/leaflet.css" />
  </head>
  <body>
    <div id="leaflet"></div>
    <script type="application/javascript" src="//unpkg.com/[email protected]/dist/leaflet.js"></script>
  </body>
</html>
  • 0
    Привет @ iH8. Я это понимаю. Суть в том, что мне нужен слой городов в слое управления слоями, но флажок должен быть снят, когда карта загружается в первый раз.
  • 0
    Я не думаю, что вы понимаете, о чем я. Я добавил пример. Я надеюсь, что это проясняет это для вас.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню