【问题标题】:Ionic + Leaflet How Can I clear an existing layer before redrawing it?Ionic + Leaflet 如何在重绘之前清除现有图层?
【发布时间】:2018-07-05 15:21:50
【问题描述】:

我正在使用 Leaflet 和我的 ionic 应用程序在上传的平面图上绘制多边形。一切都很好。在重新绘制地图之前,我无法清除现有的多边形 - 这会导致多个图层堆叠在一起。

这是我目前正在做的事情:

.ts 文件

ngOnInit() {
    // get saved polygons from db
   ...
   .subscribe((res => {
       res.forEach(data => {
           this.drawPolygon(data);
       });
   }));
}

...


// Draw each of the saved polygons
drawPolygon(data) {
    if (data.polygon.geometry) {
        let shape = {
            polygon: data,
            type: data.polygon.type,
            geometry: {
                type: data.polygon.geometry.type,
                coordinates: data.polygon.geometry.coordinates
            },
            properties: {}
        };

        // Remove all existing layers


        L.geoJSON(shape, {
            onEachFeature: this.onEachFeature.bind(this),
        }).addTo(this.myMay);
    }
}


// onEachFeature method to trigger popover
onEachFeature(feature, layer) {
    layer.on('click', event => {
        let popover = this.popoverCtrl.create('MyComponent', {
        layer: feature
    });

    popover.present();

    }, this);
}

我尝试了removeLayerclearLayers 的各种方法,甚至在没有运气的情况下删除了地图。任何建议都非常感谢!

编辑

如果我在完成所有操作后刷新页面,所有附加层都将被删除 - 单个层将保持原样。

【问题讨论】:

    标签: ionic-framework leaflet leaflet.draw


    【解决方案1】:

    要删除所有图层,假设您的地图对象称为 myMap,以下代码应该可以工作:

    myMap.eachLayer(function (layer) {
        myMap.removeLayer(layer);
    });
    

    我不会把它放在 drawPolygon 中 - ngOnInit 或调用它的地方似乎是在添加新数据之前清除地图数据的更好地方。

    【讨论】:

    • 感谢您的建议。我必须设置一些愚蠢的东西。在您的帮助下,我可以删除我的地图图层 - 但没有绘制图层(多边形)。
    猜你喜欢
    • 1970-01-01
    • 2012-08-03
    • 2019-01-14
    • 1970-01-01
    • 2020-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-25
    相关资源
    最近更新 更多