为什么leaflet.js在map.addlayer(layer)上加了不止一层?

Why leaflet.js adds more than one layer on map.addlayer(layer)?

传单有问题。我尝试只添加一层,但传单添加了不止一层。

代码如下:

var region_layer = L.geoJSON(layer);

// Count layers
console.log("Before adding a layer")
let i = 0;
mymap.eachLayer(function(){ i += 1; });
console.log('Map has', i, 'layers.');

// Add one layer
mymap.addLayer(region_layer);

// Count layers again
console.log("After adding a layer")
let z = 0;
mymap.eachLayer(function(){ z += 1; });
console.log('Map has', z, 'layers.');

这是控制台中的输出:

Before adding a layer
Map has 0 layers.
After adding a layer
Map has 3 layers.

这里是第一个变量的方面 layer:

为什么 leaflet 添加了 3 层而不是一层?

在这种情况下 Layer 的三个实例是:

  • L.GeoJSON 的一个实例,它解析您的 geojson 数据并生成所需的矢量图层实例,在您的特定情况下,它只是...
  • L.Polygon 的实例,负责解释特定多边形的坐标和样式,并将该信息发送到...
  • L.Renderer, which will be either a L.SVG or a L.Canvas depending on your browser and the prefercanvas option of your map instance 的实例。渲染器负责在需要时实际绘制可见的东西(分别通过在 DOM 中生成 <svg> 元素或将像素推送到 <canvas>)。