在传单地图上删除图例

时间:2015-02-01 17:44:27

标签: javascript gis leaflet

我有一个传单地图集,可在用户点击按钮时根据类别更改样式。

实时地图:http://maneesha.github.io/test_map.html

源代码:https://github.com/maneesha/maneesha.github.io

每种风格都有一个传奇。 我的问题是当单击另一个按钮(或再次单击该按钮)时,我无法使旧图例消失。因此,每次点击时,您都会在地图上看到一个新的图例。

map.removeControl(legend);
单击功能中的

不起作用 在js控制台中产生这个结果:

Uncaught TypeError: Cannot read property 'removeFrom' of undefined

有什么想法吗?

编辑:上面的回购已被更改。现场不再存在;源代码位于https://github.com/maneesha/leaflet_map_with_styles_and_legends

1 个答案:

答案 0 :(得分:2)

您在legend上的click事件的处理函数中分配变量change-gender。如果您这样做,legend将仅在该功能中可用。如果您在点击处理程序之前声明var legend;,然后在点击处理程序中更改:var legend = L.control({position: 'topright'});legend = L.control({position: 'topright'});图例将在全局范围内提供,以便您可以从全局范围内的每个函数中获取它范围。

这不会起作用:

document.getElementById('change-gender').addEventListener('click', function () {
    var genderLegend = L.control({'position': 'topright'}).addTo(map);
});

console.log(genderLegend) // returns undefined

这将:

var genderLegend;

document.getElementById('change-gender').addEventListener('click', function () {
    genderLegend = L.control({'position': 'topright'}).addTo(map);
});

console.log(genderLegend) // returns the legend instance