diff --git a/src/common.ts b/src/common.ts index 2768de27..15b5d3a5 100644 --- a/src/common.ts +++ b/src/common.ts @@ -83,6 +83,7 @@ export interface TerraDrawModeRegisterConfig { onFinish: (finishedId: string) => void; project: Project; unproject: Unproject; + coordinatePrecision: number; } export type TerraDrawModeState = diff --git a/src/modes/base.mode.ts b/src/modes/base.mode.ts index 4ea00ea8..b4ff130e 100644 --- a/src/modes/base.mode.ts +++ b/src/modes/base.mode.ts @@ -34,7 +34,6 @@ export enum ModeTypes { export type BaseModeOptions = { styles?: Partial; pointerDistance?: number; - coordinatePrecision?: number; }; export abstract class TerraDrawBaseDrawMode { @@ -61,7 +60,7 @@ export abstract class TerraDrawBaseDrawMode { protected behaviors: TerraDrawModeBehavior[] = []; protected pointerDistance: number; - protected coordinatePrecision: number; + protected coordinatePrecision!: number; protected onStyleChange!: StoreChangeHandler; protected store!: GeoJSONStore; protected setDoubleClickToZoom!: TerraDrawModeRegisterConfig["setDoubleClickToZoom"]; @@ -76,8 +75,6 @@ export abstract class TerraDrawBaseDrawMode { options && options.styles ? { ...options.styles } : ({} as Partial); this.pointerDistance = (options && options.pointerDistance) || 40; - - this.coordinatePrecision = (options && options.coordinatePrecision) || 9; } type = ModeTypes.Drawing; @@ -134,7 +131,7 @@ export abstract class TerraDrawBaseDrawMode { project: this.project, unproject: this.unproject, pointerDistance: this.pointerDistance, - coordinatePrecision: this.coordinatePrecision, + coordinatePrecision: config.coordinatePrecision, }); } else { throw new Error("Can not register unless mode is unregistered"); diff --git a/src/terra-draw.ts b/src/terra-draw.ts index 02c1f737..53fbecf1 100644 --- a/src/terra-draw.ts +++ b/src/terra-draw.ts @@ -79,11 +79,7 @@ class TerraDraw { }) { this._adapter = options.adapter; - const coordinatePrecision = this._adapter.getCoordinatePrecision(); - - this._mode = new TerraDrawStaticMode({ - coordinatePrecision, - }); + this._mode = new TerraDrawStaticMode(); // Keep track of if there are duplicate modes const duplicateModeTracker = new Set(); @@ -97,8 +93,6 @@ class TerraDraw { } duplicateModeTracker.add(currentMode.mode); modeMap[currentMode.mode] = currentMode; - // ovveride the coordinate precision of the mode - modeMap[currentMode.mode].setCoordinatePrecision(coordinatePrecision); return modeMap; }, {}); @@ -259,6 +253,7 @@ class TerraDraw { onSelect: onSelect, onDeselect: onDeselect, onFinish: onFinish, + coordinatePrecision: this._adapter.getCoordinatePrecision(), }); }); } diff --git a/src/test/mock-config.ts b/src/test/mock-config.ts index bcbb2b5d..6c8c9dee 100644 --- a/src/test/mock-config.ts +++ b/src/test/mock-config.ts @@ -12,5 +12,6 @@ export function getMockModeConfig(mode: string) { unproject: jest.fn(), setDoubleClickToZoom: jest.fn(), onFinish: jest.fn(), + coordinatePrecision: 9, }; }