From 069b1b74bbc369b3dddcd6fb2d64d77381ba0b17 Mon Sep 17 00:00:00 2001 From: Hsieh Chin Fan Date: Sun, 27 Oct 2024 23:48:19 +0800 Subject: feat: add menu item for add marker * remove code about adding reference link in editor.mjs * TODO: use local storage to access reference about marker --- src/MenuItem.mjs | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) (limited to 'src/MenuItem.mjs') diff --git a/src/MenuItem.mjs b/src/MenuItem.mjs index 1d864fd..11ce4be 100644 --- a/src/MenuItem.mjs +++ b/src/MenuItem.mjs @@ -1,7 +1,7 @@ import { shiftByWindow } from './utils.mjs' -/* eslint-disable no-unused-vars */ +import { addMarkerByPoint } from './dumbyUtils.mjs' +/* eslint-disable-next-line no-unused-vars */ import { GeoLink, getMarkersFromMaps, removeLeaderLines } from './Link.mjs' -/* eslint-enable */ import * as markers from './marker.mjs' /** @@ -495,3 +495,31 @@ export const setLeaderLineType = (link) => new Folder({ }, })), }) + +/** + * addMarker. + * + * @param {Object} options + * @param {HTMLElement} options.map - map element + * @param {Number[]} options.point - xy values in pixel + * @param {Function} options.isNameValid - check marker name is valid + * @param {Function} options.callback + */ +export const addMarker = ({ + map, + point, + isNameValid = () => true, + callback = null, +}) => new Item({ + text: 'Add Marker', + onclick: () => { + let markerName + do { + markerName = window.prompt(markerName ? 'Name exists' : 'Marker Name') + } while (markerName && !isNameValid(markerName)) + if (markerName === null) return + + const marker = addMarkerByPoint({ point, map }) + callback?.(marker) + }, +}) -- cgit v1.2.3-70-g09d2