mirror of
https://github.com/muerwre/orchidmap-front.git
synced 2025-04-26 03:26:41 +07:00
67 lines
1.5 KiB
JavaScript
67 lines
1.5 KiB
JavaScript
import { layerGroup } from 'leaflet';
|
|
import { Sticker } from '$modules/Sticker';
|
|
|
|
export class Stickers {
|
|
constructor({ map, lockMapClicks, triggerOnChange }) {
|
|
this.map = map;
|
|
this.layer = layerGroup();
|
|
this.triggerOnChange = triggerOnChange;
|
|
|
|
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, angle = 2.2, text = '', set }) => {
|
|
const marker = new Sticker({
|
|
latlng,
|
|
angle,
|
|
deleteSticker: this.deleteStickerByReference,
|
|
map: this.map,
|
|
lockMapClicks: this.lockMapClicks,
|
|
sticker,
|
|
set,
|
|
triggerOnChange: this.triggerOnChange,
|
|
text,
|
|
});
|
|
this.stickers.push(marker);
|
|
|
|
marker.marker.addTo(this.map);
|
|
marker.marker.enableEdit();
|
|
};
|
|
|
|
deleteStickerByReference = ref => {
|
|
const index = this.stickers.indexOf(ref);
|
|
|
|
if (index < 0) return;
|
|
|
|
this.map.removeLayer(ref.marker);
|
|
this.stickers.splice(index, 1);
|
|
};
|
|
|
|
clearAll = () => {
|
|
const target = [...this.stickers];
|
|
target.map(sticker => {
|
|
this.deleteStickerByReference(sticker);
|
|
return true;
|
|
});
|
|
};
|
|
|
|
dumpData = () => this.stickers.map(sticker => sticker.dumpData());
|
|
|
|
startEditing = () => {
|
|
this.stickers.map(sticker => sticker.startEditing());
|
|
};
|
|
|
|
stopEditing = () => {
|
|
this.stickers.map(sticker => sticker.stopEditing());
|
|
};
|
|
}
|