@mint-ui/map 0.4.6-beta → 0.5.1-beta
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/dist/components/mint-map/core/MintMapController.d.ts +6 -0
- package/dist/components/mint-map/core/advanced/index.d.ts +1 -0
- package/dist/components/mint-map/core/advanced/shapes/CircleMarker.d.ts +20 -0
- package/dist/components/mint-map/core/advanced/shapes/CircleMarker.js +137 -0
- package/dist/components/mint-map/core/advanced/shapes/PolygonMarker.d.ts +23 -0
- package/dist/components/mint-map/core/advanced/shapes/PolygonMarker.js +188 -0
- package/dist/components/mint-map/core/advanced/shapes/base/SVGCircle.d.ts +8 -0
- package/dist/components/mint-map/core/advanced/shapes/base/SVGCircle.js +54 -0
- package/dist/components/mint-map/core/advanced/shapes/base/SVGPolygon.d.ts +12 -0
- package/dist/components/mint-map/core/advanced/shapes/base/SVGPolygon.js +152 -0
- package/dist/components/mint-map/core/advanced/shapes/base/SVGRect.d.ts +10 -0
- package/dist/components/mint-map/core/advanced/shapes/base/SVGRect.js +60 -0
- package/dist/components/mint-map/core/advanced/shapes/base/index.d.ts +3 -0
- package/dist/components/mint-map/core/advanced/shapes/index.d.ts +3 -0
- package/dist/components/mint-map/core/hooks/MarkerMovingHook.js +4 -1
- package/dist/components/mint-map/core/util/calculate.d.ts +28 -1
- package/dist/components/mint-map/core/util/calculate.js +174 -7
- package/dist/components/mint-map/core/wrapper/MapMarkerWrapper.d.ts +2 -1
- package/dist/components/mint-map/core/wrapper/MapMarkerWrapper.js +25 -6
- package/dist/components/mint-map/google/GoogleMintMapController.d.ts +9 -0
- package/dist/components/mint-map/google/GoogleMintMapController.js +134 -0
- package/dist/components/mint-map/kakao/KakaoMintMapController.d.ts +8 -0
- package/dist/components/mint-map/kakao/KakaoMintMapController.js +118 -1
- package/dist/components/mint-map/naver/NaverMintMapController.d.ts +8 -0
- package/dist/components/mint-map/naver/NaverMintMapController.js +101 -1
- package/dist/components/mint-map/types/MapEventTypes.d.ts +41 -0
- package/dist/components/mint-map/types/MapEventTypes.js +57 -0
- package/dist/components/mint-map/types/MapTypes.d.ts +1 -0
- package/dist/components/mint-map/types/MapTypes.js +4 -0
- package/dist/components/mint-map/types/index.d.ts +1 -0
- package/dist/index.es.js +1438 -334
- package/dist/index.js +13 -0
- package/dist/index.umd.js +1444 -333
- package/package.json +1 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { MapType, MapVendorType } from '../types/CommonTypes';
|
|
2
2
|
import { Drawable, Marker, MarkerOptions, Polygon, PolygonOptions, Polyline, PolylineOptions } from '../types/MapDrawables';
|
|
3
|
+
import { EventCallback, EventParamType, MapEvent, MapEventName, MapUIEvent } from '../types/MapEventTypes';
|
|
3
4
|
import { Bounds, Offset, Position } from '../types/MapTypes';
|
|
4
5
|
import { MintMapProps } from '../types/MintMapProps';
|
|
5
6
|
export declare abstract class MintMapController {
|
|
@@ -26,6 +27,11 @@ export declare abstract class MintMapController {
|
|
|
26
27
|
abstract updatePolyline(polyline: Polyline, options: PolylineOptions): void;
|
|
27
28
|
abstract createPolygon(polygon: Polygon): void;
|
|
28
29
|
abstract updatePolygon(polygon: Polygon, options: PolygonOptions): void;
|
|
30
|
+
protected abstract mapEvent: MapEvent;
|
|
31
|
+
protected abstract mapUIEvent: MapUIEvent;
|
|
32
|
+
abstract addEventListener(eventName: MapEventName, callback: EventCallback<EventParamType>): void;
|
|
33
|
+
abstract removeEventListener(eventName: MapEventName, callback: EventCallback<EventParamType>): void;
|
|
34
|
+
abstract removeAllEventListener(eventName?: MapEventName): void;
|
|
29
35
|
mapProps: MintMapProps;
|
|
30
36
|
mapApiLoaded: boolean;
|
|
31
37
|
mapInitialized: boolean;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React, { PropsWithChildren } from "react";
|
|
2
|
+
import { Position } from "../../../types";
|
|
3
|
+
export interface CircleMarkerProps {
|
|
4
|
+
center: Position;
|
|
5
|
+
radius: number;
|
|
6
|
+
radiusUnit?: 'PIXEL' | 'METER';
|
|
7
|
+
background?: string;
|
|
8
|
+
visible?: boolean;
|
|
9
|
+
zIndex?: number;
|
|
10
|
+
svgProperties?: React.SVGProps<SVGSVGElement>;
|
|
11
|
+
shapeProperties?: React.SVGProps<SVGCircleElement>;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* CircleMarker
|
|
15
|
+
*
|
|
16
|
+
* @param {CircleMarkerProps} CircleMarkerProps
|
|
17
|
+
*
|
|
18
|
+
* @returns {JSX.Element} JSX
|
|
19
|
+
*/
|
|
20
|
+
export declare function CircleMarker({ children, center, radius, radiusUnit, background, svgProperties, shapeProperties, visible, zIndex, }: PropsWithChildren<CircleMarkerProps>): JSX.Element;
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var tslib = require('tslib');
|
|
6
|
+
var React = require('react');
|
|
7
|
+
var MintMapProvider = require('../../provider/MintMapProvider.js');
|
|
8
|
+
var MapMarkerWrapper = require('../../wrapper/MapMarkerWrapper.js');
|
|
9
|
+
require('../../../types/MapDrawables.js');
|
|
10
|
+
var MapTypes = require('../../../types/MapTypes.js');
|
|
11
|
+
require('../../../types/MapEventTypes.js');
|
|
12
|
+
var SVGCircle = require('./base/SVGCircle.js');
|
|
13
|
+
require('../../util/animation.js');
|
|
14
|
+
var calculate = require('../../util/calculate.js');
|
|
15
|
+
|
|
16
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
17
|
+
|
|
18
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* CircleMarker
|
|
22
|
+
*
|
|
23
|
+
* @param {CircleMarkerProps} CircleMarkerProps
|
|
24
|
+
*
|
|
25
|
+
* @returns {JSX.Element} JSX
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
function CircleMarker(_a) {
|
|
29
|
+
var children = _a.children,
|
|
30
|
+
center = _a.center,
|
|
31
|
+
radius = _a.radius,
|
|
32
|
+
_b = _a.radiusUnit,
|
|
33
|
+
radiusUnit = _b === void 0 ? 'PIXEL' : _b,
|
|
34
|
+
_c = _a.background,
|
|
35
|
+
background = _c === void 0 ? 'lightgreen' : _c,
|
|
36
|
+
_d = _a.svgProperties,
|
|
37
|
+
svgProperties = _d === void 0 ? {} : _d,
|
|
38
|
+
_e = _a.shapeProperties,
|
|
39
|
+
shapeProperties = _e === void 0 ? {} : _e,
|
|
40
|
+
_f = _a.visible,
|
|
41
|
+
visible = _f === void 0 ? true : _f,
|
|
42
|
+
zIndex = _a.zIndex; //controller
|
|
43
|
+
|
|
44
|
+
var controller = MintMapProvider.useMintMapController(); //zoom start event
|
|
45
|
+
|
|
46
|
+
var onZoomStart = React.useCallback(function () {
|
|
47
|
+
setMapVisible(false);
|
|
48
|
+
}, []); //idle event
|
|
49
|
+
|
|
50
|
+
var onIdle = React.useCallback(function () {
|
|
51
|
+
var newZoomLevel = controller.getZoomLevel();
|
|
52
|
+
|
|
53
|
+
if (zoomLevel.current !== newZoomLevel) {
|
|
54
|
+
zoomLevel.current = newZoomLevel;
|
|
55
|
+
renderCircleBase();
|
|
56
|
+
setTimeout(function () {
|
|
57
|
+
setMapVisible(true);
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
}, []);
|
|
61
|
+
var zoomLevel = React.useRef(controller.getZoomLevel());
|
|
62
|
+
React.useEffect(function () {
|
|
63
|
+
controller.addEventListener("ZOOMSTART", onZoomStart);
|
|
64
|
+
controller.addEventListener("IDLE", onIdle);
|
|
65
|
+
return function () {
|
|
66
|
+
controller.removeEventListener("ZOOMSTART", onZoomStart);
|
|
67
|
+
controller.removeEventListener("IDLE", onIdle);
|
|
68
|
+
};
|
|
69
|
+
}, []); //offsets
|
|
70
|
+
|
|
71
|
+
var _g = React.useState(),
|
|
72
|
+
computedRadius = _g[0],
|
|
73
|
+
setComputedRadius = _g[1];
|
|
74
|
+
|
|
75
|
+
var _h = React.useState(new MapTypes.Offset(0, 0)),
|
|
76
|
+
anchor = _h[0],
|
|
77
|
+
setAnchor = _h[1]; //circle props ref
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
var circlePropsRef = React.useRef({
|
|
81
|
+
center: center,
|
|
82
|
+
radius: radius,
|
|
83
|
+
radiusUnit: radiusUnit
|
|
84
|
+
}); //circle 생성 effect
|
|
85
|
+
|
|
86
|
+
React.useEffect(function () {
|
|
87
|
+
circlePropsRef.current = {
|
|
88
|
+
center: center,
|
|
89
|
+
radius: radius,
|
|
90
|
+
radiusUnit: radiusUnit
|
|
91
|
+
};
|
|
92
|
+
renderCircleBase();
|
|
93
|
+
}, [center, radius, radiusUnit]); //render
|
|
94
|
+
|
|
95
|
+
var _j = React.useState(true),
|
|
96
|
+
mapVisible = _j[0],
|
|
97
|
+
setMapVisible = _j[1];
|
|
98
|
+
|
|
99
|
+
var renderCircleBase = React.useCallback(function () {
|
|
100
|
+
var _a = circlePropsRef.current,
|
|
101
|
+
center = _a.center,
|
|
102
|
+
radius = _a.radius,
|
|
103
|
+
radiusUnit = _a.radiusUnit;
|
|
104
|
+
|
|
105
|
+
if (radiusUnit === 'METER') {
|
|
106
|
+
var latMargin = calculate.GeoCalulator.convertMeterToLatitudeValue(radius);
|
|
107
|
+
var targetPos = new MapTypes.Position(center.lat + latMargin, center.lng);
|
|
108
|
+
var tempComputedRadius = calcRadius(center, targetPos);
|
|
109
|
+
setComputedRadius(tempComputedRadius);
|
|
110
|
+
setAnchor(new MapTypes.Offset(tempComputedRadius, tempComputedRadius)); // console.log(`${radius} meter => `, tempComputedRadius);
|
|
111
|
+
} else {
|
|
112
|
+
setComputedRadius(radius);
|
|
113
|
+
setAnchor(new MapTypes.Offset(radius, radius)); // console.log(`${radius} pixel => `, radius);
|
|
114
|
+
}
|
|
115
|
+
}, []);
|
|
116
|
+
var calcRadius = React.useCallback(function (center, targetPos) {
|
|
117
|
+
var c = controller.positionToOffset(center);
|
|
118
|
+
var t = controller.positionToOffset(targetPos);
|
|
119
|
+
return Math.round(Math.sqrt(Math.pow(Math.abs(c.x - t.x), 2) + Math.pow(Math.abs(c.y - t.y), 2)));
|
|
120
|
+
}, []);
|
|
121
|
+
return React__default["default"].createElement(React__default["default"].Fragment, null, computedRadius && React__default["default"].createElement(MapMarkerWrapper.MapMarkerWrapper, {
|
|
122
|
+
position: center,
|
|
123
|
+
anchor: anchor,
|
|
124
|
+
visible: visible,
|
|
125
|
+
disablePointerEvent: true,
|
|
126
|
+
zIndex: zIndex
|
|
127
|
+
}, mapVisible && React__default["default"].createElement(SVGCircle.SVGCircle, {
|
|
128
|
+
radius: computedRadius,
|
|
129
|
+
background: background,
|
|
130
|
+
shapeProperties: tslib.__assign({
|
|
131
|
+
pointerEvents: 'none'
|
|
132
|
+
}, shapeProperties),
|
|
133
|
+
svgProperties: svgProperties
|
|
134
|
+
}, children)));
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
exports.CircleMarker = CircleMarker;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import React, { PropsWithChildren } from "react";
|
|
2
|
+
import { Position } from "../../../types";
|
|
3
|
+
export interface PolygonMarkerProps {
|
|
4
|
+
position: Position[];
|
|
5
|
+
innerPositions?: Position[][];
|
|
6
|
+
background?: string;
|
|
7
|
+
visible?: boolean;
|
|
8
|
+
zIndex?: number;
|
|
9
|
+
simplifyPath?: boolean;
|
|
10
|
+
simplifyTolerance?: number;
|
|
11
|
+
lastReapeated?: boolean;
|
|
12
|
+
mode?: 'POLYGON' | 'POLYLINE';
|
|
13
|
+
svgProperties?: React.SVGProps<SVGSVGElement>;
|
|
14
|
+
shapeProperties?: React.SVGProps<SVGPathElement>;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
*PolygonMarker
|
|
18
|
+
*
|
|
19
|
+
* @param {PolygonMarkerProps} PolygonMarkerProps
|
|
20
|
+
*
|
|
21
|
+
* @returns {JSX.Element} JSX
|
|
22
|
+
*/
|
|
23
|
+
export declare function PolygonMarker({ children, position, background, innerPositions, simplifyPath, simplifyTolerance, lastReapeated, svgProperties, shapeProperties, visible, zIndex, mode, }: PropsWithChildren<PolygonMarkerProps>): JSX.Element;
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var React = require('react');
|
|
6
|
+
var MintMapProvider = require('../../provider/MintMapProvider.js');
|
|
7
|
+
var MapMarkerWrapper = require('../../wrapper/MapMarkerWrapper.js');
|
|
8
|
+
var SVGPolygon = require('./base/SVGPolygon.js');
|
|
9
|
+
require('../../../types/MapDrawables.js');
|
|
10
|
+
var MapTypes = require('../../../types/MapTypes.js');
|
|
11
|
+
require('../../../types/MapEventTypes.js');
|
|
12
|
+
require('../../util/animation.js');
|
|
13
|
+
var calculate = require('../../util/calculate.js');
|
|
14
|
+
require('tslib');
|
|
15
|
+
|
|
16
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
17
|
+
|
|
18
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
*PolygonMarker
|
|
22
|
+
*
|
|
23
|
+
* @param {PolygonMarkerProps} PolygonMarkerProps
|
|
24
|
+
*
|
|
25
|
+
* @returns {JSX.Element} JSX
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
function PolygonMarker(_a) {
|
|
29
|
+
var children = _a.children,
|
|
30
|
+
position = _a.position,
|
|
31
|
+
_b = _a.background,
|
|
32
|
+
background = _b === void 0 ? 'lightgreen' : _b,
|
|
33
|
+
innerPositions = _a.innerPositions,
|
|
34
|
+
_c = _a.simplifyPath,
|
|
35
|
+
simplifyPath = _c === void 0 ? true : _c,
|
|
36
|
+
simplifyTolerance = _a.simplifyTolerance,
|
|
37
|
+
_d = _a.lastReapeated,
|
|
38
|
+
lastReapeated = _d === void 0 ? false : _d,
|
|
39
|
+
_e = _a.svgProperties,
|
|
40
|
+
svgProperties = _e === void 0 ? {} : _e,
|
|
41
|
+
_f = _a.shapeProperties,
|
|
42
|
+
shapeProperties = _f === void 0 ? {} : _f,
|
|
43
|
+
_g = _a.visible,
|
|
44
|
+
visible = _g === void 0 ? true : _g,
|
|
45
|
+
zIndex = _a.zIndex,
|
|
46
|
+
_h = _a.mode,
|
|
47
|
+
mode = _h === void 0 ? 'POLYGON' : _h; //controller
|
|
48
|
+
|
|
49
|
+
var controller = MintMapProvider.useMintMapController(); //zoom start event
|
|
50
|
+
|
|
51
|
+
var onZoomStart = React.useCallback(function () {
|
|
52
|
+
setMapVisible(false);
|
|
53
|
+
}, []); //idle event
|
|
54
|
+
|
|
55
|
+
var onIdle = React.useCallback(function () {
|
|
56
|
+
var newZoomLevel = controller.getZoomLevel();
|
|
57
|
+
|
|
58
|
+
if (zoomLevel.current !== newZoomLevel) {
|
|
59
|
+
zoomLevel.current = newZoomLevel;
|
|
60
|
+
renderPolygonBase();
|
|
61
|
+
setTimeout(function () {
|
|
62
|
+
setMapVisible(true);
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}, []);
|
|
66
|
+
var zoomLevel = React.useRef(controller.getZoomLevel());
|
|
67
|
+
React.useEffect(function () {
|
|
68
|
+
controller.addEventListener("ZOOMSTART", onZoomStart);
|
|
69
|
+
controller.addEventListener("IDLE", onIdle);
|
|
70
|
+
return function () {
|
|
71
|
+
controller.removeEventListener("ZOOMSTART", onZoomStart);
|
|
72
|
+
controller.removeEventListener("IDLE", onIdle);
|
|
73
|
+
};
|
|
74
|
+
}, []); //center
|
|
75
|
+
|
|
76
|
+
var _j = React.useState(),
|
|
77
|
+
polygonStart = _j[0],
|
|
78
|
+
setPolygonStart = _j[1]; //offsets
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
var _k = React.useState([]),
|
|
82
|
+
offsets = _k[0],
|
|
83
|
+
setOffsets = _k[1]; //inner offsets
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
var _l = React.useState([]),
|
|
87
|
+
innerOffsets = _l[0],
|
|
88
|
+
setInnerOffsets = _l[1]; //offset cache
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
var offsetCache = React.useRef(new Map()); //polygon props ref
|
|
92
|
+
|
|
93
|
+
var polygonPropsRef = React.useRef({
|
|
94
|
+
position: position,
|
|
95
|
+
innerPositions: innerPositions,
|
|
96
|
+
simplifyPath: simplifyPath,
|
|
97
|
+
simplifyTolerance: simplifyTolerance,
|
|
98
|
+
lastReapeated: lastReapeated
|
|
99
|
+
}); //polygon 생성 effect
|
|
100
|
+
|
|
101
|
+
React.useEffect(function () {
|
|
102
|
+
// console.log('polygon changed');
|
|
103
|
+
offsetCache.current.clear();
|
|
104
|
+
polygonPropsRef.current = {
|
|
105
|
+
position: position,
|
|
106
|
+
innerPositions: innerPositions,
|
|
107
|
+
simplifyPath: simplifyPath,
|
|
108
|
+
simplifyTolerance: simplifyTolerance,
|
|
109
|
+
lastReapeated: lastReapeated
|
|
110
|
+
};
|
|
111
|
+
renderPolygonBase();
|
|
112
|
+
}, [position, innerPositions, simplifyPath, simplifyTolerance, lastReapeated]); //render
|
|
113
|
+
|
|
114
|
+
var _m = React.useState(true),
|
|
115
|
+
mapVisible = _m[0],
|
|
116
|
+
setMapVisible = _m[1];
|
|
117
|
+
|
|
118
|
+
var renderPolygonBase = React.useCallback(function () {
|
|
119
|
+
// console.log('renderPolygonBase');
|
|
120
|
+
var _a = polygonPropsRef.current,
|
|
121
|
+
position = _a.position,
|
|
122
|
+
innerPositions = _a.innerPositions,
|
|
123
|
+
simplifyPath = _a.simplifyPath,
|
|
124
|
+
simplifyTolerance = _a.simplifyTolerance,
|
|
125
|
+
lastReapeated = _a.lastReapeated;
|
|
126
|
+
var prevCache = offsetCache.current.get(zoomLevel.current);
|
|
127
|
+
|
|
128
|
+
if (prevCache) {
|
|
129
|
+
var offsets_1 = [];
|
|
130
|
+
offsets_1.push.apply(offsets_1, prevCache.offsets);
|
|
131
|
+
setOffsets(offsets_1);
|
|
132
|
+
var innerOffsets_1 = [];
|
|
133
|
+
innerOffsets_1.push.apply(innerOffsets_1, prevCache.innerOffsets);
|
|
134
|
+
setInnerOffsets(innerOffsets_1);
|
|
135
|
+
setPolygonStart(prevCache.start);
|
|
136
|
+
} else {
|
|
137
|
+
// path
|
|
138
|
+
var simplified = simplifyPath ? calculate.PolygonCalculator.simplifyPoints(position, simplifyTolerance, lastReapeated) : position;
|
|
139
|
+
var offsets_2 = simplified.map(function (pos) {
|
|
140
|
+
var off = controller.positionToOffset(pos);
|
|
141
|
+
return new MapTypes.Offset(Math.floor(off.x), Math.floor(off.y));
|
|
142
|
+
});
|
|
143
|
+
setOffsets(offsets_2); //inner path
|
|
144
|
+
|
|
145
|
+
var innerPath = [];
|
|
146
|
+
|
|
147
|
+
if (innerPositions) {
|
|
148
|
+
for (var _i = 0, innerPositions_1 = innerPositions; _i < innerPositions_1.length; _i++) {
|
|
149
|
+
var innerPosition = innerPositions_1[_i];
|
|
150
|
+
var simplified_1 = simplifyPath ? calculate.PolygonCalculator.simplifyPoints(innerPosition, simplifyTolerance, lastReapeated) : innerPosition;
|
|
151
|
+
var offsets_3 = simplified_1.map(function (pos) {
|
|
152
|
+
var off = controller.positionToOffset(pos);
|
|
153
|
+
return new MapTypes.Offset(Math.floor(off.x), Math.floor(off.y));
|
|
154
|
+
});
|
|
155
|
+
innerPath.push(offsets_3);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
setInnerOffsets(innerPath);
|
|
159
|
+
} //start point
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
var regionInfo = calculate.PolygonCalculator.getRegionInfo(simplified);
|
|
163
|
+
var startPosition = regionInfo.maxLat && regionInfo.minLng ? new MapTypes.Position(regionInfo.maxLat, regionInfo.minLng) : undefined;
|
|
164
|
+
setPolygonStart(startPosition); //cache set
|
|
165
|
+
|
|
166
|
+
offsetCache.current.set(zoomLevel.current, {
|
|
167
|
+
start: startPosition,
|
|
168
|
+
offsets: offsets_2,
|
|
169
|
+
innerOffsets: innerPath
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
}, []);
|
|
173
|
+
return React__default["default"].createElement(React__default["default"].Fragment, null, polygonStart && React__default["default"].createElement(MapMarkerWrapper.MapMarkerWrapper, {
|
|
174
|
+
position: polygonStart,
|
|
175
|
+
visible: visible,
|
|
176
|
+
disablePointerEvent: true,
|
|
177
|
+
zIndex: zIndex
|
|
178
|
+
}, mapVisible && React__default["default"].createElement(SVGPolygon.SVGPolygon, {
|
|
179
|
+
path: offsets,
|
|
180
|
+
innerPath: innerOffsets,
|
|
181
|
+
mode: mode,
|
|
182
|
+
background: background,
|
|
183
|
+
shapeProperties: shapeProperties,
|
|
184
|
+
svgProperties: svgProperties
|
|
185
|
+
}, children)));
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
exports.PolygonMarker = PolygonMarker;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React, { PropsWithChildren } from "react";
|
|
2
|
+
export interface SVGCircleProps {
|
|
3
|
+
radius?: number;
|
|
4
|
+
background?: string;
|
|
5
|
+
svgProperties?: React.SVGProps<SVGSVGElement>;
|
|
6
|
+
shapeProperties?: React.SVGProps<SVGCircleElement>;
|
|
7
|
+
}
|
|
8
|
+
export declare function SVGCircle({ radius, background, children, svgProperties, shapeProperties, }: PropsWithChildren<SVGCircleProps>): JSX.Element;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var tslib = require('tslib');
|
|
6
|
+
var React = require('react');
|
|
7
|
+
|
|
8
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
9
|
+
|
|
10
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
11
|
+
|
|
12
|
+
function SVGCircle(_a) {
|
|
13
|
+
var _b = _a.radius,
|
|
14
|
+
radius = _b === void 0 ? 100 : _b,
|
|
15
|
+
_c = _a.background,
|
|
16
|
+
background = _c === void 0 ? 'lightgreen' : _c,
|
|
17
|
+
children = _a.children,
|
|
18
|
+
_d = _a.svgProperties,
|
|
19
|
+
svgProperties = _d === void 0 ? {} : _d,
|
|
20
|
+
_e = _a.shapeProperties,
|
|
21
|
+
shapeProperties = _e === void 0 ? {} : _e;
|
|
22
|
+
|
|
23
|
+
var _f = React.useState(radius * 2),
|
|
24
|
+
boxSize = _f[0],
|
|
25
|
+
setBoxSize = _f[1];
|
|
26
|
+
|
|
27
|
+
React.useEffect(function () {
|
|
28
|
+
// console.log('SVGCircle radius', radius);
|
|
29
|
+
setBoxSize(radius * 2);
|
|
30
|
+
}, [radius]);
|
|
31
|
+
return React__default["default"].createElement(React__default["default"].Fragment, null, React__default["default"].createElement("svg", tslib.__assign({
|
|
32
|
+
pointerEvents: "none",
|
|
33
|
+
width: boxSize,
|
|
34
|
+
height: boxSize,
|
|
35
|
+
viewBox: "0 0 ".concat(boxSize, " ").concat(boxSize)
|
|
36
|
+
}, svgProperties), React__default["default"].createElement("circle", tslib.__assign({
|
|
37
|
+
pointerEvents: "visiblepainted",
|
|
38
|
+
cx: radius,
|
|
39
|
+
cy: radius,
|
|
40
|
+
r: radius,
|
|
41
|
+
fill: background
|
|
42
|
+
}, shapeProperties))), React__default["default"].createElement("div", {
|
|
43
|
+
style: {
|
|
44
|
+
pointerEvents: 'none',
|
|
45
|
+
position: 'absolute',
|
|
46
|
+
left: '0px',
|
|
47
|
+
top: '0px',
|
|
48
|
+
width: "".concat(boxSize, "px"),
|
|
49
|
+
height: "".concat(boxSize, "px")
|
|
50
|
+
}
|
|
51
|
+
}, children));
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
exports.SVGCircle = SVGCircle;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { PropsWithChildren } from "react";
|
|
3
|
+
import { Offset } from "../../../../types";
|
|
4
|
+
export interface SVGPolygonProps {
|
|
5
|
+
path: Offset[];
|
|
6
|
+
innerPath?: Offset[][];
|
|
7
|
+
background?: string;
|
|
8
|
+
mode?: 'POLYGON' | 'POLYLINE';
|
|
9
|
+
svgProperties?: React.SVGProps<SVGSVGElement>;
|
|
10
|
+
shapeProperties?: React.SVGProps<SVGPathElement>;
|
|
11
|
+
}
|
|
12
|
+
export declare function SVGPolygon({ path, innerPath, background, svgProperties, shapeProperties, mode, children, }: PropsWithChildren<SVGPolygonProps>): JSX.Element;
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var tslib = require('tslib');
|
|
6
|
+
var React = require('react');
|
|
7
|
+
|
|
8
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
9
|
+
|
|
10
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
11
|
+
|
|
12
|
+
function SVGPolygon(_a) {
|
|
13
|
+
var path = _a.path,
|
|
14
|
+
_b = _a.innerPath,
|
|
15
|
+
innerPath = _b === void 0 ? [] : _b,
|
|
16
|
+
_c = _a.background,
|
|
17
|
+
background = _c === void 0 ? 'lightblue' : _c,
|
|
18
|
+
_d = _a.svgProperties,
|
|
19
|
+
svgProperties = _d === void 0 ? {} : _d,
|
|
20
|
+
_e = _a.shapeProperties,
|
|
21
|
+
shapeProperties = _e === void 0 ? {} : _e,
|
|
22
|
+
_f = _a.mode,
|
|
23
|
+
mode = _f === void 0 ? 'POLYGON' : _f,
|
|
24
|
+
children = _a.children;
|
|
25
|
+
var getPolygonInfo = React.useCallback(function (path) {
|
|
26
|
+
var maxX, minX, maxY, minY;
|
|
27
|
+
|
|
28
|
+
for (var _i = 0, path_1 = path; _i < path_1.length; _i++) {
|
|
29
|
+
var offset = path_1[_i];
|
|
30
|
+
|
|
31
|
+
if (maxX === undefined || offset.x > maxX) {
|
|
32
|
+
maxX = offset.x;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
if (minX === undefined || offset.x < minX) {
|
|
36
|
+
minX = offset.x;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
if (maxY === undefined || offset.y > maxY) {
|
|
40
|
+
maxY = offset.y;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
if (minY === undefined || offset.y < minY) {
|
|
44
|
+
minY = offset.y;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
if (!maxX || !minX || !maxY || !minY) {
|
|
49
|
+
return {
|
|
50
|
+
containerLeft: 0,
|
|
51
|
+
containerTop: 0,
|
|
52
|
+
containerWidth: 0,
|
|
53
|
+
containerHeight: 0
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
var width = maxX - minX;
|
|
58
|
+
var height = maxY - minY;
|
|
59
|
+
return {
|
|
60
|
+
containerLeft: Math.floor(minX),
|
|
61
|
+
containerTop: Math.floor(minY),
|
|
62
|
+
containerWidth: Math.floor(width),
|
|
63
|
+
containerHeight: Math.floor(height)
|
|
64
|
+
};
|
|
65
|
+
}, []);
|
|
66
|
+
var getD = React.useCallback(function (_a) {
|
|
67
|
+
var path = _a.path,
|
|
68
|
+
containerLeft = _a.containerLeft,
|
|
69
|
+
containerTop = _a.containerTop,
|
|
70
|
+
mode = _a.mode;
|
|
71
|
+
var left = containerLeft;
|
|
72
|
+
var top = containerTop;
|
|
73
|
+
var isPolygon = mode === 'POLYGON';
|
|
74
|
+
var out = ''; //path
|
|
75
|
+
|
|
76
|
+
out += getLine(path, left, top, isPolygon); //inner path
|
|
77
|
+
|
|
78
|
+
for (var _i = 0, innerPath_1 = innerPath; _i < innerPath_1.length; _i++) {
|
|
79
|
+
var inner = innerPath_1[_i];
|
|
80
|
+
out += ' ' + getLine(inner, left, top, isPolygon);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
return out;
|
|
84
|
+
}, []);
|
|
85
|
+
var getLine = React.useCallback(function (path, offsetLeft, offsetTop, closePath) {
|
|
86
|
+
return path.map(function (offset, idx) {
|
|
87
|
+
if (idx === 0) {
|
|
88
|
+
return "M ".concat(offset.x - offsetLeft, ",").concat(offset.y - offsetTop);
|
|
89
|
+
} else if (idx === 1) {
|
|
90
|
+
return "L ".concat(offset.x - offsetLeft, ",").concat(offset.y - offsetTop);
|
|
91
|
+
} else {
|
|
92
|
+
if (offset.equals(path[idx - 1])) {
|
|
93
|
+
return '';
|
|
94
|
+
} else {
|
|
95
|
+
return "".concat(offset.x - offsetLeft, ",").concat(offset.y - offsetTop);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}).join(' ') + " ".concat(closePath ? 'Z' : '');
|
|
99
|
+
}, []);
|
|
100
|
+
|
|
101
|
+
var _g = React.useState(0),
|
|
102
|
+
width = _g[0],
|
|
103
|
+
setWidth = _g[1];
|
|
104
|
+
|
|
105
|
+
var _h = React.useState(0),
|
|
106
|
+
height = _h[0],
|
|
107
|
+
setHeight = _h[1];
|
|
108
|
+
|
|
109
|
+
var _j = React.useState('M0 0'),
|
|
110
|
+
d = _j[0],
|
|
111
|
+
setD = _j[1];
|
|
112
|
+
|
|
113
|
+
React.useEffect(function () {
|
|
114
|
+
var info = getPolygonInfo(path);
|
|
115
|
+
setWidth(info.containerWidth);
|
|
116
|
+
setHeight(info.containerHeight);
|
|
117
|
+
setD(getD(tslib.__assign(tslib.__assign({}, info), {
|
|
118
|
+
path: path,
|
|
119
|
+
innerPath: innerPath,
|
|
120
|
+
mode: mode
|
|
121
|
+
})));
|
|
122
|
+
}, [path, innerPath]);
|
|
123
|
+
return React__default["default"].createElement(React__default["default"].Fragment, null, React__default["default"].createElement("svg", tslib.__assign({
|
|
124
|
+
pointerEvents: "none",
|
|
125
|
+
width: width,
|
|
126
|
+
height: height,
|
|
127
|
+
viewBox: "0 0 ".concat(width, " ").concat(height)
|
|
128
|
+
}, svgProperties), React__default["default"].createElement("path", tslib.__assign({
|
|
129
|
+
fillRule: "evenodd",
|
|
130
|
+
pointerEvents: "visiblepainted",
|
|
131
|
+
x: "0",
|
|
132
|
+
y: "0",
|
|
133
|
+
width: width,
|
|
134
|
+
height: height,
|
|
135
|
+
fill: mode === 'POLYLINE' ? 'none' : background,
|
|
136
|
+
stroke: mode === 'POLYLINE' ? 'black' : 'green',
|
|
137
|
+
strokeLinejoin: "round",
|
|
138
|
+
strokeLinecap: "butt",
|
|
139
|
+
d: d
|
|
140
|
+
}, shapeProperties))), React__default["default"].createElement("div", {
|
|
141
|
+
style: {
|
|
142
|
+
pointerEvents: 'none',
|
|
143
|
+
position: 'absolute',
|
|
144
|
+
left: '0px',
|
|
145
|
+
top: '0px',
|
|
146
|
+
width: "".concat(width, "px"),
|
|
147
|
+
height: "".concat(height, "px")
|
|
148
|
+
}
|
|
149
|
+
}, children));
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
exports.SVGPolygon = SVGPolygon;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { PropsWithChildren } from "react";
|
|
3
|
+
export interface SVGRectProps {
|
|
4
|
+
width?: number;
|
|
5
|
+
height?: number;
|
|
6
|
+
background?: string;
|
|
7
|
+
svgProperties?: React.SVGProps<SVGSVGElement>;
|
|
8
|
+
shapeProperties?: React.SVGProps<SVGRectElement>;
|
|
9
|
+
}
|
|
10
|
+
export declare function SVGRect({ width, height, background, svgProperties, shapeProperties, children }: PropsWithChildren<SVGRectProps>): JSX.Element;
|