mirror of
https://github.com/muerwre/orchidmap-front.git
synced 2025-04-25 19:16:41 +07:00
stickers with ability to drag them
This commit is contained in:
parent
5f30df6f48
commit
b8434c32e7
19 changed files with 460 additions and 39 deletions
49
src/modules/Sticker.js
Normal file
49
src/modules/Sticker.js
Normal file
|
@ -0,0 +1,49 @@
|
|||
import L from 'leaflet';
|
||||
import 'leaflet-editable';
|
||||
|
||||
import { DomMarker } from '$utils/leafletDomMarkers';
|
||||
|
||||
export class Sticker {
|
||||
constructor({ latlng, deleteSticker }) {
|
||||
this.isDragging = false;
|
||||
|
||||
this.deleteSticker = deleteSticker;
|
||||
this.element = document.createElement('div');
|
||||
|
||||
const stickerImage = document.createElement('div');
|
||||
stickerImage.innerHTML = '<div class="sticker-label" />';
|
||||
|
||||
const stickerArrow = document.createElement('div');
|
||||
stickerArrow.innerHTML = '<div class="sticker-arrow" />';
|
||||
|
||||
this.element.appendChild(stickerArrow);
|
||||
this.element.appendChild(stickerImage);
|
||||
|
||||
const marker = new DomMarker({
|
||||
element: this.element,
|
||||
});
|
||||
|
||||
this.sticker = L.marker(latlng, { icon: marker });
|
||||
|
||||
stickerImage.addEventListener('mousedown', this.onDragStart);
|
||||
stickerImage.addEventListener('mouseup', this.onDragStop);
|
||||
//
|
||||
// this.sticker.addEventListener('click', this.onDelete);
|
||||
}
|
||||
|
||||
onDelete = () => {
|
||||
if (!this.isDragging) this.deleteSticker(this);
|
||||
};
|
||||
|
||||
onDragStart = e => {
|
||||
this.isDragging = true;
|
||||
this.sticker.disableEdit();
|
||||
console.log('dragStart');
|
||||
};
|
||||
|
||||
onDragStop = e => {
|
||||
this.isDragging = false;
|
||||
this.sticker.enableEdit();
|
||||
console.log('dragStop');
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue