【问题标题】:Why leaflet.js adds more than one layer on map.addlayer(layer)?为什么leaflet.js 在map.addlayer(layer) 上添加了不止一层?
【发布时间】:2020-04-08 19:20:33
【问题描述】:

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

代码如下:

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的方面:

为什么传单添加了三层而不是一层?

【问题讨论】:

  • 一个MultiPolygon形状,也就是你的geojson,用一个多维数组表示检查here
  • @kboul 是的,但在这种情况下,多维数组只有 1 维,因为我只有 1 个多边形。而且,无论如何,这并不能解释为什么我有 3 层,其中 1 层包含所有多边形,因为它应该是
  • map.eachLayer() 迭代地图下层的整个结构。不仅仅是您添加的底层多边形。它至少会找到MultiPolygon(即layerGroup)和每个单独的多边形。使用instanceOf 确定它发现了什么。

标签: javascript leaflet layer


【解决方案1】:

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

  • L.GeoJSON 的一个实例,它解析您的 geojson 数据并生成所需的矢量图层实例,在您的具体情况下只是...
  • L.Polygon 的实例,负责解释特定多边形的坐标和样式,并将该信息发送到...
  • L.Renderer 的一个实例,可以是L.SVGL.Canvas,具体取决于您的浏览器和prefercanvas option of your map instance。渲染器负责在需要时实际绘制可见内容(通过在 DOM 中生成 <svg> 元素,或分别将像素推送到 <canvas>)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-26
    • 1970-01-01
    相关资源
    最近更新 更多