diff --git a/plugins/beta/draw-es/src/events.js b/plugins/beta/draw-es/src/events.js index d777d4cd..b0288d7e 100755 --- a/plugins/beta/draw-es/src/events.js +++ b/plugins/beta/draw-es/src/events.js @@ -91,7 +91,7 @@ export function attachEvents ({ pluginState, mapProvider, events, eventBus, butt // Prevent self-intersect // TODO - refactor this when rings and/or multipolygons are supported - if (toolInfoType === 'reshape') { + if (toolInfoType === 'reshape-stop') { const isSimple = simplifyOperator.isSimple(graphic.geometry) && graphic.geometry.rings.length === 1 if (!isSimple) { sketchViewModel.undo() diff --git a/plugins/datasets/src/adapters/esri/esriLayerAdapter.js b/plugins/datasets/src/adapters/esri/esriLayerAdapter.js index f872dfc9..57e3aec8 100644 --- a/plugins/datasets/src/adapters/esri/esriLayerAdapter.js +++ b/plugins/datasets/src/adapters/esri/esriLayerAdapter.js @@ -49,9 +49,21 @@ export default class EsriLayerAdapter extends LayerAdapter { // Finally show all layers that are visible based on the dataset/mapStyle visibility await Promise.all(topLevelDatasets.map(registryDataset => this.applyDatasetVisibility(registryDataset.id))) + this._reorderLayers() this.resolveReady() } + _reorderLayers () { + // Ensure that all sketch layers are on top of the map, so that they are not obscured by other layers + // Only applicable when the draw plugin is in use, but safe to call regardless + const layersLength = this._map?.allLayers?.items?.length + if (layersLength) { + this._map.allLayers.items + .filter((layer) => layer.id.includes('ketchLayer')) + .forEach((layer) => this._map.reorder(layer, layersLength)) + } + } + _addGroupLayer (esriGroupId) { // Either adds a new group layer to the map, or returns an existing one if it already exists if (!this._groupLayers[esriGroupId]) { @@ -117,6 +129,7 @@ export default class EsriLayerAdapter extends LayerAdapter { await this._addLayers(registryDataset) const { parentId } = registryDataset const vectorTileLayer = this._mapVisibilityLayers[parentId || datasetId] + this._reorderLayers() this.applyDatasetOpacity(datasetId) this._applyStyleLayerPaintProperties(registryDataset, vectorTileLayer) this.applyDatasetVisibility(datasetId)