@mint-ui/map 1.2.0-test.10 → 1.2.0-test.11
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 +1 -0
- package/dist/components/mint-map/core/advanced/woongCanvas/{WoongKonvaMarker.d.ts → WoongCanvasLayer.d.ts} +52 -13
- package/dist/components/mint-map/core/advanced/woongCanvas/{WoongKonvaMarker.js → WoongCanvasLayer.js} +39 -31
- package/dist/components/mint-map/core/advanced/woongCanvas/index.d.ts +2 -2
- package/dist/components/mint-map/core/advanced/woongCanvas/shared/renderer.d.ts +59 -0
- package/dist/components/mint-map/core/advanced/woongCanvas/shared/renderer.js +226 -0
- package/dist/components/mint-map/core/advanced/woongCanvas/shared/utils.d.ts +1 -0
- package/dist/components/mint-map/core/advanced/woongCanvas/shared/utils.js +18 -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 +5 -1
- package/dist/components/mint-map/kakao/KakaoMintMapController.d.ts +1 -0
- package/dist/components/mint-map/kakao/KakaoMintMapController.js +5 -1
- package/dist/components/mint-map/naver/NaverMintMapController.d.ts +3 -0
- package/dist/components/mint-map/naver/NaverMintMapController.js +38 -4
- package/dist/index.es.js +341 -35
- package/dist/index.js +3 -2
- package/dist/index.umd.js +342 -35
- package/package.json +1 -1
package/dist/index.umd.js
CHANGED
|
@@ -948,6 +948,23 @@
|
|
|
948
948
|
var y = markerOffset.y - boxHeight - tailHeight;
|
|
949
949
|
return clickedOffset.x >= x && clickedOffset.x <= x + boxWidth && clickedOffset.y >= y && clickedOffset.y <= y + boxHeight;
|
|
950
950
|
};
|
|
951
|
+
var hexToRgba = function (hexColor, alpha) {
|
|
952
|
+
if (alpha === void 0) {
|
|
953
|
+
alpha = 1;
|
|
954
|
+
} // NOTE: 입력된 hexColor에서 "#" 제거
|
|
955
|
+
|
|
956
|
+
|
|
957
|
+
var hex = hexColor.replace('#', ''); // NOTE: 6자리일 경우 알파 값은 사용자가 제공한 alpha 값으로 설정
|
|
958
|
+
|
|
959
|
+
if (hex.length === 6) {
|
|
960
|
+
var r = parseInt(hex.substring(0, 2), 16);
|
|
961
|
+
var g = parseInt(hex.substring(2, 4), 16);
|
|
962
|
+
var b = parseInt(hex.substring(4, 6), 16);
|
|
963
|
+
return "rgba(".concat(r, ", ").concat(g, ", ").concat(b, ", ").concat(alpha, ")");
|
|
964
|
+
}
|
|
965
|
+
|
|
966
|
+
throw new Error('Invalid hex color format');
|
|
967
|
+
};
|
|
951
968
|
|
|
952
969
|
var KonvaMarkerContext = React.createContext(null);
|
|
953
970
|
var KonvaMarkerProvider = function (_a) {
|
|
@@ -2758,7 +2775,7 @@
|
|
|
2758
2775
|
var onMouseOverHandler = function (e) {
|
|
2759
2776
|
var _a;
|
|
2760
2777
|
|
|
2761
|
-
var marker = markerRef.current;
|
|
2778
|
+
var marker = markerRef.current;
|
|
2762
2779
|
|
|
2763
2780
|
if (marker) {
|
|
2764
2781
|
var mouseOverHandler = (_a = options === null || options === void 0 ? void 0 : options.event) === null || _a === void 0 ? void 0 : _a.get('mouseover');
|
|
@@ -2771,6 +2788,25 @@
|
|
|
2771
2788
|
|
|
2772
2789
|
next && topOnHover && controller.markerToTheTop(marker);
|
|
2773
2790
|
}
|
|
2791
|
+
}; // 20251014 | 장한별 | mouseleave 이벤트 추가, 마우스가 마커 위에서 떠날 때 원래 zindex 를 복구하기 위함
|
|
2792
|
+
|
|
2793
|
+
|
|
2794
|
+
var onMouseLeaveHandler = function (e) {
|
|
2795
|
+
var _a;
|
|
2796
|
+
|
|
2797
|
+
var marker = markerRef.current;
|
|
2798
|
+
|
|
2799
|
+
if (marker) {
|
|
2800
|
+
var mouseOutHandler = (_a = options === null || options === void 0 ? void 0 : options.event) === null || _a === void 0 ? void 0 : _a.get('mouseout');
|
|
2801
|
+
var next = true;
|
|
2802
|
+
|
|
2803
|
+
if (mouseOutHandler) {
|
|
2804
|
+
var hasNext = mouseOutHandler(e);
|
|
2805
|
+
hasNext !== undefined && (next = hasNext);
|
|
2806
|
+
}
|
|
2807
|
+
|
|
2808
|
+
next && topOnHover && controller.restoreMarkerZIndex(marker);
|
|
2809
|
+
}
|
|
2774
2810
|
}; //create object
|
|
2775
2811
|
|
|
2776
2812
|
|
|
@@ -2788,10 +2824,12 @@
|
|
|
2788
2824
|
}); //드래그 여부 초기화를 먼저 수행하기 위해 capture : true 처리
|
|
2789
2825
|
|
|
2790
2826
|
divElement.addEventListener('mouseover', onMouseOverHandler);
|
|
2827
|
+
divElement.addEventListener('mouseleave', onMouseLeaveHandler);
|
|
2791
2828
|
return function () {
|
|
2792
2829
|
divElement.removeEventListener('click', onClickHandler);
|
|
2793
2830
|
divElement.removeEventListener('mousedown', onMousedownHandler);
|
|
2794
2831
|
divElement.removeEventListener('mouseover', onMouseOverHandler);
|
|
2832
|
+
divElement.removeEventListener('mouseleave', onMouseLeaveHandler);
|
|
2795
2833
|
|
|
2796
2834
|
if (markerRef.current) {
|
|
2797
2835
|
controller.clearDrawable(markerRef.current);
|
|
@@ -5357,6 +5395,225 @@
|
|
|
5357
5395
|
}))));
|
|
5358
5396
|
}
|
|
5359
5397
|
|
|
5398
|
+
/**
|
|
5399
|
+
* 폴리곤 렌더링 유틸리티
|
|
5400
|
+
*
|
|
5401
|
+
* 이 파일은 폴리곤 렌더링을 위한 헬퍼 함수와 팩토리 함수를 제공합니다.
|
|
5402
|
+
*/
|
|
5403
|
+
|
|
5404
|
+
/**
|
|
5405
|
+
* 폴리곤 그리기 헬퍼 함수 (도넛 폴리곤 지원)
|
|
5406
|
+
*/
|
|
5407
|
+
var drawPolygon = function (_a) {
|
|
5408
|
+
var ctx = _a.ctx,
|
|
5409
|
+
polygonOffsets = _a.polygonOffsets,
|
|
5410
|
+
isDonutPolygon = _a.isDonutPolygon,
|
|
5411
|
+
fillColor = _a.fillColor,
|
|
5412
|
+
strokeColor = _a.strokeColor,
|
|
5413
|
+
lineWidth = _a.lineWidth;
|
|
5414
|
+
|
|
5415
|
+
for (var _i = 0, polygonOffsets_1 = polygonOffsets; _i < polygonOffsets_1.length; _i++) {
|
|
5416
|
+
var multiPolygon = polygonOffsets_1[_i];
|
|
5417
|
+
|
|
5418
|
+
if (isDonutPolygon) {
|
|
5419
|
+
ctx.beginPath(); // 1. 외부 폴리곤 그리기
|
|
5420
|
+
|
|
5421
|
+
if (multiPolygon[0] && multiPolygon[0].length > 0) {
|
|
5422
|
+
ctx.moveTo(multiPolygon[0][0][0], multiPolygon[0][0][1]);
|
|
5423
|
+
|
|
5424
|
+
for (var i = 1; i < multiPolygon[0].length; i++) {
|
|
5425
|
+
ctx.lineTo(multiPolygon[0][i][0], multiPolygon[0][i][1]);
|
|
5426
|
+
}
|
|
5427
|
+
|
|
5428
|
+
ctx.closePath();
|
|
5429
|
+
} // 2. 내부 폴리곤 (구멍들) 그리기 - 같은 path에 추가
|
|
5430
|
+
|
|
5431
|
+
|
|
5432
|
+
for (var j = 1; j < multiPolygon.length; j++) {
|
|
5433
|
+
var innerPolygon = multiPolygon[j];
|
|
5434
|
+
if (innerPolygon.length === 0) continue;
|
|
5435
|
+
ctx.moveTo(innerPolygon[0][0], innerPolygon[0][1]);
|
|
5436
|
+
|
|
5437
|
+
for (var i = 1; i < innerPolygon.length; i++) {
|
|
5438
|
+
ctx.lineTo(innerPolygon[i][0], innerPolygon[i][1]);
|
|
5439
|
+
}
|
|
5440
|
+
|
|
5441
|
+
ctx.closePath();
|
|
5442
|
+
} // 3. evenodd fill rule로 구멍 뚫기
|
|
5443
|
+
|
|
5444
|
+
|
|
5445
|
+
ctx.fillStyle = fillColor;
|
|
5446
|
+
ctx.fill('evenodd'); // 4. 외곽선 그리기
|
|
5447
|
+
|
|
5448
|
+
ctx.strokeStyle = strokeColor;
|
|
5449
|
+
ctx.lineWidth = lineWidth;
|
|
5450
|
+
ctx.stroke();
|
|
5451
|
+
} else {
|
|
5452
|
+
// 일반 폴리곤
|
|
5453
|
+
for (var _b = 0, multiPolygon_1 = multiPolygon; _b < multiPolygon_1.length; _b++) {
|
|
5454
|
+
var polygonGroup = multiPolygon_1[_b];
|
|
5455
|
+
if (!polygonGroup.length) continue;
|
|
5456
|
+
ctx.beginPath();
|
|
5457
|
+
var firstPoint = polygonGroup[0];
|
|
5458
|
+
ctx.moveTo(firstPoint[0], firstPoint[1]);
|
|
5459
|
+
|
|
5460
|
+
for (var i = 1; i < polygonGroup.length; i++) {
|
|
5461
|
+
var point = polygonGroup[i];
|
|
5462
|
+
ctx.lineTo(point[0], point[1]);
|
|
5463
|
+
}
|
|
5464
|
+
|
|
5465
|
+
ctx.closePath();
|
|
5466
|
+
ctx.fillStyle = fillColor;
|
|
5467
|
+
ctx.strokeStyle = strokeColor;
|
|
5468
|
+
ctx.lineWidth = lineWidth;
|
|
5469
|
+
ctx.fill();
|
|
5470
|
+
ctx.stroke();
|
|
5471
|
+
}
|
|
5472
|
+
}
|
|
5473
|
+
}
|
|
5474
|
+
};
|
|
5475
|
+
/**
|
|
5476
|
+
* 폴리곤 Base 렌더링 함수
|
|
5477
|
+
*
|
|
5478
|
+
* @param baseFillColor 기본 폴리곤 채우기 색상
|
|
5479
|
+
* @param baseStrokeColor 기본 폴리곤 테두리 색상
|
|
5480
|
+
* @param baseLineWidth 기본 폴리곤 테두리 두께
|
|
5481
|
+
* @returns Base Layer 렌더링 함수
|
|
5482
|
+
*
|
|
5483
|
+
* @example
|
|
5484
|
+
* const renderBase = renderPolygonBase(
|
|
5485
|
+
* 'rgba(255, 100, 100, 0.5)',
|
|
5486
|
+
* 'rgba(200, 50, 50, 0.8)',
|
|
5487
|
+
* 2
|
|
5488
|
+
* );
|
|
5489
|
+
*/
|
|
5490
|
+
|
|
5491
|
+
var renderPolygonBase = function (baseFillColor, baseStrokeColor, baseLineWidth) {
|
|
5492
|
+
return function (_a) {
|
|
5493
|
+
var ctx = _a.ctx,
|
|
5494
|
+
items = _a.items,
|
|
5495
|
+
selectedIds = _a.selectedIds,
|
|
5496
|
+
utils = _a.utils;
|
|
5497
|
+
|
|
5498
|
+
for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {
|
|
5499
|
+
var item = items_1[_i]; // 선택된 항목은 Event Layer에서 그림
|
|
5500
|
+
|
|
5501
|
+
if (selectedIds.has(item.id)) continue;
|
|
5502
|
+
if (!item.paths) continue;
|
|
5503
|
+
var polygonOffsets = utils.getOrComputePolygonOffsets(item);
|
|
5504
|
+
if (!polygonOffsets) continue;
|
|
5505
|
+
drawPolygon({
|
|
5506
|
+
ctx: ctx,
|
|
5507
|
+
polygonOffsets: polygonOffsets,
|
|
5508
|
+
isDonutPolygon: item.isDonutPolygon || false,
|
|
5509
|
+
fillColor: baseFillColor,
|
|
5510
|
+
strokeColor: baseStrokeColor,
|
|
5511
|
+
lineWidth: baseLineWidth
|
|
5512
|
+
});
|
|
5513
|
+
}
|
|
5514
|
+
};
|
|
5515
|
+
};
|
|
5516
|
+
/**
|
|
5517
|
+
* 폴리곤 Event 렌더링 함수
|
|
5518
|
+
*
|
|
5519
|
+
* @param selectedFillColor 선택된 폴리곤 채우기 색상
|
|
5520
|
+
* @param selectedStrokeColor 선택된 폴리곤 테두리 색상
|
|
5521
|
+
* @param selectedLineWidth 선택된 폴리곤 테두리 두께
|
|
5522
|
+
* @param activeFillColor 마지막 선택된 폴리곤 채우기 색상 (선택, 기본값: selectedFillColor)
|
|
5523
|
+
* @param activeStrokeColor 마지막 선택된 폴리곤 테두리 색상 (선택, 기본값: selectedStrokeColor)
|
|
5524
|
+
* @param activeLineWidth 마지막 선택된 폴리곤 테두리 두께 (선택, 기본값: selectedLineWidth)
|
|
5525
|
+
* @param hoveredFillColor Hover 시 폴리곤 채우기 색상 (선택, 기본값: selectedFillColor)
|
|
5526
|
+
* @param hoveredStrokeColor Hover 시 폴리곤 테두리 색상 (선택, 기본값: selectedStrokeColor)
|
|
5527
|
+
* @param hoveredLineWidth Hover 시 폴리곤 테두리 두께 (선택, 기본값: selectedLineWidth)
|
|
5528
|
+
* @returns Event Layer 렌더링 함수
|
|
5529
|
+
*
|
|
5530
|
+
* @example
|
|
5531
|
+
* const renderEvent = renderPolygonEvent(
|
|
5532
|
+
* 'rgba(255, 193, 7, 0.7)',
|
|
5533
|
+
* 'rgba(255, 152, 0, 1)',
|
|
5534
|
+
* 4,
|
|
5535
|
+
* 'rgba(255, 0, 0, 0.8)',
|
|
5536
|
+
* undefined,
|
|
5537
|
+
* undefined,
|
|
5538
|
+
* 'rgba(100, 150, 255, 0.8)'
|
|
5539
|
+
* );
|
|
5540
|
+
*/
|
|
5541
|
+
|
|
5542
|
+
var renderPolygonEvent = function (selectedFillColor, selectedStrokeColor, selectedLineWidth, activeFillColor, activeStrokeColor, activeLineWidth, hoveredFillColor, hoveredStrokeColor, hoveredLineWidth) {
|
|
5543
|
+
// 기본값 설정 (selected 기준)
|
|
5544
|
+
var _activeFillColor = activeFillColor || selectedFillColor;
|
|
5545
|
+
|
|
5546
|
+
var _activeStrokeColor = activeStrokeColor || selectedStrokeColor;
|
|
5547
|
+
|
|
5548
|
+
var _activeLineWidth = activeLineWidth || selectedLineWidth;
|
|
5549
|
+
|
|
5550
|
+
var _hoveredFillColor = hoveredFillColor || selectedFillColor;
|
|
5551
|
+
|
|
5552
|
+
var _hoveredStrokeColor = hoveredStrokeColor || selectedStrokeColor;
|
|
5553
|
+
|
|
5554
|
+
var _hoveredLineWidth = hoveredLineWidth || selectedLineWidth;
|
|
5555
|
+
|
|
5556
|
+
return function (_a) {
|
|
5557
|
+
var ctx = _a.ctx,
|
|
5558
|
+
hoveredItem = _a.hoveredItem,
|
|
5559
|
+
utils = _a.utils,
|
|
5560
|
+
selectedItems = _a.selectedItems,
|
|
5561
|
+
selectedItem = _a.selectedItem; // 1. 선택된 항목들 그리기 (마지막 선택 항목과 호버된 항목 제외)
|
|
5562
|
+
|
|
5563
|
+
if (selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.length) {
|
|
5564
|
+
for (var _i = 0, selectedItems_1 = selectedItems; _i < selectedItems_1.length; _i++) {
|
|
5565
|
+
var item = selectedItems_1[_i]; // 마지막 선택 항목과 호버된 항목은 나중에 따로 그림
|
|
5566
|
+
|
|
5567
|
+
if (item.id === (selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.id) || (hoveredItem === null || hoveredItem === void 0 ? void 0 : hoveredItem.id) === item.id) continue;
|
|
5568
|
+
if (!item.paths) continue;
|
|
5569
|
+
var polygonOffsets = utils.getOrComputePolygonOffsets(item);
|
|
5570
|
+
if (!polygonOffsets) continue;
|
|
5571
|
+
drawPolygon({
|
|
5572
|
+
ctx: ctx,
|
|
5573
|
+
polygonOffsets: polygonOffsets,
|
|
5574
|
+
isDonutPolygon: item.isDonutPolygon || false,
|
|
5575
|
+
fillColor: selectedFillColor,
|
|
5576
|
+
strokeColor: selectedStrokeColor,
|
|
5577
|
+
lineWidth: selectedLineWidth
|
|
5578
|
+
});
|
|
5579
|
+
}
|
|
5580
|
+
} // 2. 마지막 선택된 항목 그리기 (호버되지 않은 경우)
|
|
5581
|
+
|
|
5582
|
+
|
|
5583
|
+
if ((selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.paths) && (hoveredItem === null || hoveredItem === void 0 ? void 0 : hoveredItem.id) !== selectedItem.id) {
|
|
5584
|
+
var polygonOffsets = utils.getOrComputePolygonOffsets(selectedItem);
|
|
5585
|
+
|
|
5586
|
+
if (polygonOffsets) {
|
|
5587
|
+
drawPolygon({
|
|
5588
|
+
ctx: ctx,
|
|
5589
|
+
polygonOffsets: polygonOffsets,
|
|
5590
|
+
isDonutPolygon: selectedItem.isDonutPolygon || false,
|
|
5591
|
+
fillColor: _activeFillColor,
|
|
5592
|
+
strokeColor: _activeStrokeColor,
|
|
5593
|
+
lineWidth: _activeLineWidth
|
|
5594
|
+
});
|
|
5595
|
+
}
|
|
5596
|
+
} // 3. 호버된 항목 그리기 (가장 위에 표시)
|
|
5597
|
+
|
|
5598
|
+
|
|
5599
|
+
if (hoveredItem === null || hoveredItem === void 0 ? void 0 : hoveredItem.paths) {
|
|
5600
|
+
var polygonOffsets = utils.getOrComputePolygonOffsets(hoveredItem);
|
|
5601
|
+
if (!polygonOffsets) return;
|
|
5602
|
+
var isSelected = selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.some(function (item) {
|
|
5603
|
+
return item.id === hoveredItem.id;
|
|
5604
|
+
});
|
|
5605
|
+
drawPolygon({
|
|
5606
|
+
ctx: ctx,
|
|
5607
|
+
polygonOffsets: polygonOffsets,
|
|
5608
|
+
isDonutPolygon: hoveredItem.isDonutPolygon || false,
|
|
5609
|
+
fillColor: isSelected ? _activeFillColor : _hoveredFillColor,
|
|
5610
|
+
strokeColor: isSelected ? _activeStrokeColor : _hoveredStrokeColor,
|
|
5611
|
+
lineWidth: isSelected ? _activeLineWidth : _hoveredLineWidth
|
|
5612
|
+
});
|
|
5613
|
+
}
|
|
5614
|
+
};
|
|
5615
|
+
};
|
|
5616
|
+
|
|
5360
5617
|
// 메인 컴포넌트
|
|
5361
5618
|
// ============================================================================
|
|
5362
5619
|
|
|
@@ -5372,30 +5629,27 @@
|
|
|
5372
5629
|
* @template T 마커 데이터의 추가 속성 타입
|
|
5373
5630
|
*/
|
|
5374
5631
|
|
|
5375
|
-
var
|
|
5376
|
-
var markers =
|
|
5377
|
-
dataType =
|
|
5378
|
-
onClick =
|
|
5379
|
-
onMouseOver =
|
|
5380
|
-
onMouseOut =
|
|
5381
|
-
|
|
5382
|
-
|
|
5383
|
-
|
|
5384
|
-
|
|
5385
|
-
|
|
5386
|
-
|
|
5387
|
-
|
|
5388
|
-
|
|
5389
|
-
|
|
5390
|
-
|
|
5391
|
-
|
|
5392
|
-
|
|
5393
|
-
|
|
5394
|
-
|
|
5395
|
-
|
|
5396
|
-
_g = _a.disableInteraction,
|
|
5397
|
-
disableInteraction = _g === void 0 ? false : _g,
|
|
5398
|
-
options = tslib.__rest(_a, ["markers", "dataType", "onClick", "onMouseOver", "onMouseOut", "renderBase", "renderAnimation", "renderEvent", "enableMultiSelect", "topOnHover", "enableViewportCulling", "cullingMargin", "maxCacheSize", "selectedItems", "selectedItem", "disableInteraction"]); // --------------------------------------------------------------------------
|
|
5632
|
+
var WoongCanvasLayerComponent = function (props) {
|
|
5633
|
+
var markers = props.markers,
|
|
5634
|
+
dataType = props.dataType,
|
|
5635
|
+
onClick = props.onClick,
|
|
5636
|
+
onMouseOver = props.onMouseOver,
|
|
5637
|
+
onMouseOut = props.onMouseOut,
|
|
5638
|
+
_a = props.enableMultiSelect,
|
|
5639
|
+
enableMultiSelect = _a === void 0 ? false : _a,
|
|
5640
|
+
_b = props.topOnHover,
|
|
5641
|
+
topOnHover = _b === void 0 ? false : _b,
|
|
5642
|
+
_c = props.enableViewportCulling,
|
|
5643
|
+
enableViewportCulling = _c === void 0 ? true : _c,
|
|
5644
|
+
_d = props.cullingMargin,
|
|
5645
|
+
cullingMargin = _d === void 0 ? DEFAULT_CULLING_MARGIN : _d,
|
|
5646
|
+
_e = props.maxCacheSize,
|
|
5647
|
+
maxCacheSize = _e === void 0 ? DEFAULT_MAX_CACHE_SIZE : _e,
|
|
5648
|
+
externalSelectedItems = props.selectedItems,
|
|
5649
|
+
externalSelectedItem = props.selectedItem,
|
|
5650
|
+
_f = props.disableInteraction,
|
|
5651
|
+
disableInteraction = _f === void 0 ? false : _f,
|
|
5652
|
+
options = tslib.__rest(props, ["markers", "dataType", "onClick", "onMouseOver", "onMouseOut", "enableMultiSelect", "topOnHover", "enableViewportCulling", "cullingMargin", "maxCacheSize", "selectedItems", "selectedItem", "disableInteraction"]); // --------------------------------------------------------------------------
|
|
5399
5653
|
// Hooks & Context
|
|
5400
5654
|
// --------------------------------------------------------------------------
|
|
5401
5655
|
|
|
@@ -5673,7 +5927,7 @@
|
|
|
5673
5927
|
}
|
|
5674
5928
|
}
|
|
5675
5929
|
}; // --------------------------------------------------------------------------
|
|
5676
|
-
// 렌더링 함수
|
|
5930
|
+
// 렌더링 함수 결정 (dataType에 따라)
|
|
5677
5931
|
// --------------------------------------------------------------------------
|
|
5678
5932
|
|
|
5679
5933
|
/**
|
|
@@ -5688,6 +5942,18 @@
|
|
|
5688
5942
|
/** Base Layer에서 사용할 빈 Set (재사용) */
|
|
5689
5943
|
|
|
5690
5944
|
React.useRef(new Set());
|
|
5945
|
+
/**
|
|
5946
|
+
* 실제 사용할 렌더링 함수 결정
|
|
5947
|
+
* - MARKER: 외부에서 전달받은 renderBase 사용 (필수)
|
|
5948
|
+
* - POLYGON: renderer.ts의 팩토리 함수로 생성 (props 기반)
|
|
5949
|
+
*/
|
|
5950
|
+
|
|
5951
|
+
var renderBase = dataType === exports.CanvasDataType.MARKER ? props.renderBase : renderPolygonBase(props.baseFillColor, props.baseStrokeColor, props.baseLineWidth);
|
|
5952
|
+
var renderAnimation = dataType === exports.CanvasDataType.MARKER ? props.renderAnimation : undefined;
|
|
5953
|
+
var renderEvent = dataType === exports.CanvasDataType.MARKER ? props.renderEvent : function () {
|
|
5954
|
+
var polygonProps = props;
|
|
5955
|
+
return renderPolygonEvent(polygonProps.selectedFillColor, polygonProps.selectedStrokeColor, polygonProps.selectedLineWidth, polygonProps.activeFillColor, polygonProps.activeStrokeColor, polygonProps.activeLineWidth, polygonProps.hoveredFillColor, polygonProps.hoveredStrokeColor, polygonProps.hoveredLineWidth);
|
|
5956
|
+
}();
|
|
5691
5957
|
/**
|
|
5692
5958
|
* Base 레이어 렌더링 (뷰포트 컬링 적용, 선택된 마커 제외)
|
|
5693
5959
|
*
|
|
@@ -6393,13 +6659,11 @@
|
|
|
6393
6659
|
}, [markers]);
|
|
6394
6660
|
return reactDom.createPortal(React__default["default"].createElement("div", {
|
|
6395
6661
|
ref: containerRef,
|
|
6396
|
-
style:
|
|
6662
|
+
style: {
|
|
6397
6663
|
position: 'absolute',
|
|
6398
6664
|
width: '100%',
|
|
6399
6665
|
height: '100%'
|
|
6400
|
-
}
|
|
6401
|
-
pointerEvents: 'none'
|
|
6402
|
-
})
|
|
6666
|
+
}
|
|
6403
6667
|
}), divElement);
|
|
6404
6668
|
};
|
|
6405
6669
|
/**
|
|
@@ -6413,7 +6677,7 @@
|
|
|
6413
6677
|
*/
|
|
6414
6678
|
|
|
6415
6679
|
|
|
6416
|
-
var
|
|
6680
|
+
var WoongCanvasLayer = React__default["default"].memo(WoongCanvasLayerComponent, function (prevProps, nextProps) {
|
|
6417
6681
|
// 1. markers 비교
|
|
6418
6682
|
var prevMarkers = prevProps.markers;
|
|
6419
6683
|
var nextMarkers = nextProps.markers; // 참조가 같으면 스킵
|
|
@@ -7197,20 +7461,54 @@
|
|
|
7197
7461
|
}
|
|
7198
7462
|
};
|
|
7199
7463
|
|
|
7200
|
-
NaverMintMapController.prototype.
|
|
7464
|
+
NaverMintMapController.prototype.getCurrentZIndex = function (marker) {
|
|
7201
7465
|
if (this.map && marker.element && marker.element instanceof HTMLElement) {
|
|
7202
7466
|
var parent_1 = marker.element.parentElement;
|
|
7203
7467
|
|
|
7204
|
-
if (parent_1) {
|
|
7205
|
-
|
|
7468
|
+
if (parent_1 && parent_1.style.zIndex) {
|
|
7469
|
+
var zIndex = Number(parent_1.style.zIndex);
|
|
7470
|
+
return isNaN(zIndex) ? undefined : zIndex;
|
|
7471
|
+
}
|
|
7472
|
+
}
|
|
7473
|
+
|
|
7474
|
+
return undefined;
|
|
7475
|
+
};
|
|
7476
|
+
|
|
7477
|
+
NaverMintMapController.prototype.setMarkerZIndex = function (marker, zIndex) {
|
|
7478
|
+
if (this.map && marker.element && marker.element instanceof HTMLElement) {
|
|
7479
|
+
var parent_2 = marker.element.parentElement;
|
|
7480
|
+
|
|
7481
|
+
if (parent_2) {
|
|
7482
|
+
parent_2.style.zIndex = String(zIndex);
|
|
7206
7483
|
}
|
|
7207
7484
|
}
|
|
7208
7485
|
};
|
|
7209
7486
|
|
|
7210
7487
|
NaverMintMapController.prototype.markerToTheTop = function (marker) {
|
|
7488
|
+
// 이미 최상위로 올라간 상태면 (원래 zIndex가 이미 저장됨) 중복 실행 방지
|
|
7489
|
+
if (this.markerOriginalZIndex !== undefined) {
|
|
7490
|
+
return;
|
|
7491
|
+
}
|
|
7492
|
+
|
|
7493
|
+
var currentZIndex = this.getCurrentZIndex(marker); // undefined면 null로 저장 (원래 zIndex가 없었음을 표시)
|
|
7494
|
+
|
|
7495
|
+
this.markerOriginalZIndex = currentZIndex !== undefined ? currentZIndex : null;
|
|
7211
7496
|
this.setMarkerZIndex(marker, this.getMaxZIndex(1));
|
|
7212
7497
|
};
|
|
7213
7498
|
|
|
7499
|
+
NaverMintMapController.prototype.restoreMarkerZIndex = function (marker) {
|
|
7500
|
+
if (this.markerOriginalZIndex !== undefined) {
|
|
7501
|
+
if (this.markerOriginalZIndex === null) {
|
|
7502
|
+
// 원래 zIndex가 없었으면 제거 (또는 초기값 0으로)
|
|
7503
|
+
this.setMarkerZIndex(marker, 0);
|
|
7504
|
+
} else {
|
|
7505
|
+
this.setMarkerZIndex(marker, this.markerOriginalZIndex);
|
|
7506
|
+
}
|
|
7507
|
+
|
|
7508
|
+
this.markerOriginalZIndex = undefined;
|
|
7509
|
+
}
|
|
7510
|
+
};
|
|
7511
|
+
|
|
7214
7512
|
NaverMintMapController.prototype.clearDrawable = function (drawable) {
|
|
7215
7513
|
var _a;
|
|
7216
7514
|
|
|
@@ -7965,6 +8263,10 @@
|
|
|
7965
8263
|
}
|
|
7966
8264
|
};
|
|
7967
8265
|
|
|
8266
|
+
GoogleMintMapController.prototype.restoreMarkerZIndex = function (marker) {// Google Maps에서는 restoreMarkerZIndex 기능을 지원하지 않습니다.
|
|
8267
|
+
// 이 기능은 Naver Maps에서만 사용 가능합니다.
|
|
8268
|
+
};
|
|
8269
|
+
|
|
7968
8270
|
GoogleMintMapController.prototype.clearDrawable = function (drawable) {
|
|
7969
8271
|
if (drawable && drawable.native) {
|
|
7970
8272
|
if (drawable.native instanceof google.maps.Marker || drawable.native instanceof google.maps.Polygon || drawable.native instanceof google.maps.Polyline) {
|
|
@@ -8687,6 +8989,10 @@
|
|
|
8687
8989
|
}
|
|
8688
8990
|
};
|
|
8689
8991
|
|
|
8992
|
+
KakaoMintMapController.prototype.restoreMarkerZIndex = function (marker) {// Kakao Maps에서는 restoreMarkerZIndex 기능을 지원하지 않습니다.
|
|
8993
|
+
// 이 기능은 Naver Maps에서만 사용 가능합니다.
|
|
8994
|
+
};
|
|
8995
|
+
|
|
8690
8996
|
KakaoMintMapController.prototype.clearDrawable = function (drawable) {
|
|
8691
8997
|
var _this = this;
|
|
8692
8998
|
|
|
@@ -9290,11 +9596,12 @@
|
|
|
9290
9596
|
exports.Spacing = Spacing;
|
|
9291
9597
|
exports.SpatialHashGrid = SpatialHashGrid;
|
|
9292
9598
|
exports.Status = Status;
|
|
9293
|
-
exports.
|
|
9599
|
+
exports.WoongCanvasLayer = WoongCanvasLayer;
|
|
9294
9600
|
exports.computeMarkerOffset = computeMarkerOffset;
|
|
9295
9601
|
exports.computePolygonOffsets = computePolygonOffsets;
|
|
9296
9602
|
exports.getClusterInfo = getClusterInfo;
|
|
9297
9603
|
exports.getMapOfType = getMapOfType;
|
|
9604
|
+
exports.hexToRgba = hexToRgba;
|
|
9298
9605
|
exports.isPointInMarkerData = isPointInMarkerData;
|
|
9299
9606
|
exports.isPointInPolygon = isPointInPolygon;
|
|
9300
9607
|
exports.isPointInPolygonData = isPointInPolygonData;
|