@mint-ui/map 0.10.0-beta → 0.10.0-beta-test1

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.
@@ -5,6 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var tslib = require('tslib');
6
6
  var React = require('react');
7
7
  var MintMapProvider = require('../../provider/MintMapProvider.js');
8
+ require('../../provider/MarkerAutoTransitionProvider.js');
8
9
  var MapDrawables = require('../../../types/MapDrawables.js');
9
10
  require('../../../types/MapTypes.js');
10
11
  require('../../../types/MapEventTypes.js');
@@ -0,0 +1,17 @@
1
+ import React from "react";
2
+ import { Position } from "../../types";
3
+ export declare type TransitionType = 'diagonal';
4
+ export declare type TransitionSizeFunction = (zoomLevel: number) => number;
5
+ export interface MarkerAutoTransitionOption {
6
+ type?: TransitionType;
7
+ sizeInMeter?: number | TransitionSizeFunction;
8
+ }
9
+ export interface MarkerAutoTransitionContextType {
10
+ option: Required<MarkerAutoTransitionOption>;
11
+ transition: (pos: Position) => Position;
12
+ }
13
+ export declare const MarkerAutoTransitionContext: React.Context<MarkerAutoTransitionContextType>;
14
+ export declare const baseCenter: Position;
15
+ export interface MarkerAutoTransitionProviderProps extends MarkerAutoTransitionOption {
16
+ }
17
+ export declare function MarkerAutoTransitionProvider({ children, sizeInMeter, type, }: React.PropsWithChildren<MarkerAutoTransitionProviderProps>): JSX.Element;
@@ -0,0 +1,96 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var React = require('react');
6
+ require('../../types/MapDrawables.js');
7
+ var MapTypes = require('../../types/MapTypes.js');
8
+ require('../../types/MapEventTypes.js');
9
+ require('../util/animation.js');
10
+ var geo = require('../util/geo.js');
11
+ require('tslib');
12
+ require('../util/polygon.js');
13
+ require('../util/status.js');
14
+ var MintMapProvider = require('./MintMapProvider.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
+ var MarkerAutoTransitionContext = React.createContext({
21
+ option: {
22
+ sizeInMeter: 2,
23
+ type: 'diagonal'
24
+ },
25
+ transition: function (pos) {
26
+ return pos;
27
+ }
28
+ }); // provider
29
+
30
+ var baseCenter = new MapTypes.Position(37.504497373023206, 127.04896282498558);
31
+ function MarkerAutoTransitionProvider(_a) {
32
+ var children = _a.children,
33
+ _b = _a.sizeInMeter,
34
+ sizeInMeter = _b === void 0 ? 2 : _b,
35
+ _c = _a.type,
36
+ type = _c === void 0 ? 'diagonal' : _c;
37
+ var controller = MintMapProvider.useMintMapController();
38
+
39
+ var _d = React.useState(controller.getZoomLevel()),
40
+ zoom = _d[0],
41
+ setZoom = _d[1];
42
+
43
+ React.useEffect(function () {
44
+ var onZoomChanged = function () {
45
+ setZoom(controller.getZoomLevel());
46
+ };
47
+
48
+ controller.addEventListener('ZOOM_CHANGED', onZoomChanged);
49
+ return function () {
50
+ controller.removeEventListener('ZOOM_CHANGED', onZoomChanged);
51
+ };
52
+ }, []);
53
+ var calcSize = typeof sizeInMeter === 'number' ? sizeInMeter : sizeInMeter(controller.getZoomLevel());
54
+ var deltaLat = geo.GeoCalulator.convertMeterToLatitudeValue(calcSize);
55
+ var offset1 = controller.positionToOffset(baseCenter);
56
+ var offset2 = controller.positionToOffset(new MapTypes.Position(baseCenter.lat + deltaLat, baseCenter.lng));
57
+ var deltaOffsetY = offset2.y - offset1.y;
58
+ var offset3 = new MapTypes.Offset(offset1.x + deltaOffsetY, offset2.y);
59
+ var deltaLng = baseCenter.lng - controller.offsetToPosition(offset3).lng;
60
+ var posMap = new Map();
61
+
62
+ var transition = function (pos) {
63
+ var key = positionToMapKey(pos);
64
+ var count = posMap.get(key);
65
+
66
+ if (count === undefined) {
67
+ count = 1;
68
+ posMap.set(key, count);
69
+ return pos;
70
+ } //type : diagonal
71
+
72
+
73
+ var newPos = new MapTypes.Position(pos.lat + count * deltaLat, pos.lng + count * deltaLng);
74
+ count += 1;
75
+ posMap.set(key, count);
76
+ return newPos;
77
+ };
78
+
79
+ return React__default["default"].createElement(MarkerAutoTransitionContext.Provider, {
80
+ value: {
81
+ option: {
82
+ sizeInMeter: sizeInMeter,
83
+ type: type
84
+ },
85
+ transition: transition
86
+ }
87
+ }, zoom && children);
88
+ }
89
+
90
+ function positionToMapKey(pos) {
91
+ return "".concat(pos.lat, "-").concat(pos.lng);
92
+ }
93
+
94
+ exports.MarkerAutoTransitionContext = MarkerAutoTransitionContext;
95
+ exports.MarkerAutoTransitionProvider = MarkerAutoTransitionProvider;
96
+ exports.baseCenter = baseCenter;
@@ -1 +1,2 @@
1
1
  export * from "./MintMapProvider";
2
+ export * from "./MarkerAutoTransitionProvider";
@@ -8,6 +8,7 @@ var reactDom = require('react-dom');
8
8
  var MintMapProvider = require('../provider/MintMapProvider.js');
9
9
  var MarkerMovingHook = require('../hooks/MarkerMovingHook.js');
10
10
  var MapDrawables = require('../../types/MapDrawables.js');
11
+ var MarkerAutoTransitionProvider = require('../provider/MarkerAutoTransitionProvider.js');
11
12
 
12
13
  var offsetCalibration = function (mapType, divElement, options, autoFitToViewport, autoAdjustAnchor, autoAdjustAnchorConfig, mapDivElement) {
13
14
  //google 맵의 anchor 보정 (네이버와 같이 왼쪽/위 기준으로 처리)
@@ -214,8 +215,13 @@ function MapMarkerWrapper(_a) {
214
215
  };
215
216
  }, []); //create / update object
216
217
 
218
+ var transition = React.useContext(MarkerAutoTransitionProvider.MarkerAutoTransitionContext).transition;
217
219
  React.useEffect(function () {
218
220
  if (options) {
221
+ if (!Array.isArray(options.position)) {
222
+ options.position = transition(options.position);
223
+ }
224
+
219
225
  if (markerRef.current) {
220
226
  //console.log('update Marker')
221
227
  controller.updateMarker(markerRef.current, options); //disablePointerEvent 처리
package/dist/index.es.js CHANGED
@@ -4283,6 +4283,80 @@ function useMarkerMoving(_a) {
4283
4283
  return [start, stop, resume];
4284
4284
  }
4285
4285
 
4286
+ var MarkerAutoTransitionContext = createContext({
4287
+ option: {
4288
+ sizeInMeter: 2,
4289
+ type: 'diagonal'
4290
+ },
4291
+ transition: function (pos) {
4292
+ return pos;
4293
+ }
4294
+ }); // provider
4295
+
4296
+ var baseCenter = new Position(37.504497373023206, 127.04896282498558);
4297
+ function MarkerAutoTransitionProvider(_a) {
4298
+ var children = _a.children,
4299
+ _b = _a.sizeInMeter,
4300
+ sizeInMeter = _b === void 0 ? 2 : _b,
4301
+ _c = _a.type,
4302
+ type = _c === void 0 ? 'diagonal' : _c;
4303
+ var controller = useMintMapController();
4304
+
4305
+ var _d = useState(controller.getZoomLevel()),
4306
+ zoom = _d[0],
4307
+ setZoom = _d[1];
4308
+
4309
+ useEffect(function () {
4310
+ var onZoomChanged = function () {
4311
+ setZoom(controller.getZoomLevel());
4312
+ };
4313
+
4314
+ controller.addEventListener('ZOOM_CHANGED', onZoomChanged);
4315
+ return function () {
4316
+ controller.removeEventListener('ZOOM_CHANGED', onZoomChanged);
4317
+ };
4318
+ }, []);
4319
+ var calcSize = typeof sizeInMeter === 'number' ? sizeInMeter : sizeInMeter(controller.getZoomLevel());
4320
+ var deltaLat = GeoCalulator.convertMeterToLatitudeValue(calcSize);
4321
+ var offset1 = controller.positionToOffset(baseCenter);
4322
+ var offset2 = controller.positionToOffset(new Position(baseCenter.lat + deltaLat, baseCenter.lng));
4323
+ var deltaOffsetY = offset2.y - offset1.y;
4324
+ var offset3 = new Offset(offset1.x + deltaOffsetY, offset2.y);
4325
+ var deltaLng = baseCenter.lng - controller.offsetToPosition(offset3).lng;
4326
+ var posMap = new Map();
4327
+
4328
+ var transition = function (pos) {
4329
+ var key = positionToMapKey(pos);
4330
+ var count = posMap.get(key);
4331
+
4332
+ if (count === undefined) {
4333
+ count = 1;
4334
+ posMap.set(key, count);
4335
+ return pos;
4336
+ } //type : diagonal
4337
+
4338
+
4339
+ var newPos = new Position(pos.lat + count * deltaLat, pos.lng + count * deltaLng);
4340
+ count += 1;
4341
+ posMap.set(key, count);
4342
+ return newPos;
4343
+ };
4344
+
4345
+ return React.createElement(MarkerAutoTransitionContext.Provider, {
4346
+ value: {
4347
+ option: {
4348
+ sizeInMeter: sizeInMeter,
4349
+ type: type
4350
+ },
4351
+ transition: transition
4352
+ }
4353
+ }, zoom && children);
4354
+ }
4355
+
4356
+ function positionToMapKey(pos) {
4357
+ return "".concat(pos.lat, "-").concat(pos.lng);
4358
+ }
4359
+
4286
4360
  var offsetCalibration = function (mapType, divElement, options, autoFitToViewport, autoAdjustAnchor, autoAdjustAnchorConfig, mapDivElement) {
4287
4361
  //google 맵의 anchor 보정 (네이버와 같이 왼쪽/위 기준으로 처리)
4288
4362
  var baseTransform = '';
@@ -4488,8 +4562,13 @@ function MapMarkerWrapper(_a) {
4488
4562
  };
4489
4563
  }, []); //create / update object
4490
4564
 
4565
+ var transition = useContext(MarkerAutoTransitionContext).transition;
4491
4566
  useEffect(function () {
4492
4567
  if (options) {
4568
+ if (!Array.isArray(options.position)) {
4569
+ options.position = transition(options.position);
4570
+ }
4571
+
4493
4572
  if (markerRef.current) {
4494
4573
  //console.log('update Marker')
4495
4574
  controller.updateMarker(markerRef.current, options); //disablePointerEvent 처리
@@ -5892,4 +5971,4 @@ function MapCanvasMarkerWrapper(_props) {
5892
5971
  return React.createElement(React.Fragment, null);
5893
5972
  }
5894
5973
 
5895
- export { AnimationPlayer, Bounds, CanvasMarker, CircleMarker, Drawable, GeoCalulator, GoogleMintMapController, MapBuildingProjection, MapCanvasMarkerWrapper, MapCanvasWrapper, MapControlWrapper, MapEvent, MapLoadingWithImage, MapMarkerWrapper, MapPolygonWrapper, MapPolylineWrapper, MapUIEvent, Marker, MintMap, MintMapCanvasRenderer, MintMapController, MintMapCore, MintMapProvider, NaverMintMapController, Offset, PointLoading, Polygon, PolygonCalculator, PolygonMarker, Polyline, Position, SVGCircle, SVGPolygon, SVGRect, Status, getClusterInfo, getMapOfType, log, useMarkerMoving, useMintMapController, waiting };
5974
+ export { AnimationPlayer, Bounds, CanvasMarker, CircleMarker, Drawable, GeoCalulator, GoogleMintMapController, MapBuildingProjection, MapCanvasMarkerWrapper, MapCanvasWrapper, MapControlWrapper, MapEvent, MapLoadingWithImage, MapMarkerWrapper, MapPolygonWrapper, MapPolylineWrapper, MapUIEvent, Marker, MarkerAutoTransitionContext, MarkerAutoTransitionProvider, MintMap, MintMapCanvasRenderer, MintMapController, MintMapCore, MintMapProvider, NaverMintMapController, Offset, PointLoading, Polygon, PolygonCalculator, PolygonMarker, Polyline, Position, SVGCircle, SVGPolygon, SVGRect, Status, baseCenter, getClusterInfo, getMapOfType, log, useMarkerMoving, useMintMapController, waiting };
package/dist/index.js CHANGED
@@ -16,6 +16,7 @@ var MapBuildingProjection = require('./components/mint-map/core/advanced/MapBuil
16
16
  var MapLoadingComponents = require('./components/mint-map/core/advanced/MapLoadingComponents.js');
17
17
  var MarkerMovingHook = require('./components/mint-map/core/hooks/MarkerMovingHook.js');
18
18
  var MintMapProvider = require('./components/mint-map/core/provider/MintMapProvider.js');
19
+ var MarkerAutoTransitionProvider = require('./components/mint-map/core/provider/MarkerAutoTransitionProvider.js');
19
20
  var animation = require('./components/mint-map/core/util/animation.js');
20
21
  var geo = require('./components/mint-map/core/util/geo.js');
21
22
  var waiting = require('./components/mint-map/core/util/waiting.js');
@@ -54,6 +55,9 @@ exports.PointLoading = MapLoadingComponents.PointLoading;
54
55
  exports.useMarkerMoving = MarkerMovingHook.useMarkerMoving;
55
56
  exports.MintMapProvider = MintMapProvider.MintMapProvider;
56
57
  exports.useMintMapController = MintMapProvider.useMintMapController;
58
+ exports.MarkerAutoTransitionContext = MarkerAutoTransitionProvider.MarkerAutoTransitionContext;
59
+ exports.MarkerAutoTransitionProvider = MarkerAutoTransitionProvider.MarkerAutoTransitionProvider;
60
+ exports.baseCenter = MarkerAutoTransitionProvider.baseCenter;
57
61
  exports.AnimationPlayer = animation.AnimationPlayer;
58
62
  exports.GeoCalulator = geo.GeoCalulator;
59
63
  exports.waiting = waiting.waiting;
package/dist/index.umd.js CHANGED
@@ -4287,6 +4287,80 @@
4287
4287
  return [start, stop, resume];
4288
4288
  }
4289
4289
 
4290
+ var MarkerAutoTransitionContext = React.createContext({
4291
+ option: {
4292
+ sizeInMeter: 2,
4293
+ type: 'diagonal'
4294
+ },
4295
+ transition: function (pos) {
4296
+ return pos;
4297
+ }
4298
+ }); // provider
4299
+
4300
+ var baseCenter = new Position(37.504497373023206, 127.04896282498558);
4301
+ function MarkerAutoTransitionProvider(_a) {
4302
+ var children = _a.children,
4303
+ _b = _a.sizeInMeter,
4304
+ sizeInMeter = _b === void 0 ? 2 : _b,
4305
+ _c = _a.type,
4306
+ type = _c === void 0 ? 'diagonal' : _c;
4307
+ var controller = useMintMapController();
4308
+
4309
+ var _d = React.useState(controller.getZoomLevel()),
4310
+ zoom = _d[0],
4311
+ setZoom = _d[1];
4312
+
4313
+ React.useEffect(function () {
4314
+ var onZoomChanged = function () {
4315
+ setZoom(controller.getZoomLevel());
4316
+ };
4317
+
4318
+ controller.addEventListener('ZOOM_CHANGED', onZoomChanged);
4319
+ return function () {
4320
+ controller.removeEventListener('ZOOM_CHANGED', onZoomChanged);
4321
+ };
4322
+ }, []);
4323
+ var calcSize = typeof sizeInMeter === 'number' ? sizeInMeter : sizeInMeter(controller.getZoomLevel());
4324
+ var deltaLat = GeoCalulator.convertMeterToLatitudeValue(calcSize);
4325
+ var offset1 = controller.positionToOffset(baseCenter);
4326
+ var offset2 = controller.positionToOffset(new Position(baseCenter.lat + deltaLat, baseCenter.lng));
4327
+ var deltaOffsetY = offset2.y - offset1.y;
4328
+ var offset3 = new Offset(offset1.x + deltaOffsetY, offset2.y);
4329
+ var deltaLng = baseCenter.lng - controller.offsetToPosition(offset3).lng;
4330
+ var posMap = new Map();
4331
+
4332
+ var transition = function (pos) {
4333
+ var key = positionToMapKey(pos);
4334
+ var count = posMap.get(key);
4335
+
4336
+ if (count === undefined) {
4337
+ count = 1;
4338
+ posMap.set(key, count);
4339
+ return pos;
4340
+ } //type : diagonal
4341
+
4342
+
4343
+ var newPos = new Position(pos.lat + count * deltaLat, pos.lng + count * deltaLng);
4344
+ count += 1;
4345
+ posMap.set(key, count);
4346
+ return newPos;
4347
+ };
4348
+
4349
+ return React__default["default"].createElement(MarkerAutoTransitionContext.Provider, {
4350
+ value: {
4351
+ option: {
4352
+ sizeInMeter: sizeInMeter,
4353
+ type: type
4354
+ },
4355
+ transition: transition
4356
+ }
4357
+ }, zoom && children);
4358
+ }
4359
+
4360
+ function positionToMapKey(pos) {
4361
+ return "".concat(pos.lat, "-").concat(pos.lng);
4362
+ }
4363
+
4290
4364
  var offsetCalibration = function (mapType, divElement, options, autoFitToViewport, autoAdjustAnchor, autoAdjustAnchorConfig, mapDivElement) {
4291
4365
  //google 맵의 anchor 보정 (네이버와 같이 왼쪽/위 기준으로 처리)
4292
4366
  var baseTransform = '';
@@ -4492,8 +4566,13 @@
4492
4566
  };
4493
4567
  }, []); //create / update object
4494
4568
 
4569
+ var transition = React.useContext(MarkerAutoTransitionContext).transition;
4495
4570
  React.useEffect(function () {
4496
4571
  if (options) {
4572
+ if (!Array.isArray(options.position)) {
4573
+ options.position = transition(options.position);
4574
+ }
4575
+
4497
4576
  if (markerRef.current) {
4498
4577
  //console.log('update Marker')
4499
4578
  controller.updateMarker(markerRef.current, options); //disablePointerEvent 처리
@@ -5914,6 +5993,8 @@
5914
5993
  exports.MapPolylineWrapper = MapPolylineWrapper;
5915
5994
  exports.MapUIEvent = MapUIEvent;
5916
5995
  exports.Marker = Marker;
5996
+ exports.MarkerAutoTransitionContext = MarkerAutoTransitionContext;
5997
+ exports.MarkerAutoTransitionProvider = MarkerAutoTransitionProvider;
5917
5998
  exports.MintMap = MintMap;
5918
5999
  exports.MintMapCanvasRenderer = MintMapCanvasRenderer;
5919
6000
  exports.MintMapController = MintMapController;
@@ -5931,6 +6012,7 @@
5931
6012
  exports.SVGPolygon = SVGPolygon;
5932
6013
  exports.SVGRect = SVGRect;
5933
6014
  exports.Status = Status;
6015
+ exports.baseCenter = baseCenter;
5934
6016
  exports.getClusterInfo = getClusterInfo;
5935
6017
  exports.getMapOfType = getMapOfType;
5936
6018
  exports.log = log;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mint-ui/map",
3
- "version": "0.10.0-beta",
3
+ "version": "0.10.0-beta-test1",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.es.js",
6
6
  "browser": "./dist/index.umd.js",