Обратите внимание, что я использую @ asymmetrik / ngx-leaflet-draw для Angular. Я настраиваю карту, на которой пользователь может рисовать прямоугольники или многоугольники. Затем я сохраняю их в layerGroup на основе события onDrawCreated, это работает отлично.
Я также стремлюсь удалить слои на основе события onDrawDeleted, но это по какой-то причине не работает. Что я наконец делаю в приложении, так это сохраняю данные и конвертирую их в GeoJSON. Затем отобразите его в консоли для устранения неполадок.
Компонент HTML:
<button (click)="checked = !checked">Edit Mode</button>
<button (click)="onSave()">Save</button>
<div id="image-map"
leaflet
[leafletOptions]="options"
[leafletLayersControl]="layersControl"
(leafletMapReady)="onMapReady($event)">
<div *ngIf="checked"
leafletDraw
[leafletDrawOptions]="drawOptions"
(leafletDrawCreated)="onDrawCreated($event)"
(leafletDrawDeleted)="onDrawDeleted($event)">
</div>
</div>
Часть компонента отрисовки карты и буклета:
zones = L.featureGroup();
onDrawCreated(e: any) {
this.zones.addLayer(e.layer);
console.log('Draw Created Event!', e);
console.log(this.zones.getLayers());
}
onDrawDeleted(e: any) {
this.zones.removeLayer(e);
console.log('Draw Deleted Event!', e);
console.log(this.zones.getLayers());
}
onSave() {
const data = this.zones.toGeoJSON();
console.log(data);
}
Судя по документации и другим подобным вопросам, приведенный выше код должен работать. Но я полагаю, что мне не хватает чего-то простого.