@deck.gl-community/editable-layers 9.0.0-alpha.1 → 9.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +19 -0
- package/README.md +2 -81
- package/dist/constants.js +4 -1
- package/dist/edit-modes/composite-mode.d.ts +1 -1
- package/dist/edit-modes/composite-mode.js +4 -1
- package/dist/edit-modes/draw-90degree-polygon-mode.d.ts +1 -1
- package/dist/edit-modes/draw-90degree-polygon-mode.js +29 -24
- package/dist/edit-modes/draw-circle-by-diameter-mode.d.ts +1 -1
- package/dist/edit-modes/draw-circle-by-diameter-mode.js +7 -4
- package/dist/edit-modes/draw-circle-from-center-mode.d.ts +1 -1
- package/dist/edit-modes/draw-circle-from-center-mode.js +7 -4
- package/dist/edit-modes/draw-ellipse-by-bounding-box-mode.d.ts +1 -1
- package/dist/edit-modes/draw-ellipse-by-bounding-box-mode.js +3 -0
- package/dist/edit-modes/draw-ellipse-using-three-points-mode.d.ts +1 -1
- package/dist/edit-modes/draw-ellipse-using-three-points-mode.js +3 -0
- package/dist/edit-modes/draw-line-string-mode.d.ts +1 -1
- package/dist/edit-modes/draw-line-string-mode.js +19 -16
- package/dist/edit-modes/draw-point-mode.d.ts +1 -1
- package/dist/edit-modes/draw-point-mode.js +7 -4
- package/dist/edit-modes/draw-polygon-by-dragging-mode.d.ts +1 -1
- package/dist/edit-modes/draw-polygon-by-dragging-mode.js +10 -5
- package/dist/edit-modes/draw-polygon-mode.d.ts +1 -1
- package/dist/edit-modes/draw-polygon-mode.js +20 -16
- package/dist/edit-modes/draw-rectangle-from-center-mode.d.ts +1 -1
- package/dist/edit-modes/draw-rectangle-from-center-mode.js +3 -0
- package/dist/edit-modes/draw-rectangle-mode.d.ts +1 -1
- package/dist/edit-modes/draw-rectangle-mode.js +3 -0
- package/dist/edit-modes/draw-rectangle-using-three-points-mode.d.ts +1 -1
- package/dist/edit-modes/draw-rectangle-using-three-points-mode.js +8 -5
- package/dist/edit-modes/draw-square-from-center-mode.d.ts +1 -1
- package/dist/edit-modes/draw-square-from-center-mode.js +3 -0
- package/dist/edit-modes/draw-square-mode.d.ts +1 -1
- package/dist/edit-modes/draw-square-mode.js +3 -0
- package/dist/edit-modes/duplicate-mode.d.ts +1 -1
- package/dist/edit-modes/duplicate-mode.js +3 -0
- package/dist/edit-modes/edit-mode.js +3 -1
- package/dist/edit-modes/elevation-mode.d.ts +2 -2
- package/dist/edit-modes/elevation-mode.js +8 -5
- package/dist/edit-modes/extend-line-string-mode.d.ts +1 -1
- package/dist/edit-modes/extend-line-string-mode.js +9 -6
- package/dist/edit-modes/extrude-mode.d.ts +1 -1
- package/dist/edit-modes/extrude-mode.js +10 -7
- package/dist/edit-modes/geojson-edit-mode.d.ts +1 -1
- package/dist/edit-modes/geojson-edit-mode.js +18 -15
- package/dist/edit-modes/immutable-feature-collection.d.ts +2 -1
- package/dist/edit-modes/immutable-feature-collection.js +25 -20
- package/dist/edit-modes/measure-angle-mode.d.ts +1 -1
- package/dist/edit-modes/measure-angle-mode.js +8 -8
- package/dist/edit-modes/measure-area-mode.d.ts +1 -1
- package/dist/edit-modes/measure-area-mode.js +7 -5
- package/dist/edit-modes/measure-distance-mode.d.ts +1 -1
- package/dist/edit-modes/measure-distance-mode.js +17 -14
- package/dist/edit-modes/modify-mode.d.ts +1 -1
- package/dist/edit-modes/modify-mode.js +17 -14
- package/dist/edit-modes/resize-circle-mode.d.ts +2 -2
- package/dist/edit-modes/resize-circle-mode.js +3 -1
- package/dist/edit-modes/rotate-mode.d.ts +1 -1
- package/dist/edit-modes/rotate-mode.js +8 -5
- package/dist/edit-modes/scale-mode.d.ts +1 -1
- package/dist/edit-modes/scale-mode.js +8 -5
- package/dist/edit-modes/snappable-mode.d.ts +1 -1
- package/dist/edit-modes/snappable-mode.js +8 -5
- package/dist/edit-modes/split-polygon-mode.d.ts +1 -1
- package/dist/edit-modes/split-polygon-mode.js +12 -9
- package/dist/edit-modes/three-click-polygon-mode.d.ts +1 -1
- package/dist/edit-modes/three-click-polygon-mode.js +9 -6
- package/dist/edit-modes/transform-mode.d.ts +1 -1
- package/dist/edit-modes/transform-mode.js +4 -1
- package/dist/edit-modes/translate-mode.d.ts +1 -1
- package/dist/edit-modes/translate-mode.js +7 -4
- package/dist/edit-modes/two-click-polygon-mode.d.ts +1 -1
- package/dist/edit-modes/two-click-polygon-mode.js +9 -6
- package/dist/edit-modes/types.d.ts +1 -1
- package/dist/edit-modes/types.js +3 -0
- package/dist/edit-modes/utils.d.ts +1 -1
- package/dist/edit-modes/utils.js +21 -19
- package/dist/edit-modes/view-mode.js +3 -0
- package/dist/editable-layers/editable-geojson-layer.d.ts +4 -4
- package/dist/editable-layers/editable-geojson-layer.js +27 -26
- package/dist/editable-layers/editable-h3-cluster-layer.d.ts +2 -2
- package/dist/editable-layers/editable-h3-cluster-layer.js +6 -3
- package/dist/editable-layers/editable-layer.d.ts +5 -5
- package/dist/editable-layers/editable-layer.js +18 -15
- package/dist/editable-layers/editable-path-layer.d.ts +1 -1
- package/dist/editable-layers/editable-path-layer.js +10 -7
- package/dist/editable-layers/elevated-edit-handle-layer.d.ts +1 -1
- package/dist/editable-layers/elevated-edit-handle-layer.js +6 -3
- package/dist/editable-layers/junction-scatterplot-layer.d.ts +2 -2
- package/dist/editable-layers/junction-scatterplot-layer.js +10 -7
- package/dist/editable-layers/selection-layer.d.ts +1 -1
- package/dist/editable-layers/selection-layer.js +5 -2
- package/dist/index.cjs +65 -537
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +19 -20
- package/dist/index.js +20 -18
- package/dist/lib/constants.js +3 -0
- package/dist/lib/deck-renderer/deck-cache.d.ts +1 -1
- package/dist/lib/deck-renderer/deck-cache.js +1 -1
- package/dist/lib/deck-renderer/deck-drawer.d.ts +2 -3
- package/dist/lib/deck-renderer/deck-drawer.js +12 -12
- package/dist/lib/feature.d.ts +4 -4
- package/dist/lib/feature.js +4 -1
- package/dist/lib/layer-mouse-event.d.ts +2 -2
- package/dist/lib/layer-mouse-event.js +4 -1
- package/dist/lib/layers/junctions-layer.d.ts +4 -4
- package/dist/lib/layers/junctions-layer.js +10 -7
- package/dist/lib/layers/segments-layer.d.ts +4 -4
- package/dist/lib/layers/segments-layer.js +11 -8
- package/dist/lib/layers/texts-layer.d.ts +3 -3
- package/dist/lib/layers/texts-layer.js +8 -5
- package/dist/lib/math.d.ts +1 -1
- package/dist/lib/math.js +3 -0
- package/dist/lib/{nebula.d.ts → nebula-core.d.ts} +2 -2
- package/dist/lib/{nebula.js → nebula-core.js} +7 -4
- package/dist/lib/nebula-layer.d.ts +2 -2
- package/dist/lib/nebula-layer.js +4 -1
- package/dist/lib/style.js +5 -2
- package/dist/mode-handlers/composite-mode-handler.d.ts +1 -1
- package/dist/mode-handlers/draw-90degree-polygon-handler.d.ts +1 -1
- package/dist/mode-handlers/draw-90degree-polygon-handler.js +13 -10
- package/dist/mode-handlers/draw-circle-by-bounding-box-handler.js +3 -0
- package/dist/mode-handlers/draw-circle-from-center-handler.js +3 -0
- package/dist/mode-handlers/draw-ellipse-by-bounding-box-handler.js +3 -0
- package/dist/mode-handlers/draw-ellipse-using-three-points-handler.js +5 -2
- package/dist/mode-handlers/draw-line-string-handler.js +7 -4
- package/dist/mode-handlers/draw-point-handler.js +4 -1
- package/dist/mode-handlers/draw-polygon-handler.d.ts +1 -1
- package/dist/mode-handlers/draw-polygon-handler.js +10 -7
- package/dist/mode-handlers/draw-rectangle-handler.js +3 -0
- package/dist/mode-handlers/draw-rectangle-using-three-points-handler.js +11 -8
- package/dist/mode-handlers/duplicate-handler.js +3 -0
- package/dist/mode-handlers/elevation-handler.d.ts +2 -2
- package/dist/mode-handlers/elevation-handler.js +8 -5
- package/dist/mode-handlers/extrude-handler.js +10 -7
- package/dist/mode-handlers/mode-handler.d.ts +1 -1
- package/dist/mode-handlers/mode-handler.js +17 -14
- package/dist/mode-handlers/modify-handler.d.ts +2 -2
- package/dist/mode-handlers/modify-handler.js +18 -15
- package/dist/mode-handlers/rotate-handler.d.ts +1 -1
- package/dist/mode-handlers/rotate-handler.js +4 -1
- package/dist/mode-handlers/scale-handler.d.ts +1 -1
- package/dist/mode-handlers/scale-handler.js +5 -2
- package/dist/mode-handlers/snappable-handler.d.ts +1 -1
- package/dist/mode-handlers/snappable-handler.js +6 -3
- package/dist/mode-handlers/split-polygon-handler.js +11 -8
- package/dist/mode-handlers/three-click-polygon-handler.js +3 -0
- package/dist/mode-handlers/translate-handler.d.ts +1 -1
- package/dist/mode-handlers/translate-handler.js +4 -1
- package/dist/mode-handlers/two-click-polygon-handler.js +3 -0
- package/dist/mode-handlers/view-handler.d.ts +1 -1
- package/dist/mode-handlers/view-handler.js +3 -0
- package/dist/shaderlib/color/color.d.ts +7 -6
- package/dist/shaderlib/color/color.js +7 -4
- package/dist/shaderlib/utils/utils.d.ts +2 -2
- package/dist/shaderlib/utils/utils.js +5 -2
- package/dist/{curve-utils.js → utils/curve-utils.js} +7 -4
- package/dist/{geojson-types.d.ts → utils/geojson-types.d.ts} +2 -25
- package/dist/utils/geojson-types.js +4 -0
- package/dist/{memoize.d.ts → utils/memoize.d.ts} +1 -1
- package/dist/{memoize.js → utils/memoize.js} +4 -1
- package/dist/{translateFromCenter.js → utils/translate-from-center.js} +4 -1
- package/dist/utils/types.js +4 -0
- package/dist/{utils.js → utils/utils.js} +8 -6
- package/package.json +10 -10
- package/src/constants.ts +5 -1
- package/src/edit-modes/composite-mode.ts +9 -5
- package/src/edit-modes/draw-90degree-polygon-mode.ts +38 -34
- package/src/edit-modes/draw-circle-by-diameter-mode.ts +16 -12
- package/src/edit-modes/draw-circle-from-center-mode.ts +15 -11
- package/src/edit-modes/draw-ellipse-by-bounding-box-mode.ts +8 -4
- package/src/edit-modes/draw-ellipse-using-three-points-mode.ts +9 -5
- package/src/edit-modes/draw-line-string-mode.ts +29 -25
- package/src/edit-modes/draw-point-mode.ts +13 -9
- package/src/edit-modes/draw-polygon-by-dragging-mode.ts +16 -16
- package/src/edit-modes/draw-polygon-mode.ts +28 -23
- package/src/edit-modes/draw-rectangle-from-center-mode.ts +6 -2
- package/src/edit-modes/draw-rectangle-mode.ts +6 -2
- package/src/edit-modes/draw-rectangle-using-three-points-mode.ts +12 -8
- package/src/edit-modes/draw-square-from-center-mode.ts +7 -3
- package/src/edit-modes/draw-square-mode.ts +7 -3
- package/src/edit-modes/duplicate-mode.ts +7 -3
- package/src/edit-modes/edit-mode.ts +5 -1
- package/src/edit-modes/elevation-mode.ts +13 -9
- package/src/edit-modes/extend-line-string-mode.ts +16 -12
- package/src/edit-modes/extrude-mode.ts +22 -18
- package/src/edit-modes/geojson-edit-mode.ts +37 -33
- package/src/edit-modes/immutable-feature-collection.ts +28 -22
- package/src/edit-modes/measure-angle-mode.ts +66 -59
- package/src/edit-modes/measure-area-mode.ts +13 -10
- package/src/edit-modes/measure-distance-mode.ts +37 -33
- package/src/edit-modes/modify-mode.ts +36 -32
- package/src/edit-modes/resize-circle-mode.ts +8 -5
- package/src/edit-modes/rotate-mode.ts +22 -18
- package/src/edit-modes/scale-mode.ts +29 -23
- package/src/edit-modes/snappable-mode.ts +19 -15
- package/src/edit-modes/split-polygon-mode.ts +25 -21
- package/src/edit-modes/three-click-polygon-mode.ts +15 -11
- package/src/edit-modes/transform-mode.ts +15 -11
- package/src/edit-modes/translate-mode.ts +15 -11
- package/src/edit-modes/two-click-polygon-mode.ts +15 -11
- package/src/edit-modes/types.ts +5 -1
- package/src/edit-modes/utils.ts +33 -30
- package/src/edit-modes/view-mode.ts +5 -1
- package/src/editable-layers/editable-geojson-layer.ts +44 -41
- package/src/editable-layers/editable-h3-cluster-layer.ts +17 -14
- package/src/editable-layers/editable-layer.ts +42 -32
- package/src/editable-layers/editable-path-layer.ts +12 -8
- package/src/editable-layers/elevated-edit-handle-layer.ts +11 -7
- package/src/editable-layers/junction-scatterplot-layer.ts +15 -11
- package/src/editable-layers/selection-layer.ts +11 -7
- package/src/index.ts +68 -65
- package/src/lib/constants.ts +4 -0
- package/src/lib/deck-renderer/deck-cache.ts +1 -1
- package/src/lib/deck-renderer/deck-drawer.ts +28 -28
- package/src/lib/feature.ts +7 -3
- package/src/lib/layer-mouse-event.ts +7 -6
- package/src/lib/layers/junctions-layer.ts +14 -10
- package/src/lib/layers/segments-layer.ts +24 -20
- package/src/lib/layers/texts-layer.ts +18 -14
- package/src/lib/math.ts +5 -1
- package/src/lib/{nebula.ts → nebula-core.ts} +8 -4
- package/src/lib/nebula-layer.ts +9 -5
- package/src/lib/style.ts +6 -2
- package/src/mode-handlers/composite-mode-handler.ts +6 -6
- package/src/mode-handlers/draw-90degree-polygon-handler.ts +22 -18
- package/src/mode-handlers/draw-circle-by-bounding-box-handler.ts +10 -6
- package/src/mode-handlers/draw-circle-from-center-handler.ts +10 -6
- package/src/mode-handlers/draw-ellipse-by-bounding-box-handler.ts +9 -5
- package/src/mode-handlers/draw-ellipse-using-three-points-handler.ts +12 -8
- package/src/mode-handlers/draw-line-string-handler.ts +12 -8
- package/src/mode-handlers/draw-point-handler.ts +9 -5
- package/src/mode-handlers/draw-polygon-handler.ts +16 -12
- package/src/mode-handlers/draw-rectangle-handler.ts +8 -4
- package/src/mode-handlers/draw-rectangle-using-three-points-handler.ts +17 -13
- package/src/mode-handlers/duplicate-handler.ts +8 -4
- package/src/mode-handlers/elevation-handler.ts +14 -10
- package/src/mode-handlers/extrude-handler.ts +15 -11
- package/src/mode-handlers/mode-handler.ts +26 -28
- package/src/mode-handlers/modify-handler.ts +29 -25
- package/src/mode-handlers/rotate-handler.ts +13 -17
- package/src/mode-handlers/scale-handler.ts +13 -13
- package/src/mode-handlers/snappable-handler.ts +28 -24
- package/src/mode-handlers/split-polygon-handler.ts +22 -18
- package/src/mode-handlers/three-click-polygon-handler.ts +6 -2
- package/src/mode-handlers/translate-handler.ts +12 -8
- package/src/mode-handlers/two-click-polygon-handler.ts +6 -2
- package/src/mode-handlers/view-handler.ts +7 -3
- package/src/shaderlib/color/color.ts +10 -5
- package/src/shaderlib/utils/utils.ts +6 -2
- package/src/{curve-utils.ts → utils/curve-utils.ts} +11 -7
- package/src/{geojson-types.ts → utils/geojson-types.ts} +16 -31
- package/src/{memoize.ts → utils/memoize.ts} +5 -1
- package/src/{translateFromCenter.ts → utils/translate-from-center.ts} +8 -4
- package/src/{types.ts → utils/types.ts} +4 -0
- package/src/{utils.ts → utils/utils.ts} +14 -11
- package/dist/editable-layers/path-marker-layer/arrow-2d-geometry.d.ts +0 -4
- package/dist/editable-layers/path-marker-layer/arrow-2d-geometry.js +0 -55
- package/dist/editable-layers/path-marker-layer/create-path-markers.d.ts +0 -16
- package/dist/editable-layers/path-marker-layer/create-path-markers.js +0 -75
- package/dist/editable-layers/path-marker-layer/path-marker-layer.d.ts +0 -40
- package/dist/editable-layers/path-marker-layer/path-marker-layer.js +0 -121
- package/dist/editable-layers/path-marker-layer/polyline.d.ts +0 -18
- package/dist/editable-layers/path-marker-layer/polyline.js +0 -37
- package/dist/editable-layers/path-outline-layer/path-outline-layer.d.ts +0 -26
- package/dist/editable-layers/path-outline-layer/path-outline-layer.js +0 -106
- package/dist/geojson-types.js +0 -2
- package/dist/shaderlib/outline/outline.d.ts +0 -8
- package/dist/shaderlib/outline/outline.js +0 -97
- package/dist/types.js +0 -1
- package/src/editable-layers/path-marker-layer/arrow-2d-geometry.ts +0 -61
- package/src/editable-layers/path-marker-layer/create-path-markers.ts +0 -107
- package/src/editable-layers/path-marker-layer/path-marker-layer.ts +0 -179
- package/src/editable-layers/path-marker-layer/polyline.ts +0 -40
- package/src/editable-layers/path-outline-layer/path-outline-layer.ts +0 -147
- package/src/shaderlib/outline/outline.ts +0 -101
- /package/dist/{curve-utils.d.ts → utils/curve-utils.d.ts} +0 -0
- /package/dist/{translateFromCenter.d.ts → utils/translate-from-center.d.ts} +0 -0
- /package/dist/{types.d.ts → utils/types.d.ts} +0 -0
- /package/dist/{utils.d.ts → utils/utils.d.ts} +0 -0
|
@@ -1,63 +1,70 @@
|
|
|
1
1
|
import turfBearing from '@turf/bearing';
|
|
2
2
|
import turfCenter from '@turf/center';
|
|
3
|
-
import memoize from '../memoize';
|
|
3
|
+
import {memoize} from '../utils/memoize';
|
|
4
4
|
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
5
|
+
import {ClickEvent, PointerMoveEvent, Tooltip, ModeProps, GuideFeatureCollection} from './types';
|
|
6
|
+
import {FeatureCollection, Position} from '../utils/geojson-types';
|
|
7
|
+
import {GeoJsonEditMode} from './geojson-edit-mode';
|
|
8
8
|
|
|
9
9
|
const DEFAULT_TOOLTIPS: Tooltip[] = [];
|
|
10
10
|
|
|
11
11
|
export class MeasureAngleMode extends GeoJsonEditMode {
|
|
12
|
-
_getTooltips = memoize(
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
12
|
+
_getTooltips = memoize(
|
|
13
|
+
({
|
|
14
|
+
modeConfig,
|
|
15
|
+
vertex,
|
|
16
|
+
point1,
|
|
17
|
+
point2
|
|
18
|
+
}: {
|
|
19
|
+
modeConfig: any;
|
|
20
|
+
vertex: any;
|
|
21
|
+
point1: Position;
|
|
22
|
+
point2: Position;
|
|
23
|
+
}): Tooltip[] => {
|
|
24
|
+
let tooltips = DEFAULT_TOOLTIPS;
|
|
25
|
+
|
|
26
|
+
if (vertex && point1 && point2) {
|
|
27
|
+
const {formatTooltip, measurementCallback} = modeConfig || {};
|
|
28
|
+
const units = 'deg';
|
|
29
|
+
|
|
30
|
+
const angle1 = turfBearing(vertex, point1);
|
|
31
|
+
const angle2 = turfBearing(vertex, point2);
|
|
32
|
+
let angle = Math.abs(angle1 - angle2);
|
|
33
|
+
if (angle > 180) {
|
|
34
|
+
angle = 360 - angle;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
let text: string;
|
|
38
|
+
if (formatTooltip) {
|
|
39
|
+
text = formatTooltip(angle);
|
|
40
|
+
} else {
|
|
41
|
+
// By default, round to 2 decimal places and append units
|
|
42
|
+
// @ts-expect-error angle isn't string
|
|
43
|
+
text = `${parseFloat(angle).toFixed(2)} ${units}`;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if (measurementCallback) {
|
|
47
|
+
measurementCallback(angle);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const position = turfCenter({
|
|
51
|
+
type: 'FeatureCollection',
|
|
52
|
+
features: [point1, point2].map((p) => ({
|
|
53
|
+
type: 'Feature',
|
|
54
|
+
geometry: {
|
|
55
|
+
type: 'Point',
|
|
56
|
+
coordinates: p
|
|
57
|
+
},
|
|
58
|
+
properties: {}
|
|
59
|
+
}))
|
|
60
|
+
}).geometry.coordinates;
|
|
61
|
+
|
|
62
|
+
tooltips = [{position, text}];
|
|
29
63
|
}
|
|
30
64
|
|
|
31
|
-
|
|
32
|
-
if (formatTooltip) {
|
|
33
|
-
text = formatTooltip(angle);
|
|
34
|
-
} else {
|
|
35
|
-
// By default, round to 2 decimal places and append units
|
|
36
|
-
// @ts-expect-error angle isn't string
|
|
37
|
-
text = `${parseFloat(angle).toFixed(2)} ${units}`;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
if (measurementCallback) {
|
|
41
|
-
measurementCallback(angle);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
const position = turfCenter({
|
|
45
|
-
type: 'FeatureCollection',
|
|
46
|
-
features: [point1, point2].map((p) => ({
|
|
47
|
-
type: 'Feature',
|
|
48
|
-
geometry: {
|
|
49
|
-
type: 'Point',
|
|
50
|
-
coordinates: p,
|
|
51
|
-
},
|
|
52
|
-
properties: {}
|
|
53
|
-
})),
|
|
54
|
-
}).geometry.coordinates as Position;
|
|
55
|
-
|
|
56
|
-
tooltips = [{position, text}];
|
|
65
|
+
return tooltips;
|
|
57
66
|
}
|
|
58
|
-
|
|
59
|
-
return tooltips;
|
|
60
|
-
});
|
|
67
|
+
);
|
|
61
68
|
|
|
62
69
|
handleClick(event: ClickEvent, props: ModeProps<FeatureCollection>): void {
|
|
63
70
|
if (this.getClickSequence().length >= 3) {
|
|
@@ -86,28 +93,28 @@ export class MeasureAngleMode extends GeoJsonEditMode {
|
|
|
86
93
|
|
|
87
94
|
// Return features that can be used as a guide for editing the data
|
|
88
95
|
getGuides(props: ModeProps<FeatureCollection>): GuideFeatureCollection {
|
|
89
|
-
const guides: GuideFeatureCollection = {
|
|
90
|
-
const {
|
|
96
|
+
const guides: GuideFeatureCollection = {type: 'FeatureCollection', features: []};
|
|
97
|
+
const {features} = guides;
|
|
91
98
|
|
|
92
99
|
const points = this.getPoints(props);
|
|
93
100
|
|
|
94
101
|
if (points.length > 2) {
|
|
95
102
|
features.push({
|
|
96
103
|
type: 'Feature',
|
|
97
|
-
properties: {
|
|
104
|
+
properties: {guideType: 'tentative'},
|
|
98
105
|
geometry: {
|
|
99
106
|
type: 'LineString',
|
|
100
|
-
coordinates: [points[1], points[0], points[2]]
|
|
101
|
-
}
|
|
107
|
+
coordinates: [points[1], points[0], points[2]]
|
|
108
|
+
}
|
|
102
109
|
});
|
|
103
110
|
} else if (points.length > 1) {
|
|
104
111
|
features.push({
|
|
105
112
|
type: 'Feature',
|
|
106
|
-
properties: {
|
|
113
|
+
properties: {guideType: 'tentative'},
|
|
107
114
|
geometry: {
|
|
108
115
|
type: 'LineString',
|
|
109
|
-
coordinates: [points[1], points[0]]
|
|
110
|
-
}
|
|
116
|
+
coordinates: [points[1], points[0]]
|
|
117
|
+
}
|
|
111
118
|
});
|
|
112
119
|
}
|
|
113
120
|
|
|
@@ -121,7 +128,7 @@ export class MeasureAngleMode extends GeoJsonEditMode {
|
|
|
121
128
|
modeConfig: props.modeConfig,
|
|
122
129
|
vertex: points[0],
|
|
123
130
|
point1: points[1],
|
|
124
|
-
point2: points[2]
|
|
131
|
+
point2: points[2]
|
|
125
132
|
}) as Tooltip[];
|
|
126
133
|
}
|
|
127
134
|
}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
+
// deck.gl-community
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
|
|
1
5
|
import turfArea from '@turf/area';
|
|
2
6
|
import turfCentroid from '@turf/centroid';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
7
|
+
import {ClickEvent, Tooltip, ModeProps} from './types';
|
|
8
|
+
import {FeatureCollection} from '../utils/geojson-types';
|
|
9
|
+
import {DrawPolygonMode} from './draw-polygon-mode';
|
|
6
10
|
|
|
7
11
|
const DEFAULT_TOOLTIPS = [];
|
|
8
12
|
|
|
@@ -10,7 +14,7 @@ export class MeasureAreaMode extends DrawPolygonMode {
|
|
|
10
14
|
handleClick(event: ClickEvent, props: ModeProps<FeatureCollection>) {
|
|
11
15
|
const propsWithoutEdit = {
|
|
12
16
|
...props,
|
|
13
|
-
onEdit: () => {}
|
|
17
|
+
onEdit: () => {}
|
|
14
18
|
};
|
|
15
19
|
|
|
16
20
|
super.handleClick(event, propsWithoutEdit);
|
|
@@ -19,7 +23,7 @@ export class MeasureAreaMode extends DrawPolygonMode {
|
|
|
19
23
|
handleKeyUp(event: KeyboardEvent, props: ModeProps<FeatureCollection>): void {
|
|
20
24
|
const propsWithoutEdit = {
|
|
21
25
|
...props,
|
|
22
|
-
onEdit: () => {}
|
|
26
|
+
onEdit: () => {}
|
|
23
27
|
};
|
|
24
28
|
|
|
25
29
|
super.handleKeyUp(event, propsWithoutEdit);
|
|
@@ -29,8 +33,8 @@ export class MeasureAreaMode extends DrawPolygonMode {
|
|
|
29
33
|
const tentativeGuide = this.getTentativeGuide(props);
|
|
30
34
|
|
|
31
35
|
if (tentativeGuide && tentativeGuide.geometry.type === 'Polygon') {
|
|
32
|
-
const {
|
|
33
|
-
const {
|
|
36
|
+
const {modeConfig} = props;
|
|
37
|
+
const {formatTooltip, measurementCallback} = modeConfig || {};
|
|
34
38
|
const units = 'sq. m';
|
|
35
39
|
|
|
36
40
|
const centroid = turfCentroid(tentativeGuide);
|
|
@@ -51,10 +55,9 @@ export class MeasureAreaMode extends DrawPolygonMode {
|
|
|
51
55
|
|
|
52
56
|
return [
|
|
53
57
|
{
|
|
54
|
-
// @ts-expect-error turf types diff
|
|
55
58
|
position: centroid.geometry.coordinates,
|
|
56
|
-
text
|
|
57
|
-
}
|
|
59
|
+
text
|
|
60
|
+
}
|
|
58
61
|
];
|
|
59
62
|
}
|
|
60
63
|
return DEFAULT_TOOLTIPS;
|
|
@@ -1,24 +1,28 @@
|
|
|
1
|
+
// deck.gl-community
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
|
|
1
5
|
import turfDistance from '@turf/distance';
|
|
2
6
|
import turfMidpoint from '@turf/midpoint';
|
|
3
|
-
import {
|
|
7
|
+
import {FeatureCollection, Position} from '../utils/geojson-types';
|
|
4
8
|
import {
|
|
5
9
|
ClickEvent,
|
|
6
10
|
PointerMoveEvent,
|
|
7
11
|
ModeProps,
|
|
8
12
|
GuideFeatureCollection,
|
|
9
13
|
Tooltip,
|
|
10
|
-
GuideFeature
|
|
14
|
+
GuideFeature
|
|
11
15
|
} from './types';
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
16
|
+
import {getPickedEditHandle} from './utils';
|
|
17
|
+
import {GeoJsonEditMode} from './geojson-edit-mode';
|
|
14
18
|
|
|
15
19
|
export class MeasureDistanceMode extends GeoJsonEditMode {
|
|
16
20
|
_isMeasuringSessionFinished = false;
|
|
17
21
|
_currentTooltips: Tooltip[] = [];
|
|
18
22
|
_currentDistance = 0;
|
|
19
23
|
|
|
20
|
-
_calculateDistanceForTooltip = ({
|
|
21
|
-
const {
|
|
24
|
+
_calculateDistanceForTooltip = ({positionA, positionB, modeConfig}) => {
|
|
25
|
+
const {turfOptions, measurementCallback} = modeConfig || {};
|
|
22
26
|
const distance = turfDistance(positionA, positionB, turfOptions);
|
|
23
27
|
|
|
24
28
|
if (measurementCallback) {
|
|
@@ -29,7 +33,7 @@ export class MeasureDistanceMode extends GeoJsonEditMode {
|
|
|
29
33
|
};
|
|
30
34
|
|
|
31
35
|
_formatTooltip(distance, modeConfig?) {
|
|
32
|
-
const {
|
|
36
|
+
const {formatTooltip, turfOptions} = modeConfig || {};
|
|
33
37
|
const units = (turfOptions && turfOptions.units) || 'kilometers';
|
|
34
38
|
|
|
35
39
|
let text;
|
|
@@ -44,8 +48,8 @@ export class MeasureDistanceMode extends GeoJsonEditMode {
|
|
|
44
48
|
}
|
|
45
49
|
|
|
46
50
|
handleClick(event: ClickEvent, props: ModeProps<FeatureCollection>) {
|
|
47
|
-
const {
|
|
48
|
-
const {
|
|
51
|
+
const {modeConfig, data, onEdit} = props;
|
|
52
|
+
const {centerTooltipsOnLine = false} = modeConfig || {};
|
|
49
53
|
|
|
50
54
|
// restart measuring session
|
|
51
55
|
if (this._isMeasuringSessionFinished) {
|
|
@@ -55,7 +59,7 @@ export class MeasureDistanceMode extends GeoJsonEditMode {
|
|
|
55
59
|
this._currentDistance = 0;
|
|
56
60
|
}
|
|
57
61
|
|
|
58
|
-
const {
|
|
62
|
+
const {picks} = event;
|
|
59
63
|
const clickedEditHandle = getPickedEditHandle(picks);
|
|
60
64
|
|
|
61
65
|
let positionAdded = false;
|
|
@@ -79,19 +83,19 @@ export class MeasureDistanceMode extends GeoJsonEditMode {
|
|
|
79
83
|
this._currentDistance += this._calculateDistanceForTooltip({
|
|
80
84
|
positionA: clickSequence[clickSequence.length - 2],
|
|
81
85
|
positionB: clickSequence[clickSequence.length - 1],
|
|
82
|
-
modeConfig
|
|
86
|
+
modeConfig
|
|
83
87
|
});
|
|
84
88
|
|
|
85
89
|
const tooltipPosition = centerTooltipsOnLine
|
|
86
90
|
? turfMidpoint(
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
91
|
+
clickSequence[clickSequence.length - 2],
|
|
92
|
+
clickSequence[clickSequence.length - 1]
|
|
93
|
+
).geometry.coordinates
|
|
90
94
|
: event.mapCoords;
|
|
91
95
|
|
|
92
96
|
this._currentTooltips.push({
|
|
93
|
-
position: tooltipPosition
|
|
94
|
-
text: this._formatTooltip(this._currentDistance, modeConfig)
|
|
97
|
+
position: tooltipPosition,
|
|
98
|
+
text: this._formatTooltip(this._currentDistance, modeConfig)
|
|
95
99
|
});
|
|
96
100
|
}
|
|
97
101
|
|
|
@@ -101,8 +105,8 @@ export class MeasureDistanceMode extends GeoJsonEditMode {
|
|
|
101
105
|
updatedData: data,
|
|
102
106
|
editType: 'addTentativePosition',
|
|
103
107
|
editContext: {
|
|
104
|
-
position: event.mapCoords
|
|
105
|
-
}
|
|
108
|
+
position: event.mapCoords
|
|
109
|
+
}
|
|
106
110
|
});
|
|
107
111
|
}
|
|
108
112
|
}
|
|
@@ -111,7 +115,7 @@ export class MeasureDistanceMode extends GeoJsonEditMode {
|
|
|
111
115
|
if (this._isMeasuringSessionFinished) return;
|
|
112
116
|
|
|
113
117
|
event.stopPropagation();
|
|
114
|
-
const {
|
|
118
|
+
const {key} = event;
|
|
115
119
|
|
|
116
120
|
const clickSequenceLength = this.getClickSequence().length;
|
|
117
121
|
|
|
@@ -135,7 +139,7 @@ export class MeasureDistanceMode extends GeoJsonEditMode {
|
|
|
135
139
|
}
|
|
136
140
|
|
|
137
141
|
getGuides(props: ModeProps<FeatureCollection>): GuideFeatureCollection {
|
|
138
|
-
const {
|
|
142
|
+
const {lastPointerMoveEvent} = props;
|
|
139
143
|
const clickSequence = this.getClickSequence();
|
|
140
144
|
|
|
141
145
|
const lastCoords =
|
|
@@ -145,19 +149,19 @@ export class MeasureDistanceMode extends GeoJsonEditMode {
|
|
|
145
149
|
|
|
146
150
|
const guides: GuideFeatureCollection = {
|
|
147
151
|
type: 'FeatureCollection',
|
|
148
|
-
features: []
|
|
152
|
+
features: []
|
|
149
153
|
};
|
|
150
154
|
|
|
151
155
|
if (clickSequence.length > 0) {
|
|
152
156
|
guides.features.push({
|
|
153
157
|
type: 'Feature',
|
|
154
158
|
properties: {
|
|
155
|
-
guideType: 'tentative'
|
|
159
|
+
guideType: 'tentative'
|
|
156
160
|
},
|
|
157
161
|
geometry: {
|
|
158
162
|
type: 'LineString',
|
|
159
|
-
coordinates: [...clickSequence, ...lastCoords]
|
|
160
|
-
}
|
|
163
|
+
coordinates: [...clickSequence, ...lastCoords]
|
|
164
|
+
}
|
|
161
165
|
});
|
|
162
166
|
}
|
|
163
167
|
|
|
@@ -167,12 +171,12 @@ export class MeasureDistanceMode extends GeoJsonEditMode {
|
|
|
167
171
|
guideType: 'editHandle',
|
|
168
172
|
editHandleType: 'existing',
|
|
169
173
|
featureIndex: -1,
|
|
170
|
-
positionIndexes: [index]
|
|
174
|
+
positionIndexes: [index]
|
|
171
175
|
},
|
|
172
176
|
geometry: {
|
|
173
177
|
type: 'Point',
|
|
174
|
-
coordinates: clickedCoord
|
|
175
|
-
}
|
|
178
|
+
coordinates: clickedCoord
|
|
179
|
+
}
|
|
176
180
|
}));
|
|
177
181
|
|
|
178
182
|
guides.features.push(...editHandles);
|
|
@@ -185,28 +189,28 @@ export class MeasureDistanceMode extends GeoJsonEditMode {
|
|
|
185
189
|
}
|
|
186
190
|
|
|
187
191
|
getTooltips(props: ModeProps<FeatureCollection>): Tooltip[] {
|
|
188
|
-
const {
|
|
189
|
-
const {
|
|
192
|
+
const {lastPointerMoveEvent, modeConfig} = props;
|
|
193
|
+
const {centerTooltipsOnLine = false} = modeConfig || {};
|
|
190
194
|
const positions = this.getClickSequence();
|
|
191
195
|
|
|
192
196
|
if (positions.length > 0 && lastPointerMoveEvent && !this._isMeasuringSessionFinished) {
|
|
193
197
|
const distance = this._calculateDistanceForTooltip({
|
|
194
198
|
positionA: positions[positions.length - 1],
|
|
195
199
|
positionB: lastPointerMoveEvent.mapCoords,
|
|
196
|
-
modeConfig: props.modeConfig
|
|
200
|
+
modeConfig: props.modeConfig
|
|
197
201
|
});
|
|
198
202
|
|
|
199
203
|
const tooltipPosition = centerTooltipsOnLine
|
|
200
204
|
? turfMidpoint(positions[positions.length - 1], lastPointerMoveEvent.mapCoords).geometry
|
|
201
|
-
|
|
205
|
+
.coordinates
|
|
202
206
|
: lastPointerMoveEvent.mapCoords;
|
|
203
207
|
|
|
204
208
|
return [
|
|
205
209
|
...this._currentTooltips,
|
|
206
210
|
{
|
|
207
211
|
position: tooltipPosition,
|
|
208
|
-
text: this._formatTooltip(this._currentDistance + distance, modeConfig)
|
|
209
|
-
}
|
|
212
|
+
text: this._formatTooltip(this._currentDistance + distance, modeConfig)
|
|
213
|
+
}
|
|
210
214
|
];
|
|
211
215
|
}
|
|
212
216
|
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
// deck.gl-community
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
|
|
5
|
+
import {point, lineString as toLineString} from '@turf/helpers';
|
|
2
6
|
import {
|
|
3
7
|
recursivelyTraverseNestedArrays,
|
|
4
8
|
nearestPointOnProjectedLine,
|
|
@@ -9,9 +13,9 @@ import {
|
|
|
9
13
|
getPickedExistingEditHandle,
|
|
10
14
|
getPickedIntermediateEditHandle,
|
|
11
15
|
updateRectanglePosition,
|
|
12
|
-
NearestPointType
|
|
16
|
+
NearestPointType
|
|
13
17
|
} from './utils';
|
|
14
|
-
import {
|
|
18
|
+
import {LineString, Point, Polygon, FeatureCollection, FeatureOf} from '../utils/geojson-types';
|
|
15
19
|
import {
|
|
16
20
|
ModeProps,
|
|
17
21
|
ClickEvent,
|
|
@@ -22,24 +26,24 @@ import {
|
|
|
22
26
|
Viewport,
|
|
23
27
|
GuideFeatureCollection,
|
|
24
28
|
EditHandleFeature,
|
|
25
|
-
GuideFeature
|
|
29
|
+
GuideFeature
|
|
26
30
|
} from './types';
|
|
27
|
-
import {
|
|
28
|
-
import {
|
|
31
|
+
import {GeoJsonEditMode} from './geojson-edit-mode';
|
|
32
|
+
import {ImmutableFeatureCollection} from './immutable-feature-collection';
|
|
29
33
|
|
|
30
34
|
export class ModifyMode extends GeoJsonEditMode {
|
|
31
35
|
// eslint-disable-next-line complexity
|
|
32
36
|
getGuides(props: ModeProps<FeatureCollection>): GuideFeatureCollection {
|
|
33
37
|
const handles: GuideFeature[] = [];
|
|
34
38
|
|
|
35
|
-
const {
|
|
36
|
-
const {
|
|
39
|
+
const {data, lastPointerMoveEvent} = props;
|
|
40
|
+
const {features} = data;
|
|
37
41
|
const picks = lastPointerMoveEvent && lastPointerMoveEvent.picks;
|
|
38
42
|
const mapCoords = lastPointerMoveEvent && lastPointerMoveEvent.mapCoords;
|
|
39
43
|
|
|
40
44
|
for (const index of props.selectedIndexes) {
|
|
41
45
|
if (index < features.length) {
|
|
42
|
-
const {
|
|
46
|
+
const {geometry} = features[index];
|
|
43
47
|
handles.push(...getEditHandlesForGeometry(geometry, index));
|
|
44
48
|
} else {
|
|
45
49
|
console.warn(`selectedFeatureIndexes out of range ${index}`); // eslint-disable-line no-console,no-undef
|
|
@@ -88,21 +92,21 @@ export class ModifyMode extends GeoJsonEditMode {
|
|
|
88
92
|
// tack on the lone intermediate point to the set of handles
|
|
89
93
|
if (intermediatePoint) {
|
|
90
94
|
const {
|
|
91
|
-
geometry: {
|
|
92
|
-
properties: {
|
|
93
|
-
} = intermediatePoint
|
|
95
|
+
geometry: {coordinates: position},
|
|
96
|
+
properties: {index}
|
|
97
|
+
} = intermediatePoint;
|
|
94
98
|
handles.push({
|
|
95
99
|
type: 'Feature',
|
|
96
100
|
properties: {
|
|
97
101
|
guideType: 'editHandle',
|
|
98
102
|
editHandleType: 'intermediate',
|
|
99
103
|
featureIndex: featureAsPick.index,
|
|
100
|
-
positionIndexes: [...positionIndexPrefix, index + 1]
|
|
104
|
+
positionIndexes: [...positionIndexPrefix, index + 1]
|
|
101
105
|
},
|
|
102
106
|
geometry: {
|
|
103
107
|
type: 'Point',
|
|
104
|
-
coordinates: position
|
|
105
|
-
}
|
|
108
|
+
coordinates: position
|
|
109
|
+
}
|
|
106
110
|
});
|
|
107
111
|
}
|
|
108
112
|
}
|
|
@@ -110,7 +114,7 @@ export class ModifyMode extends GeoJsonEditMode {
|
|
|
110
114
|
|
|
111
115
|
return {
|
|
112
116
|
type: 'FeatureCollection',
|
|
113
|
-
features: handles
|
|
117
|
+
features: handles
|
|
114
118
|
};
|
|
115
119
|
}
|
|
116
120
|
|
|
@@ -120,7 +124,7 @@ export class ModifyMode extends GeoJsonEditMode {
|
|
|
120
124
|
inPoint: FeatureOf<Point>,
|
|
121
125
|
viewport: Viewport | null | undefined
|
|
122
126
|
): NearestPointType {
|
|
123
|
-
const {
|
|
127
|
+
const {coordinates} = line.geometry;
|
|
124
128
|
if (coordinates.some((coord) => coord.length > 2)) {
|
|
125
129
|
if (viewport) {
|
|
126
130
|
// This line has elevation, we need to use alternative algorithm
|
|
@@ -131,7 +135,7 @@ export class ModifyMode extends GeoJsonEditMode {
|
|
|
131
135
|
'Editing 3D point but modeConfig.viewport not provided. Falling back to 2D logic.'
|
|
132
136
|
);
|
|
133
137
|
}
|
|
134
|
-
return nearestPointOnLine(line, inPoint, viewport
|
|
138
|
+
return nearestPointOnLine(line, inPoint, viewport);
|
|
135
139
|
}
|
|
136
140
|
|
|
137
141
|
handleClick(event: ClickEvent, props: ModeProps<FeatureCollection>) {
|
|
@@ -139,7 +143,7 @@ export class ModifyMode extends GeoJsonEditMode {
|
|
|
139
143
|
const pickedIntermediateHandle = getPickedIntermediateEditHandle(event.picks);
|
|
140
144
|
|
|
141
145
|
if (pickedExistingHandle) {
|
|
142
|
-
const {
|
|
146
|
+
const {featureIndex, positionIndexes} = pickedExistingHandle.properties;
|
|
143
147
|
|
|
144
148
|
let updatedData;
|
|
145
149
|
try {
|
|
@@ -157,16 +161,16 @@ export class ModifyMode extends GeoJsonEditMode {
|
|
|
157
161
|
editContext: {
|
|
158
162
|
featureIndexes: [featureIndex],
|
|
159
163
|
positionIndexes,
|
|
160
|
-
position: pickedExistingHandle.geometry.coordinates
|
|
161
|
-
}
|
|
164
|
+
position: pickedExistingHandle.geometry.coordinates
|
|
165
|
+
}
|
|
162
166
|
});
|
|
163
167
|
}
|
|
164
168
|
} else if (pickedIntermediateHandle) {
|
|
165
|
-
const {
|
|
169
|
+
const {featureIndex, positionIndexes} = pickedIntermediateHandle.properties;
|
|
166
170
|
|
|
167
171
|
const feature = props.data.features[featureIndex];
|
|
168
172
|
const canAddPosition = !(
|
|
169
|
-
props.modeConfig?.lockRectangles && feature?.properties
|
|
173
|
+
props.modeConfig?.lockRectangles && feature?.properties.shape === 'Rectangle'
|
|
170
174
|
);
|
|
171
175
|
|
|
172
176
|
if (canAddPosition) {
|
|
@@ -181,8 +185,8 @@ export class ModifyMode extends GeoJsonEditMode {
|
|
|
181
185
|
editContext: {
|
|
182
186
|
featureIndexes: [featureIndex],
|
|
183
187
|
positionIndexes,
|
|
184
|
-
position: pickedIntermediateHandle.geometry.coordinates
|
|
185
|
-
}
|
|
188
|
+
position: pickedIntermediateHandle.geometry.coordinates
|
|
189
|
+
}
|
|
186
190
|
});
|
|
187
191
|
}
|
|
188
192
|
}
|
|
@@ -210,15 +214,15 @@ export class ModifyMode extends GeoJsonEditMode {
|
|
|
210
214
|
const editedFeature = props.data.features[editHandleProperties.featureIndex];
|
|
211
215
|
|
|
212
216
|
let updatedData;
|
|
213
|
-
if (props.modeConfig?.lockRectangles && editedFeature.properties
|
|
217
|
+
if (props.modeConfig?.lockRectangles && editedFeature.properties.shape === 'Rectangle') {
|
|
214
218
|
const coordinates = updateRectanglePosition(
|
|
215
219
|
editedFeature as FeatureOf<Polygon>,
|
|
216
|
-
editHandleProperties.positionIndexes
|
|
220
|
+
editHandleProperties.positionIndexes[1],
|
|
217
221
|
event.mapCoords
|
|
218
222
|
) as any; // TODO
|
|
219
223
|
|
|
220
224
|
updatedData = new ImmutableFeatureCollection(props.data)
|
|
221
|
-
.replaceGeometry(editHandleProperties.featureIndex, {
|
|
225
|
+
.replaceGeometry(editHandleProperties.featureIndex, {coordinates, type: 'Polygon'})
|
|
222
226
|
.getObject();
|
|
223
227
|
} else {
|
|
224
228
|
updatedData = new ImmutableFeatureCollection(props.data)
|
|
@@ -236,8 +240,8 @@ export class ModifyMode extends GeoJsonEditMode {
|
|
|
236
240
|
editContext: {
|
|
237
241
|
featureIndexes: [editHandleProperties.featureIndex],
|
|
238
242
|
positionIndexes: editHandleProperties.positionIndexes,
|
|
239
|
-
position: event.mapCoords
|
|
240
|
-
}
|
|
243
|
+
position: event.mapCoords
|
|
244
|
+
}
|
|
241
245
|
});
|
|
242
246
|
}
|
|
243
247
|
|
|
@@ -267,8 +271,8 @@ export class ModifyMode extends GeoJsonEditMode {
|
|
|
267
271
|
editContext: {
|
|
268
272
|
featureIndexes: [editHandleProperties.featureIndex],
|
|
269
273
|
positionIndexes: editHandleProperties.positionIndexes,
|
|
270
|
-
position: event.mapCoords
|
|
271
|
-
}
|
|
274
|
+
position: event.mapCoords
|
|
275
|
+
}
|
|
272
276
|
});
|
|
273
277
|
}
|
|
274
278
|
}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
// deck.gl-community
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
|
|
1
5
|
import nearestPointOnLine from '@turf/nearest-point-on-line';
|
|
2
6
|
import {point, lineString as toLineString} from '@turf/helpers';
|
|
3
7
|
import circle from '@turf/circle';
|
|
@@ -10,8 +14,8 @@ import {
|
|
|
10
14
|
getPickedEditHandle,
|
|
11
15
|
NearestPointType
|
|
12
16
|
} from './utils';
|
|
13
|
-
import {LineString, Point, FeatureCollection, FeatureOf} from '../geojson-types';
|
|
14
|
-
import {Viewport} from '../types';
|
|
17
|
+
import {LineString, Point, FeatureCollection, FeatureOf} from '../utils/geojson-types';
|
|
18
|
+
import {Viewport} from '../utils/types';
|
|
15
19
|
import {
|
|
16
20
|
ModeProps,
|
|
17
21
|
PointerMoveEvent,
|
|
@@ -84,7 +88,7 @@ export class ResizeCircleMode extends GeoJsonEditMode {
|
|
|
84
88
|
const {
|
|
85
89
|
geometry: {coordinates: position},
|
|
86
90
|
properties: {index}
|
|
87
|
-
} = intermediatePoint
|
|
91
|
+
} = intermediatePoint;
|
|
88
92
|
handles.push({
|
|
89
93
|
type: 'Feature',
|
|
90
94
|
properties: {
|
|
@@ -138,7 +142,7 @@ export class ResizeCircleMode extends GeoJsonEditMode {
|
|
|
138
142
|
|
|
139
143
|
const editHandleProperties = editHandle.properties;
|
|
140
144
|
|
|
141
|
-
const feature = this.getSelectedFeature(props)
|
|
145
|
+
const feature = this.getSelectedFeature(props);
|
|
142
146
|
// @ts-expect-error turf types diff
|
|
143
147
|
const center = turfCenter(feature).geometry.coordinates;
|
|
144
148
|
const numberOfSteps = Object.entries(feature.geometry.coordinates[0]).length - 1;
|
|
@@ -150,7 +154,6 @@ export class ResizeCircleMode extends GeoJsonEditMode {
|
|
|
150
154
|
const geometry = updatedFeature.geometry;
|
|
151
155
|
|
|
152
156
|
const updatedData = new ImmutableFeatureCollection(props.data)
|
|
153
|
-
// @ts-expect-error turf types diff
|
|
154
157
|
.replaceGeometry(editHandleProperties.featureIndex, geometry)
|
|
155
158
|
.getObject();
|
|
156
159
|
|