Ich habe eine Map mit drei Layern, die aus separaten geoJSON-Dateien geladen werden. Ich habe drei zusätzliche Dateien mit Latlong-Koordinaten und Beschriftungen für jeden.Broschüre: Etiketten umschalten, je nachdem welche Ebene aktiv ist
Ich verwende Grundkarte control.layers, um zwischen meinen drei Schichten zu wechseln, und ich möchte ein Overlay-Layer-Kontrollkästchen, das die Etiketten-Layer aktiviert, abhängig davon, welche Grundkarte-Ebene aktiv ist.
var basemaps= {
"layer1": layer1,
"layer2": layer 2,
"layer3": layer 3
};
Ich verwende LayerGroups, um meine Etiketten zusammenzuhalten. Ich habe versucht, mithilfe des ActiveLayer-Plugins herauszufinden, welcher Baselayer gerade aktiv ist, aber irgendetwas scheint immer nicht in Ordnung zu sein.
Ich bin neu in Javascript und lernen, wie ich gehe.
Der Rest meines Steuercode:
var picker = L.control.activeLayers(basemaps, showlabels {collapsed:false}).addTo(map);
if (picker.getActiveBaseLayer() == "layer1")
{activelabel = label1};
if (picker.getActiveBaseLayer() == "layer2")
{activelabel = label2};
if (picker.getActiveBaseLayer() == "layer2")
{activelabel = label3};
var showlabels = {
"labels": activelabel
};
Gibt es einen besseren Weg, dies zu tun? Ich möchte Radio-Buttons für meine Layer und ein Kontrollkästchen für meine Labels haben, das die Labels je nach aktiviertem Optionsfeld ändert. es sagt mir, die aktive Schicht
EDIT
fand ich diesen Code, die baselayerchange
map.on('baselayerchange', function(a) {
if (picker.getActiveBaseLayer().name == "layer1")
{activelabel = label1};
if (picker.getActiveBaseLayer().name == "layer2")
{activelabel = label2};
if (picker.getActiveBaseLayer().name == "layer3")
{activelabel = labels3};
});
Es ist etwas zu tun scheint, wenn ich einen console.log tun, aber aus irgendeinem Grund, es ist nicht die Aktualisierung welche Labels angezeigt werden.
Das ist fantastisch! Ich danke dir sehr! – threkar