javascript - Leaflet .addLayer() 功能失败,在控制台工作

标签 javascript jquery function leaflet

我认为这意味着我缺少有关 javascript 中嵌套函数工作的一些基本知识,但我无法在传单 map 中添加或删除图层 using a click function .具体来说,我有一个传单 map ,其中定义了许多矢量图层。这些层之一被添加到 map 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 is not a function,无论我把函数放在哪里(我什至把它放在 .getJSON() 调用中少量)。令人困惑的是,我在浏览器中转到 JS 控制台并逐字在上述脚本的第 49 行输入函数生成的内容 (map.removeLayer(Percent_TC_bg) ), map 会移除相关图层。

我该怎么做才能让我的 map 无误地添加和删除图层?

最佳答案

我想 TypeError 是在 addLayerremoveLayer 中抛出的。 Map#addLayer#removeLayer接受 ILayer 对象作为参数,但是 oldLayernewLayer 显然是 String,它直接来自 HTML 元素的 ID 属性.

我想,因此更改 oldLayernewLayer 以欣赏 ILayer 对象将解决问题。

关于javascript - Leaflet .addLayer() 功能失败,在控制台工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25112521/

相关文章:

javascript - 每次点击都会 react 进度条

javascript - 显示函数的参数

javascript - 异步/调用堆栈困惑

javascript - 如何以编程方式删除 <H1>~<H6> 标签?

javascript - 如何删除日期选择器中禁用的日期计数

jQuery 测试 element1 是否是 element2 的后代

c++ - 类循环

arrays - swift-获取和附加Firebase值的函数返回一个空字符串

javascript - Modal 中的 Dropzone.js 不起作用

javascript - 如何根据下拉菜单隐藏/显示 td