【发布时间】:2017-10-03 19:08:07
【问题描述】:
我有一个传单地图,其中包含从单独的 geoJSON 文件加载的三层。 我有三个额外的文件,每个文件都有 latlong 坐标和标签。
我正在使用底图 control.layers 在我的三个图层之间切换,并且我希望有一个覆盖图层复选框来启用标签图层,具体取决于哪个底图图层处于活动状态。
var basemaps= {
"layer1": layer1,
"layer2": layer 2,
"layer3": layer 3
};
我正在使用 layerGroups 将我的标签放在一起。 我尝试使用 ActiveLayer 插件来帮助我选择当前处于活动状态的基础层,但似乎总是有问题。
我是 javascript 新手,边走边学。
我的其余控制代码:
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
};
有没有更好的方法来做到这一点?我想为我的图层设置单选按钮,并为我的标签设置一个复选框,根据选中的单选按钮更改标签。
编辑
我找到了这段代码,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};
});
它似乎在做某事,当我执行 console.log 时,它会告诉我活动层,但由于某种原因,它没有更新正在显示的标签。
【问题讨论】:
标签: javascript leaflet gis