我认为这意味着我遗漏了一些关于javascript中嵌套函数工作的基本知识,但是我没有在传单地图using a click function中添加或删除图层.具体来说,我有一个传单图,其中定义了许多矢量图层.其中一个图层将添加到地图on page load中,然后后续图层将加载到图层选择器中的单击事件上.
这是处理点击的功能,然后更新侧边栏图例,更新图层选择器中的类,并且应该更新可见图层:
// ADD THE LAYER CONTROL FUNCTION
$('.layer').click(function() {
var oldLayer = $('.active').attr('id');
var newLayer = $(this).attr('id');
console.log(oldLayer + ' --> ' + newLayer);
$('#infobits').html('<h2>' + this.text + '</h2><hr>' + legendFormatter(
this.id));
map.removeLayer(oldLayer);
$('.layer').removeClass('active');
$(this).addClass('active');
map.addLayer(newLayer);
});
每次我点击一个新图层我都会得到Uncaught TypeError:undefined不是函数,无论我把函数放在哪里(我甚至把它放在.getJSON()调用中).令人困惑的是,我在浏览器中访问JS控制台,并在上面脚本的第49行(map.removeLayer(Percent_TC_bg))上逐字输入函数,地图会删除有问题的图层.
我该怎么做才能让我的地图添加和删除图层而不会出错?
解决方法:
我想在addLayer或removeLayer中抛出TypeError. Map#addLayer
和#removeLayer
接受ILayer对象作为参数,但oldLayer和newLayer显然是String,它直接来自HTML元素的ID属性.
因此,我想改变oldLayer和newLayer以欣赏ILayer对象将解决问题.