Ionic + Leaflet如何在重绘之前清除现有图层?

时间:2018-07-05 15:21:50

标签: ionic-framework leaflet leaflet.draw

我在我的离子应用程序中使用Leaflet在上传的平面图上绘制多边形。一切都很好。重新绘制地图之前,我无法清除现有的多边形-这导致多层堆积。

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

.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的各种方法,甚至没有运气就删除了地图。任何建议,我们将不胜感激!

编辑

如果我在完成所有操作后刷新页面,则会删除所有附加层-并保持应有的单层。

1 个答案:

答案 0 :(得分:0)

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

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

我不会将其放在drawPolygon中-ngOnInit或从那里调用的位置似乎是在添加新数据之前清除地图数据的更好位置。