@mint-ui/map 1.2.0-test.36 → 1.2.0-test.37
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/advanced/shared/types.d.ts +4 -0
- package/dist/components/mint-map/core/advanced/shared/utils.d.ts +1 -1
- package/dist/components/mint-map/core/advanced/shared/utils.js +6 -4
- package/dist/components/mint-map/core/advanced/woongCanvasMarker/WoongCanvasMarker.js +8 -5
- package/dist/index.es.js +14 -9
- package/dist/index.umd.js +14 -9
- package/package.json +1 -1
|
@@ -25,6 +25,10 @@ export interface CanvasOption {
|
|
|
25
25
|
tailHeight?: number;
|
|
26
26
|
paths?: Paths;
|
|
27
27
|
isDonutPolygon?: boolean;
|
|
28
|
+
/** 렌더링 오프셋 X (픽셀 단위, 기본값: 0) */
|
|
29
|
+
offsetX?: number;
|
|
30
|
+
/** 렌더링 오프셋 Y (픽셀 단위, 기본값: 0) */
|
|
31
|
+
offsetY?: number;
|
|
28
32
|
}
|
|
29
33
|
/**
|
|
30
34
|
* 서버 데이터와 캔버스 옵션을 결합한 타입
|
|
@@ -35,7 +35,7 @@ export declare const isPointInPolygon: (point: Offset, polygon: number[][]) => b
|
|
|
35
35
|
*/
|
|
36
36
|
export declare const isPointInPolygonData: (clickedOffset: Offset, polygonData: CanvasData<any>, getPolygonOffsets: (data: CanvasData<any>) => number[][][][] | null) => boolean;
|
|
37
37
|
/**
|
|
38
|
-
* 마커 히트 테스트 (꼬리
|
|
38
|
+
* 마커 히트 테스트 (꼬리 제외, 오프셋 지원)
|
|
39
39
|
*
|
|
40
40
|
* @param clickedOffset 클릭/마우스 위치 좌표
|
|
41
41
|
* @param markerData 마커 데이터
|
|
@@ -149,7 +149,7 @@ var isPointInPolygonData = function (clickedOffset, polygonData, getPolygonOffse
|
|
|
149
149
|
return false;
|
|
150
150
|
};
|
|
151
151
|
/**
|
|
152
|
-
* 마커 히트 테스트 (꼬리
|
|
152
|
+
* 마커 히트 테스트 (꼬리 제외, 오프셋 지원)
|
|
153
153
|
*
|
|
154
154
|
* @param clickedOffset 클릭/마우스 위치 좌표
|
|
155
155
|
* @param markerData 마커 데이터
|
|
@@ -162,10 +162,12 @@ var isPointInMarkerData = function (clickedOffset, markerData, getMarkerOffset)
|
|
|
162
162
|
if (!markerOffset) return false;
|
|
163
163
|
var boxWidth = markerData.boxWidth || 50;
|
|
164
164
|
var boxHeight = markerData.boxHeight || 28;
|
|
165
|
-
var tailHeight = markerData.tailHeight || 0;
|
|
165
|
+
var tailHeight = markerData.tailHeight || 0;
|
|
166
|
+
var offsetX = markerData.offsetX || 0;
|
|
167
|
+
var offsetY = markerData.offsetY || 0; // 오프셋을 적용한 마커 중심점 기준으로 박스 영역 계산 (꼬리는 제외)
|
|
166
168
|
|
|
167
|
-
var x = markerOffset.x - boxWidth / 2;
|
|
168
|
-
var y = markerOffset.y - boxHeight - tailHeight; // 클릭 위치가 박스 영역 내부에 있는지 확인
|
|
169
|
+
var x = markerOffset.x + offsetX - boxWidth / 2;
|
|
170
|
+
var y = markerOffset.y + offsetY - boxHeight - tailHeight; // 클릭 위치가 박스 영역 내부에 있는지 확인
|
|
169
171
|
|
|
170
172
|
return clickedOffset.x >= x && clickedOffset.x <= x + boxWidth && clickedOffset.y >= y && clickedOffset.y <= y + boxHeight;
|
|
171
173
|
}; // Hex 색상을 RGBA로 변환
|
|
@@ -93,7 +93,7 @@ var WoongCanvasMarker = function (props) {
|
|
|
93
93
|
if (!result) return null;
|
|
94
94
|
offsetCacheRef.current.set(markerData.id, result);
|
|
95
95
|
return result;
|
|
96
|
-
}; // 마커 바운딩 박스 계산 (Viewport Culling 및 Hit Test
|
|
96
|
+
}; // 마커 바운딩 박스 계산 (Viewport Culling 및 Hit Test용, 오프셋 지원)
|
|
97
97
|
|
|
98
98
|
|
|
99
99
|
var computeBoundingBox = function (item) {
|
|
@@ -102,11 +102,14 @@ var WoongCanvasMarker = function (props) {
|
|
|
102
102
|
var boxWidth = item.boxWidth || 50;
|
|
103
103
|
var boxHeight = item.boxHeight || 28;
|
|
104
104
|
var tailHeight = item.tailHeight || 0;
|
|
105
|
+
var offsetX = item.offsetX || 0;
|
|
106
|
+
var offsetY = item.offsetY || 0; // 오프셋을 적용한 마커 중심점 기준으로 바운딩 박스 계산
|
|
107
|
+
|
|
105
108
|
return {
|
|
106
|
-
minX: offset.x - boxWidth / 2,
|
|
107
|
-
minY: offset.y - boxHeight - tailHeight,
|
|
108
|
-
maxX: offset.x + boxWidth / 2,
|
|
109
|
-
maxY: offset.y
|
|
109
|
+
minX: offset.x + offsetX - boxWidth / 2,
|
|
110
|
+
minY: offset.y + offsetY - boxHeight - tailHeight,
|
|
111
|
+
maxX: offset.x + offsetX + boxWidth / 2,
|
|
112
|
+
maxY: offset.y + offsetY
|
|
110
113
|
};
|
|
111
114
|
}; // 공간 인덱스 빌드 (빠른 Hit Test용)
|
|
112
115
|
|
package/dist/index.es.js
CHANGED
|
@@ -936,7 +936,7 @@ var isPointInPolygonData = function (clickedOffset, polygonData, getPolygonOffse
|
|
|
936
936
|
return false;
|
|
937
937
|
};
|
|
938
938
|
/**
|
|
939
|
-
* 마커 히트 테스트 (꼬리
|
|
939
|
+
* 마커 히트 테스트 (꼬리 제외, 오프셋 지원)
|
|
940
940
|
*
|
|
941
941
|
* @param clickedOffset 클릭/마우스 위치 좌표
|
|
942
942
|
* @param markerData 마커 데이터
|
|
@@ -949,10 +949,12 @@ var isPointInMarkerData = function (clickedOffset, markerData, getMarkerOffset)
|
|
|
949
949
|
if (!markerOffset) return false;
|
|
950
950
|
var boxWidth = markerData.boxWidth || 50;
|
|
951
951
|
var boxHeight = markerData.boxHeight || 28;
|
|
952
|
-
var tailHeight = markerData.tailHeight || 0;
|
|
952
|
+
var tailHeight = markerData.tailHeight || 0;
|
|
953
|
+
var offsetX = markerData.offsetX || 0;
|
|
954
|
+
var offsetY = markerData.offsetY || 0; // 오프셋을 적용한 마커 중심점 기준으로 박스 영역 계산 (꼬리는 제외)
|
|
953
955
|
|
|
954
|
-
var x = markerOffset.x - boxWidth / 2;
|
|
955
|
-
var y = markerOffset.y - boxHeight - tailHeight; // 클릭 위치가 박스 영역 내부에 있는지 확인
|
|
956
|
+
var x = markerOffset.x + offsetX - boxWidth / 2;
|
|
957
|
+
var y = markerOffset.y + offsetY - boxHeight - tailHeight; // 클릭 위치가 박스 영역 내부에 있는지 확인
|
|
956
958
|
|
|
957
959
|
return clickedOffset.x >= x && clickedOffset.x <= x + boxWidth && clickedOffset.y >= y && clickedOffset.y <= y + boxHeight;
|
|
958
960
|
}; // Hex 색상을 RGBA로 변환
|
|
@@ -5638,7 +5640,7 @@ var WoongCanvasMarker = function (props) {
|
|
|
5638
5640
|
if (!result) return null;
|
|
5639
5641
|
offsetCacheRef.current.set(markerData.id, result);
|
|
5640
5642
|
return result;
|
|
5641
|
-
}; // 마커 바운딩 박스 계산 (Viewport Culling 및 Hit Test
|
|
5643
|
+
}; // 마커 바운딩 박스 계산 (Viewport Culling 및 Hit Test용, 오프셋 지원)
|
|
5642
5644
|
|
|
5643
5645
|
|
|
5644
5646
|
var computeBoundingBox = function (item) {
|
|
@@ -5647,11 +5649,14 @@ var WoongCanvasMarker = function (props) {
|
|
|
5647
5649
|
var boxWidth = item.boxWidth || 50;
|
|
5648
5650
|
var boxHeight = item.boxHeight || 28;
|
|
5649
5651
|
var tailHeight = item.tailHeight || 0;
|
|
5652
|
+
var offsetX = item.offsetX || 0;
|
|
5653
|
+
var offsetY = item.offsetY || 0; // 오프셋을 적용한 마커 중심점 기준으로 바운딩 박스 계산
|
|
5654
|
+
|
|
5650
5655
|
return {
|
|
5651
|
-
minX: offset.x - boxWidth / 2,
|
|
5652
|
-
minY: offset.y - boxHeight - tailHeight,
|
|
5653
|
-
maxX: offset.x + boxWidth / 2,
|
|
5654
|
-
maxY: offset.y
|
|
5656
|
+
minX: offset.x + offsetX - boxWidth / 2,
|
|
5657
|
+
minY: offset.y + offsetY - boxHeight - tailHeight,
|
|
5658
|
+
maxX: offset.x + offsetX + boxWidth / 2,
|
|
5659
|
+
maxY: offset.y + offsetY
|
|
5655
5660
|
};
|
|
5656
5661
|
}; // 공간 인덱스 빌드 (빠른 Hit Test용)
|
|
5657
5662
|
|
package/dist/index.umd.js
CHANGED
|
@@ -940,7 +940,7 @@
|
|
|
940
940
|
return false;
|
|
941
941
|
};
|
|
942
942
|
/**
|
|
943
|
-
* 마커 히트 테스트 (꼬리
|
|
943
|
+
* 마커 히트 테스트 (꼬리 제외, 오프셋 지원)
|
|
944
944
|
*
|
|
945
945
|
* @param clickedOffset 클릭/마우스 위치 좌표
|
|
946
946
|
* @param markerData 마커 데이터
|
|
@@ -953,10 +953,12 @@
|
|
|
953
953
|
if (!markerOffset) return false;
|
|
954
954
|
var boxWidth = markerData.boxWidth || 50;
|
|
955
955
|
var boxHeight = markerData.boxHeight || 28;
|
|
956
|
-
var tailHeight = markerData.tailHeight || 0;
|
|
956
|
+
var tailHeight = markerData.tailHeight || 0;
|
|
957
|
+
var offsetX = markerData.offsetX || 0;
|
|
958
|
+
var offsetY = markerData.offsetY || 0; // 오프셋을 적용한 마커 중심점 기준으로 박스 영역 계산 (꼬리는 제외)
|
|
957
959
|
|
|
958
|
-
var x = markerOffset.x - boxWidth / 2;
|
|
959
|
-
var y = markerOffset.y - boxHeight - tailHeight; // 클릭 위치가 박스 영역 내부에 있는지 확인
|
|
960
|
+
var x = markerOffset.x + offsetX - boxWidth / 2;
|
|
961
|
+
var y = markerOffset.y + offsetY - boxHeight - tailHeight; // 클릭 위치가 박스 영역 내부에 있는지 확인
|
|
960
962
|
|
|
961
963
|
return clickedOffset.x >= x && clickedOffset.x <= x + boxWidth && clickedOffset.y >= y && clickedOffset.y <= y + boxHeight;
|
|
962
964
|
}; // Hex 색상을 RGBA로 변환
|
|
@@ -5642,7 +5644,7 @@
|
|
|
5642
5644
|
if (!result) return null;
|
|
5643
5645
|
offsetCacheRef.current.set(markerData.id, result);
|
|
5644
5646
|
return result;
|
|
5645
|
-
}; // 마커 바운딩 박스 계산 (Viewport Culling 및 Hit Test
|
|
5647
|
+
}; // 마커 바운딩 박스 계산 (Viewport Culling 및 Hit Test용, 오프셋 지원)
|
|
5646
5648
|
|
|
5647
5649
|
|
|
5648
5650
|
var computeBoundingBox = function (item) {
|
|
@@ -5651,11 +5653,14 @@
|
|
|
5651
5653
|
var boxWidth = item.boxWidth || 50;
|
|
5652
5654
|
var boxHeight = item.boxHeight || 28;
|
|
5653
5655
|
var tailHeight = item.tailHeight || 0;
|
|
5656
|
+
var offsetX = item.offsetX || 0;
|
|
5657
|
+
var offsetY = item.offsetY || 0; // 오프셋을 적용한 마커 중심점 기준으로 바운딩 박스 계산
|
|
5658
|
+
|
|
5654
5659
|
return {
|
|
5655
|
-
minX: offset.x - boxWidth / 2,
|
|
5656
|
-
minY: offset.y - boxHeight - tailHeight,
|
|
5657
|
-
maxX: offset.x + boxWidth / 2,
|
|
5658
|
-
maxY: offset.y
|
|
5660
|
+
minX: offset.x + offsetX - boxWidth / 2,
|
|
5661
|
+
minY: offset.y + offsetY - boxHeight - tailHeight,
|
|
5662
|
+
maxX: offset.x + offsetX + boxWidth / 2,
|
|
5663
|
+
maxY: offset.y + offsetY
|
|
5659
5664
|
};
|
|
5660
5665
|
}; // 공간 인덱스 빌드 (빠른 Hit Test용)
|
|
5661
5666
|
|