javascript – Leaflet .addLayer()函数失败,在控制台工作

我认为这意味着我遗漏了一些关于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对象将解决问题.

上一篇:javascript-将强度点数组转换为标记


下一篇:javascript – 更改传单上的图标