@mint-ui/map 1.2.0-test.8 → 1.2.0
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/.eslintrc.js +11 -4
- package/.vscode/settings.json +32 -9
- package/dist/components/mint-map/core/MintMapController.d.ts +1 -0
- package/dist/components/mint-map/core/MintMapCore.js +5 -6
- package/dist/components/mint-map/core/advanced/CanvasMarkerLayer/CanvasMarkerLayer.d.ts +12 -0
- package/dist/components/mint-map/core/advanced/CanvasMarkerLayer/CanvasMarkerLayer.js +962 -0
- package/dist/components/mint-map/core/advanced/CanvasMarkerLayer/index.d.ts +4 -0
- package/dist/components/mint-map/core/advanced/CanvasMarkerLayer/types.d.ts +280 -0
- package/dist/components/mint-map/core/advanced/CanvasPolygonLayer/CanvasPolygonLayer.d.ts +17 -0
- package/dist/components/mint-map/core/advanced/CanvasPolygonLayer/CanvasPolygonLayer.js +624 -0
- package/dist/components/mint-map/core/advanced/CanvasPolygonLayer/index.d.ts +4 -0
- package/dist/components/mint-map/core/advanced/CanvasPolygonLayer/renderer.d.ts +303 -0
- package/dist/components/mint-map/core/advanced/CanvasPolygonLayer/renderer.js +1091 -0
- package/dist/components/mint-map/core/advanced/CanvasPolygonLayer/types.d.ts +284 -0
- package/dist/components/mint-map/core/advanced/canvas/CanvasMarker.d.ts +7 -0
- package/dist/components/mint-map/core/advanced/canvas/CanvasMarkerClaude.js +7 -7
- package/dist/components/mint-map/core/advanced/canvas/index.d.ts +0 -1
- package/dist/components/mint-map/core/advanced/index.d.ts +4 -2
- package/dist/components/mint-map/core/advanced/shared/context.d.ts +44 -0
- package/dist/components/mint-map/core/advanced/shared/context.js +230 -0
- package/dist/components/mint-map/core/advanced/shared/helpers.d.ts +20 -0
- package/dist/components/mint-map/core/advanced/shared/helpers.js +41 -0
- package/dist/components/mint-map/core/advanced/shared/hooks.d.ts +74 -0
- package/dist/components/mint-map/core/advanced/shared/hooks.js +196 -0
- package/dist/components/mint-map/core/advanced/{woongCanvas/shared → shared}/index.d.ts +5 -2
- package/dist/components/mint-map/core/advanced/shared/performance.d.ts +82 -0
- package/dist/components/mint-map/core/advanced/shared/performance.js +288 -0
- package/dist/components/mint-map/core/advanced/shared/types.d.ts +150 -0
- package/dist/components/mint-map/core/advanced/shared/types.js +31 -0
- package/dist/components/mint-map/core/advanced/shared/utils.d.ts +173 -0
- package/dist/components/mint-map/core/advanced/shared/utils.js +382 -0
- package/dist/components/mint-map/core/advanced/shared/viewport.d.ts +42 -0
- package/dist/components/mint-map/core/advanced/shared/viewport.js +52 -0
- package/dist/components/mint-map/core/wrapper/MapMarkerWrapper.js +22 -1
- package/dist/components/mint-map/google/GoogleMintMapController.d.ts +1 -0
- package/dist/components/mint-map/google/GoogleMintMapController.js +13 -8
- package/dist/components/mint-map/kakao/KakaoMintMapController.d.ts +1 -0
- package/dist/components/mint-map/kakao/KakaoMintMapController.js +13 -8
- package/dist/components/mint-map/naver/NaverMintMapController.d.ts +3 -0
- package/dist/components/mint-map/naver/NaverMintMapController.js +46 -11
- package/dist/index.es.js +5605 -4056
- package/dist/index.js +47 -27
- package/dist/index.umd.js +5621 -4059
- package/package.json +1 -1
- package/CLAUDE.md +0 -100
- package/dist/components/mint-map/core/advanced/canvas/CanvasMarkerHanquf.d.ts +0 -22
- package/dist/components/mint-map/core/advanced/canvas/CanvasMarkerHanquf.js +0 -413
- package/dist/components/mint-map/core/advanced/woongCanvas/ClusterMarker.d.ts +0 -11
- package/dist/components/mint-map/core/advanced/woongCanvas/WoongKonvaMarker.d.ts +0 -53
- package/dist/components/mint-map/core/advanced/woongCanvas/WoongKonvaMarker.js +0 -1123
- package/dist/components/mint-map/core/advanced/woongCanvas/index.d.ts +0 -3
- package/dist/components/mint-map/core/advanced/woongCanvas/shared/context.d.ts +0 -31
- package/dist/components/mint-map/core/advanced/woongCanvas/shared/context.js +0 -164
- package/dist/components/mint-map/core/advanced/woongCanvas/shared/performance.d.ts +0 -161
- package/dist/components/mint-map/core/advanced/woongCanvas/shared/performance.js +0 -343
- package/dist/components/mint-map/core/advanced/woongCanvas/shared/types.d.ts +0 -131
- package/dist/components/mint-map/core/advanced/woongCanvas/shared/types.js +0 -14
- package/dist/components/mint-map/core/advanced/woongCanvas/shared/utils.d.ts +0 -31
- package/dist/components/mint-map/core/advanced/woongCanvas/shared/utils.js +0 -164
- package/dist/components/mint-map/core/util/geohash.js +0 -125
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import Konva from 'konva';
|
|
2
|
+
import { Offset, Position } from '../../../types';
|
|
3
|
+
/**
|
|
4
|
+
* 캔버스 데이터 타입 Enum
|
|
5
|
+
*/
|
|
6
|
+
export declare enum CanvasDataType {
|
|
7
|
+
MARKER = "MARKER",
|
|
8
|
+
POLYGON = "POLYGON"
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* 폴리곤 경로 정의 (GeoJSON MultiPolygon 형식)
|
|
12
|
+
*/
|
|
13
|
+
export interface Paths {
|
|
14
|
+
type: string;
|
|
15
|
+
coordinates: number[][][][];
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* 마커 바운딩 박스 좌표 (위도/경도)
|
|
19
|
+
*/
|
|
20
|
+
export interface MarkerBoundingBox {
|
|
21
|
+
/** 왼쪽 상단 좌표 */
|
|
22
|
+
leftTop: Position;
|
|
23
|
+
/** 우측 하단 좌표 */
|
|
24
|
+
bottomRight: Position;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* 캔버스 마커/폴리곤의 기본 필수 속성
|
|
28
|
+
*/
|
|
29
|
+
export interface CanvasOption {
|
|
30
|
+
id: string;
|
|
31
|
+
position: Position;
|
|
32
|
+
boxWidth?: number;
|
|
33
|
+
boxHeight?: number;
|
|
34
|
+
tailHeight?: number;
|
|
35
|
+
paths?: Paths;
|
|
36
|
+
isDonutPolygon?: boolean;
|
|
37
|
+
/** 렌더링 오프셋 X (픽셀 단위, 기본값: 0) */
|
|
38
|
+
offsetX?: number;
|
|
39
|
+
/** 렌더링 오프셋 Y (픽셀 단위, 기본값: 0) */
|
|
40
|
+
offsetY?: number;
|
|
41
|
+
/** 마커 바운딩 박스 좌표 (onMouseOver 이벤트에서만 제공됨) */
|
|
42
|
+
boundingBox?: MarkerBoundingBox;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* 서버 데이터와 캔버스 옵션을 결합한 타입
|
|
46
|
+
*
|
|
47
|
+
* @template T 서버에서 받은 원본 데이터 타입
|
|
48
|
+
*
|
|
49
|
+
* @remarks
|
|
50
|
+
* 서버 데이터의 필드가 CanvasOption과 충돌하는 경우 (예: id, position 등),
|
|
51
|
+
* 변환 시 명시적으로 매핑해야 합니다. createCanvasData 헬퍼 함수를 사용하세요.
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* ```typescript
|
|
55
|
+
* // 서버 데이터에 id가 number 타입인 경우
|
|
56
|
+
* interface ServerData {
|
|
57
|
+
* id: number;
|
|
58
|
+
* name: string;
|
|
59
|
+
* }
|
|
60
|
+
*
|
|
61
|
+
* // ❌ 잘못된 사용 (타입 에러 발생)
|
|
62
|
+
* const data: CanvasData<ServerData> = {
|
|
63
|
+
* ...serverData,
|
|
64
|
+
* id: String(serverData.id), // 명시적 변환 필요
|
|
65
|
+
* position: new Position(lat, lng)
|
|
66
|
+
* };
|
|
67
|
+
*
|
|
68
|
+
* // ✅ 올바른 사용 (헬퍼 함수 사용)
|
|
69
|
+
* const data = createCanvasData(serverData, {
|
|
70
|
+
* id: String(serverData.id),
|
|
71
|
+
* position: new Position(lat, lng)
|
|
72
|
+
* });
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
75
|
+
export declare type CanvasData<T = {}> = T & CanvasOption;
|
|
76
|
+
/**
|
|
77
|
+
* 서버 데이터를 CanvasData로 변환하는 헬퍼 함수들
|
|
78
|
+
*
|
|
79
|
+
* @see createCanvasData, createCanvasDataArray in ./utils.ts
|
|
80
|
+
*/
|
|
81
|
+
export { createCanvasData, createCanvasDataArray } from './utils';
|
|
82
|
+
/**
|
|
83
|
+
* 렌더링 유틸리티 함수들 (좌표 변환)
|
|
84
|
+
*
|
|
85
|
+
* @template T 마커/폴리곤 데이터의 추가 속성 타입
|
|
86
|
+
*/
|
|
87
|
+
export interface RenderUtils<T> {
|
|
88
|
+
getOrComputePolygonOffsets: (polygonData: CanvasData<T>) => number[][][][] | null;
|
|
89
|
+
getOrComputeMarkerOffset: (markerData: CanvasData<T>) => Offset | null;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* 커스텀 렌더링 함수 파라미터 - Base Layer
|
|
93
|
+
*/
|
|
94
|
+
export interface RenderBaseParams<T> {
|
|
95
|
+
ctx: CanvasRenderingContext2D;
|
|
96
|
+
items: CanvasData<T>[];
|
|
97
|
+
selectedIds: Set<string>;
|
|
98
|
+
hoveredItem?: CanvasData<T> | null;
|
|
99
|
+
selectedItem?: CanvasData<T> | null;
|
|
100
|
+
utils: RenderUtils<T>;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* 커스텀 렌더링 함수 타입 - Base Layer
|
|
104
|
+
*
|
|
105
|
+
* @template T 마커/폴리곤 데이터의 추가 속성 타입
|
|
106
|
+
*/
|
|
107
|
+
export declare type CustomRenderBase<T> = (params: RenderBaseParams<T>) => void;
|
|
108
|
+
/**
|
|
109
|
+
* 커스텀 렌더링 함수 파라미터 - Animation Layer
|
|
110
|
+
*/
|
|
111
|
+
export interface RenderAnimationParams<T> {
|
|
112
|
+
layer: Konva.Layer;
|
|
113
|
+
selectedIds: Set<string>;
|
|
114
|
+
items: CanvasData<T>[];
|
|
115
|
+
utils: RenderUtils<T>;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* 커스텀 렌더링 함수 타입 - Animation Layer (선택)
|
|
119
|
+
*
|
|
120
|
+
* @template T 마커/폴리곤 데이터의 추가 속성 타입
|
|
121
|
+
*/
|
|
122
|
+
export declare type CustomRenderAnimation<T> = (params: RenderAnimationParams<T>) => void;
|
|
123
|
+
/**
|
|
124
|
+
* 렌더링 소스 Enum
|
|
125
|
+
*/
|
|
126
|
+
export declare enum RenderSource {
|
|
127
|
+
BASE = "BASE",
|
|
128
|
+
EVENT = "EVENT",
|
|
129
|
+
TOP = "TOP"
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* 커스텀 렌더링 함수 파라미터 - Event Layer
|
|
133
|
+
*/
|
|
134
|
+
export interface RenderEventParams<T> {
|
|
135
|
+
ctx: CanvasRenderingContext2D;
|
|
136
|
+
/** topStageZIndex가 설정되어 있는지 여부 */
|
|
137
|
+
hasTopStage: boolean;
|
|
138
|
+
hoveredItem: CanvasData<T> | null;
|
|
139
|
+
/** 렌더링 소스 (BASE, EVENT, TOP) */
|
|
140
|
+
renderSource: RenderSource;
|
|
141
|
+
selectedItems?: CanvasData<T>[];
|
|
142
|
+
selectedItem?: CanvasData<T> | null;
|
|
143
|
+
utils: RenderUtils<T>;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* 커스텀 렌더링 함수 타입 - Event Layer
|
|
147
|
+
*
|
|
148
|
+
* @template T 마커/폴리곤 데이터의 추가 속성 타입
|
|
149
|
+
*/
|
|
150
|
+
export declare type CustomRenderEvent<T> = (params: RenderEventParams<T>) => void;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var utils = require('./utils.js');
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* 캔버스 데이터 타입 Enum
|
|
9
|
+
*/
|
|
10
|
+
// eslint-disable-next-line no-shadow
|
|
11
|
+
exports.CanvasDataType = void 0;
|
|
12
|
+
|
|
13
|
+
(function (CanvasDataType) {
|
|
14
|
+
CanvasDataType["MARKER"] = "MARKER";
|
|
15
|
+
CanvasDataType["POLYGON"] = "POLYGON";
|
|
16
|
+
})(exports.CanvasDataType || (exports.CanvasDataType = {}));
|
|
17
|
+
/**
|
|
18
|
+
* 렌더링 소스 Enum
|
|
19
|
+
*/
|
|
20
|
+
// eslint-disable-next-line no-shadow
|
|
21
|
+
|
|
22
|
+
exports.RenderSource = void 0;
|
|
23
|
+
|
|
24
|
+
(function (RenderSource) {
|
|
25
|
+
RenderSource["BASE"] = "BASE";
|
|
26
|
+
RenderSource["EVENT"] = "EVENT";
|
|
27
|
+
RenderSource["TOP"] = "TOP";
|
|
28
|
+
})(exports.RenderSource || (exports.RenderSource = {}));
|
|
29
|
+
|
|
30
|
+
exports.createCanvasData = utils.createCanvasData;
|
|
31
|
+
exports.createCanvasDataArray = utils.createCanvasDataArray;
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import type { MarkerBoundingBox } from './types';
|
|
2
|
+
import { CanvasData, CanvasOption } from './types';
|
|
3
|
+
import { Offset } from '../../../types';
|
|
4
|
+
import { MintMapController } from '../../MintMapController';
|
|
5
|
+
/**
|
|
6
|
+
* 폴리곤 좌표 변환 (위경도 → 화면 좌표)
|
|
7
|
+
*
|
|
8
|
+
* @param polygonData 폴리곤 데이터
|
|
9
|
+
* @param controller MintMapController 인스턴스
|
|
10
|
+
* @returns 변환된 화면 좌표 배열 (4차원 배열) 또는 null
|
|
11
|
+
*/
|
|
12
|
+
export declare const computePolygonOffsets: (polygonData: CanvasData<any>, controller: MintMapController) => number[][][][] | null;
|
|
13
|
+
/**
|
|
14
|
+
* 마커 좌표 변환 (위경도 → 화면 좌표)
|
|
15
|
+
*
|
|
16
|
+
* @param markerData 마커 데이터
|
|
17
|
+
* @param controller MintMapController 인스턴스
|
|
18
|
+
* @returns 변환된 화면 좌표 또는 null
|
|
19
|
+
*/
|
|
20
|
+
export declare const computeMarkerOffset: (markerData: CanvasData<any>, controller: MintMapController) => Offset | null;
|
|
21
|
+
/**
|
|
22
|
+
* Point-in-Polygon 알고리즘 (Ray Casting)
|
|
23
|
+
*
|
|
24
|
+
* @param point 확인할 점의 좌표
|
|
25
|
+
* @param polygon 폴리곤 좌표 배열
|
|
26
|
+
* @returns 점이 폴리곤 내부에 있으면 true
|
|
27
|
+
*/
|
|
28
|
+
export declare const isPointInPolygon: (point: Offset, polygon: number[][]) => boolean;
|
|
29
|
+
/**
|
|
30
|
+
* 폴리곤 히트 테스트 (도넛 폴리곤 지원)
|
|
31
|
+
*
|
|
32
|
+
* @param clickedOffset 클릭/마우스 위치 좌표
|
|
33
|
+
* @param polygonData 폴리곤 데이터
|
|
34
|
+
* @param getPolygonOffsets 폴리곤 좌표 변환 함수
|
|
35
|
+
* @returns 점이 폴리곤 내부에 있으면 true
|
|
36
|
+
*/
|
|
37
|
+
export declare const isPointInPolygonData: (clickedOffset: Offset, polygonData: CanvasData<any>, getPolygonOffsets: (data: CanvasData<any>) => number[][][][] | null) => boolean;
|
|
38
|
+
/**
|
|
39
|
+
* 마커 히트 테스트 (꼬리 제외, 오프셋 지원)
|
|
40
|
+
*
|
|
41
|
+
* @param clickedOffset 클릭/마우스 위치 좌표
|
|
42
|
+
* @param markerData 마커 데이터
|
|
43
|
+
* @param getMarkerOffset 마커 좌표 변환 함수
|
|
44
|
+
* @returns 점이 마커 영역 내부에 있으면 true
|
|
45
|
+
*/
|
|
46
|
+
export declare const isPointInMarkerData: (clickedOffset: Offset, markerData: CanvasData<any>, getMarkerOffset: (data: CanvasData<any>) => Offset | null) => boolean;
|
|
47
|
+
export declare const hexToRgba: (hexColor: string, alpha?: number) => string;
|
|
48
|
+
/**
|
|
49
|
+
* 텍스트 박스 너비 계산
|
|
50
|
+
*
|
|
51
|
+
* @param params 파라미터 객체
|
|
52
|
+
* @param params.text 측정할 텍스트
|
|
53
|
+
* @param params.fontConfig 폰트 설정
|
|
54
|
+
* @param params.padding 패딩 값 (px)
|
|
55
|
+
* @param params.minWidth 최소 너비 (px)
|
|
56
|
+
* @returns 계산된 텍스트 박스 너비 (px)
|
|
57
|
+
*/
|
|
58
|
+
export declare const calculateTextBoxWidth: ({ fontConfig, minWidth, padding, text }: {
|
|
59
|
+
fontConfig: string;
|
|
60
|
+
minWidth: number;
|
|
61
|
+
padding: number;
|
|
62
|
+
text: string;
|
|
63
|
+
}) => number;
|
|
64
|
+
/**
|
|
65
|
+
* 서버 데이터를 CanvasData로 변환하는 헬퍼 함수
|
|
66
|
+
*
|
|
67
|
+
* 서버 데이터의 필드가 CanvasOption과 충돌하는 경우 (예: id, position 등),
|
|
68
|
+
* 이 함수를 사용하여 명시적으로 매핑할 수 있습니다.
|
|
69
|
+
*
|
|
70
|
+
* @template T 서버에서 받은 원본 데이터 타입
|
|
71
|
+
* @param serverData 서버에서 받은 원본 데이터
|
|
72
|
+
* @param canvasOptions CanvasOption 필드들 (충돌하는 필드는 여기서 명시적으로 지정)
|
|
73
|
+
* @returns CanvasData<T> 타입의 데이터
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* ```typescript
|
|
77
|
+
* interface ServerData {
|
|
78
|
+
* id: number; // CanvasOption의 id와 충돌
|
|
79
|
+
* name: string;
|
|
80
|
+
* }
|
|
81
|
+
*
|
|
82
|
+
* const serverData: ServerData = { id: 123, name: "Test" };
|
|
83
|
+
*
|
|
84
|
+
* // ✅ 올바른 사용
|
|
85
|
+
* const canvasData = createCanvasData(serverData, {
|
|
86
|
+
* id: String(serverData.id), // 명시적으로 변환
|
|
87
|
+
* position: new Position(37.5, 127.0)
|
|
88
|
+
* });
|
|
89
|
+
*
|
|
90
|
+
* // canvasData는 CanvasData<ServerData> 타입이며:
|
|
91
|
+
* // - id: string (CanvasOption의 id)
|
|
92
|
+
* // - name: string (서버 데이터의 name)
|
|
93
|
+
* // - position: Position (CanvasOption의 position)
|
|
94
|
+
* ```
|
|
95
|
+
*/
|
|
96
|
+
export declare function createCanvasData<T extends Record<string, any>>(serverData: T, canvasOptions: CanvasOption): CanvasData<T>;
|
|
97
|
+
/**
|
|
98
|
+
* 서버 데이터 배열을 CanvasData 배열로 변환하는 헬퍼 함수
|
|
99
|
+
*
|
|
100
|
+
* 서버 데이터 배열의 각 항목을 CanvasData로 변환합니다.
|
|
101
|
+
* 각 항목마다 다른 CanvasOption을 적용할 수 있습니다.
|
|
102
|
+
*
|
|
103
|
+
* @template T 서버에서 받은 원본 데이터 타입
|
|
104
|
+
* @param serverDataArray 서버에서 받은 원본 데이터 배열
|
|
105
|
+
* @param getCanvasOptions 각 항목에 대해 CanvasOption을 생성하는 함수
|
|
106
|
+
* @returns CanvasData<T>[] 타입의 데이터 배열
|
|
107
|
+
*
|
|
108
|
+
* @example
|
|
109
|
+
* ```typescript
|
|
110
|
+
* interface ServerData {
|
|
111
|
+
* id: number; // CanvasOption의 id와 충돌
|
|
112
|
+
* name: string;
|
|
113
|
+
* lat: number;
|
|
114
|
+
* lng: number;
|
|
115
|
+
* }
|
|
116
|
+
*
|
|
117
|
+
* const serverDataArray: ServerData[] = [
|
|
118
|
+
* { id: 1, name: "Item 1", lat: 37.5, lng: 127.0 },
|
|
119
|
+
* { id: 2, name: "Item 2", lat: 37.6, lng: 127.1 }
|
|
120
|
+
* ];
|
|
121
|
+
*
|
|
122
|
+
* // ✅ 올바른 사용
|
|
123
|
+
* const canvasDataArray = createCanvasDataArray(serverDataArray, (item, index) => ({
|
|
124
|
+
* id: String(item.id), // 각 항목마다 명시적으로 변환
|
|
125
|
+
* position: new Position(item.lat, item.lng)
|
|
126
|
+
* }));
|
|
127
|
+
*
|
|
128
|
+
* // canvasDataArray는 CanvasData<ServerData>[] 타입입니다
|
|
129
|
+
* ```
|
|
130
|
+
*/
|
|
131
|
+
export declare function createCanvasDataArray<T extends Record<string, any>>(serverDataArray: T[], getCanvasOptions: (serverData: T, index: number) => CanvasOption): CanvasData<T>[];
|
|
132
|
+
/**
|
|
133
|
+
* 마커 바운딩 박스 좌표 계산 (위도/경도)
|
|
134
|
+
*
|
|
135
|
+
* 마커의 중심 좌표와 크기를 기반으로 현재 뷰포트에서의 바운딩 박스 좌표를 계산합니다.
|
|
136
|
+
*
|
|
137
|
+
* @param params 계산 파라미터
|
|
138
|
+
* @param params.lat 마커의 중심 위도
|
|
139
|
+
* @param params.lng 마커의 중심 경도
|
|
140
|
+
* @param params.width 마커의 너비 (픽셀 단위, boxWidth)
|
|
141
|
+
* @param params.height 마커의 높이 (픽셀 단위, boxHeight)
|
|
142
|
+
* @param params.controller MintMapController 인스턴스 (뷰포트 상태를 알기 위해 필요)
|
|
143
|
+
* @param params.tailHeight 마커 꼬리 높이 (픽셀 단위, 기본값: 0)
|
|
144
|
+
* @param params.offsetX 마커 오프셋 X (픽셀 단위, 기본값: 0)
|
|
145
|
+
* @param params.offsetY 마커 오프셋 Y (픽셀 단위, 기본값: 0)
|
|
146
|
+
* @returns 마커 바운딩 박스 좌표 (위도/경도) 또는 null
|
|
147
|
+
*
|
|
148
|
+
* @example
|
|
149
|
+
* ```typescript
|
|
150
|
+
* const boundingBox = calculateMarkerBoundingBox({
|
|
151
|
+
* lat: 37.5665,
|
|
152
|
+
* lng: 126.9780,
|
|
153
|
+
* width: 100,
|
|
154
|
+
* height: 50,
|
|
155
|
+
* controller: mintMapController
|
|
156
|
+
* });
|
|
157
|
+
*
|
|
158
|
+
* if (boundingBox) {
|
|
159
|
+
* console.log('왼쪽 상단:', boundingBox.leftTop);
|
|
160
|
+
* console.log('우측 하단:', boundingBox.bottomRight);
|
|
161
|
+
* }
|
|
162
|
+
* ```
|
|
163
|
+
*/
|
|
164
|
+
export declare const calculateMarkerBoundingBox: (params: {
|
|
165
|
+
lat: number;
|
|
166
|
+
lng: number;
|
|
167
|
+
width: number;
|
|
168
|
+
height: number;
|
|
169
|
+
controller: MintMapController;
|
|
170
|
+
tailHeight?: number;
|
|
171
|
+
offsetX?: number;
|
|
172
|
+
offsetY?: number;
|
|
173
|
+
}) => MarkerBoundingBox | null;
|