javascript - 在传单绘制上删除多个图层
问题描述
我使用传单绘制在地图上绘制多边形。目前,我只能删除点击的多边形。
这是我现在拥有的一个例子:http: //leaflet.github.io/Leaflet.draw/docs/examples-0.7.x/full.html
假设您绘制了 3 个多边形。如果要删除前 2 个,则必须单击垃圾桶图标,单击前 2 个,然后单击保存。我想要实现的是不必点击第二个。我实际上有第二个的 id,但我无法将它添加到removingLayers
保留单击图层的数组中。
我有什么自动取款机:
function deleteSubPolygons(e) {
var layersToRemove = [];
if (e.layer && e.layer._originalPoints != null && e.layer._latlngs != null && e.layer.id != null && Number.isInteger(e.layer.id)) {
var polygonChildren = getPoligonChildren(e.layer.id);
for (var l in map._layers) {
if (polygonChildren.indexOf(map._layers[l].id) > -1) {
polygonsToDelete.push(map._layers[l].id);
layersToRemove.push(map._layers[l]);
}
}
for (var i = 0; i < layersToRemove.length; i++) {
map.removeLayer(layersToRemove[i]);
}
}
}
我设法手动将它们从视图中删除,但是恢复选项不再有效。我很确定我应该将要删除的图层推送到他们正在执行的leaflet-draw.js 列表中:
this._deletableLayers.removeLayer(e),
this._deletedLayers.addLayer(e)
我的问题是:如何_deletedLayers
从外部访问?
解决方案
当我处于删除模式时,我通过在要删除的多边形上触发 click 事件来解决这个问题:
for (var l in map._layers) {
if (polygonChildren.indexOf(map._layers[l].id) > -1) {
map._layers[l].fireEvent('click');
}
}
推荐阅读
- css - 为什么高像素密度的小屏幕会呈现错误的媒体查询?
- reactjs - 打字稿,样式组件错误:TS2769:没有重载匹配此调用。重载 1 of 2
- django - Docker-compose:使用 Bolt 从 Web 容器到 Neo4j 容器的 db 连接
- c# - Set-Cookie 中的 Cookie 被浏览器忽略
- jenkins - Jenkins 启动失败 - 验证您是否有足够的权限来启动系统服务
- r - 如何创建堆叠和分组图表?
- elm - 如何在 elm 中为 http get 请求编写测试
- python - 有没有办法从函数内部更改全局值?
- java - jdbcTemplate - 将字段留空
- php - PayPal Orders v2 在传递金额折扣时创建返回 422(无法处理的实体)