mirror of
https://github.com/muerwre/orchidmap-front.git
synced 2025-04-25 11:06:40 +07:00
52 lines
1.1 KiB
JavaScript
52 lines
1.1 KiB
JavaScript
import { layerGroup } from 'leaflet';
|
|
import { Sticker } from '$modules/Sticker';
|
|
|
|
export class Stickers {
|
|
constructor({ map, lockMapClicks }) {
|
|
this.map = map;
|
|
this.layer = layerGroup();
|
|
|
|
this.lockMapClicks = lockMapClicks;
|
|
this.stickers = [];
|
|
|
|
this.layer.addTo(this.map);
|
|
}
|
|
//
|
|
// createOnClick = e => {
|
|
// if (!e || !e.latlng) return;
|
|
//
|
|
// const { latlng } = e;
|
|
// this.createSticker({ latlng });
|
|
// };
|
|
|
|
createSticker = ({ latlng, sticker }) => {
|
|
const marker = new Sticker({
|
|
latlng,
|
|
deleteSticker: this.deleteStickerByReference,
|
|
map: this.map,
|
|
lockMapClicks: this.lockMapClicks,
|
|
sticker,
|
|
});
|
|
this.stickers.push(marker);
|
|
|
|
marker.sticker.addTo(this.map);
|
|
marker.sticker.enableEdit();
|
|
};
|
|
|
|
deleteStickerByReference = ref => {
|
|
const index = this.stickers.indexOf(ref);
|
|
|
|
if (index < 0) return;
|
|
|
|
this.map.removeLayer(ref.sticker);
|
|
this.stickers.splice(index, 1);
|
|
};
|
|
|
|
clearAll = () => {
|
|
const target = [...this.stickers];
|
|
target.map(sticker => {
|
|
this.deleteStickerByReference(sticker);
|
|
return true;
|
|
});
|
|
}
|
|
}
|