Как сохранить наложенный слой впереди, даже если базовый слой изменен - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть листовка с 3 базовыми слоями и 2 слоями наложения.Когда пользователь щелкает, чтобы показать наложенный слой, он правильно отображается как самый передний слой.Однако, когда пользователь меняет базовый слой, а наложение все еще щелкается, базовый слой переносится на передний план.Я бы хотел, чтобы наложенные слои всегда отображались как самый передний слой.

Я пытался изменить zIndex наложенных слоев, я также попробовал следующий код:

var baselayers = {
    "Total Votes Cast": TotalVoteCountLayer,
    "Andrew Cuomo Votes": CuomoLayer,
    "Cynthia Nixon Votes": NixonLayer,
};

var overlays = {
            "NYS Assembly Districts": AssemblyOverlay,
            "NYC Council Districts": CouncilOverlay,
};

L.control.layers(baselayers, overlays).addTo(mymap);

mymap.on('baselayerchange', function(eventLayer) {
    if (eventLayer.name === 'NYS Assembly Districts'){
    overlays.bringToFront();
    }
    if (eventLayer.name === 'NYC Council Districts'){
    overlays.bringToFront();
    }
});

Ответы [ 2 ]

0 голосов
/ 03 апреля 2019

Использовано следующее решение:

L.control.layers(baselayers, overlays).addTo(mymap);

mymap.on('baselayerchange', function() {
    if (mymap.hasLayer(AssemblyOverlay)) {
        AssemblyOverlay.bringToFront();
    }
    if (mymap.hasLayer(CouncilOverlay)) {
        CouncilOverlay.bringToFront();
    }
});
0 голосов
/ 03 апреля 2019

BringToFront - метод векторного слоя Leaflet.Он не будет работать в вашем overlays словаре слоев.

Правильным общим решением действительно является использование опции zIndex в ваших слоях.Если вам нужна помощь в этом, пожалуйста, покажите, как вы пробовали это, чтобы мы могли понять, почему это не сработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...