如何在用户单击时删除Leaflet GeoJSON图层?

时间:2015-09-08 18:23:05

标签: leaflet

我已经整理了一个测试用例,演示了我正在尝试做什么以及它导致的错误:http://codepen.io/anon/pen/RWPyej?editors=001

要演示,请打开javascript控制台,然后单击其中一个多边形。它将完全删除geojson图层(所需)但是当您将鼠标移动到您单击的多边形之外时,您将收到控制台错误:Uncaught TypeError: Cannot read property 'mouseEventToContainerPoint' of null

layer = L.geoJson(geojson, {
    onEachFeature: function(feature, layer) {
      layer.on({
        click: onClick
      });
    }
  }).addTo(map)

function onClick(e) {
  map.removeLayer(layer);
}

当用户点击多边形时,我想用其他geojson数据替换geojson图层。我可以通过从地图中删除图层或清除图层并添加新数据来做到这一点;似乎任何一条路线都会产生同样的错误。

我认为这与我删除图层后剩余的每个多边形的侦听器有关,因此我尝试使用clearAllEventListeners()无效。

如何在不收到此错误的情况下删除/替换GeoJSON图层?