diff --git a/demo/js/draw.js b/demo/js/draw.js index 68ccfb98..55a24f9f 100755 --- a/demo/js/draw.js +++ b/demo/js/draw.js @@ -34,7 +34,7 @@ const interactPlugin = createInteractPlugin({ layerId: 'stroke-inactive.cold', idProperty: 'id' }], - debug: true, + // debug: true, interactionModes: ['selectMarker', 'selectFeature'], // e.g. ['selectMarker'], ['selectFeature'], ['placeMarker'], or combinations multiSelect: true, contiguous: true, @@ -243,6 +243,10 @@ interactiveMap.on('draw:started', function (e) { interactPlugin.disable() }) +interactiveMap.on('draw:editstart', function (e) { + console.log('draw:editstart', e) +}) + interactiveMap.on('draw:created', function (e) { console.log('draw:created', e) interactiveMap.toggleButtonState('geometryActions', 'hidden', false) diff --git a/plugins/beta/draw-ml/src/api/editFeature.js b/plugins/beta/draw-ml/src/api/editFeature.js index 715ddb3a..da1dfadb 100644 --- a/plugins/beta/draw-ml/src/api/editFeature.js +++ b/plugins/beta/draw-ml/src/api/editFeature.js @@ -6,19 +6,24 @@ import { getSnapInstance } from '../utils/snapHelpers.js' * @param {string} featureId - ID of the feature to edit * @param {object} options - Options including snapLayers */ -export const editFeature = ({ appState, appConfig, mapState, pluginConfig, pluginState, mapProvider }, featureId, options = {}) => { +export const editFeature = ({ appState, appConfig, mapState, pluginConfig, pluginState, mapProvider, services }, featureId, options = {}) => { const { dispatch } = pluginState const { draw, map } = mapProvider + const { eventBus } = services if (!draw) { - return + return false } // Guard: feature must exist in draw before doing anything - if (!draw.get(featureId)) { - return + const existingFeature = draw.get(featureId) + if (!existingFeature) { + return false } + const editModeMap = { LineString: 'edit_line', Polygon: 'edit_polygon' } + eventBus.emit('draw:editstart', { mode: editModeMap[existingFeature.geometry.type] }) + // Determin snapLayers from pluginConfig or runtime config let snapLayers = null if (options.snapLayers === undefined) {