orchidmap-front/src/modules/Stickers.js
2018-08-24 17:24:31 +07:00

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;
});
}
}