首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Leaflet -等同于L.GridLayer和L.VectorGrid.Slicer的eachLayer()

Leaflet -等同于L.GridLayer和L.VectorGrid.Slicer的eachLayer()
EN

Stack Overflow用户
提问于 2019-11-20 03:25:36
回答 2查看 189关注 0票数 0

有没有办法用GridLayer复制L.LayerGroup.eachLayer()的行为?我使用Leaflet.VectorGrid (L.VectorGrid.Slicer)来包装世界各地的一些GeoJSON,并且我想将每个功能添加到一个或多个图层组中。例如,下面的代码适用于GeoJSON对象,但不适用于栅格层。

代码语言:javascript
复制
// want to do something like this; layer groups defined previously
L.geoJSON(usData, {
  style: // styling logic
})
 .eachLayer(layer => {
   layerGroup1.addLayer(layer);
   if (category2.indexOf(layer.someProperty) !== -1) {
     layerGroup2.addLayer(layer);
   }
   if (category3.indexOf(layer.someProperty) !== -1) {
     layerGroup3.addLayer(layer);
   }
})
 .addTo(mapObject);
代码语言:javascript
复制
// no eachLayer() method for grid layers or slicers; how could you do this with grid layers?
L.vectorGrid.slicer(usData, {
  vectorTileLayerStyles: {
    sliced: properties => someFunction(properties)
  },
  interactive: true
})
 .eachLayer(layer => {
   // do something with each layer
})
 .addTo(mapObject);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-20 22:09:30

为每个所需的LayerGroup创建多个L.VectorGrid.Slicer实例。相应地过滤您的GeoJSON数据。

票数 1
EN

Stack Overflow用户

发布于 2019-11-20 16:33:19

你可以用以下命令得到每一个“层”:

Object.keys(vectorGrid._vectorTiles).forEach(function(e){console.log(vectorGrid._vectorTiles[e])})

但问题是,这些层没有latlng,它们有路径。因此您不能将它们添加到图层组中。

也许你可以在从特征中获取路径坐标并将其转换为latlng时创建新的多边形。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58941498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档