@wenle_2523097/agri-map 2.0.1 → 2.0.2
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/ColorSwatch/__tests__/index.test.d.ts +5 -0
- package/dist/components/FullscreenControl/__tests__/index.test.d.ts +5 -0
- package/dist/components/Marker/useEditHandlers.d.ts +2 -2
- package/dist/components/Measurement/__tests__/toolbar.test.d.ts +2 -2
- package/dist/components/Notification/__tests__/index.test.d.ts +1 -1
- package/dist/components/PerformanceDashboard/__tests__/index.test.d.ts +1 -1
- package/dist/components/PlotLayer/__tests__/index.test.d.ts +2 -3
- package/dist/components/Popup/__tests__/index.test.d.ts +5 -0
- package/dist/components/Road/hooks/useRoadEvents.d.ts +4 -0
- package/dist/components/SelectIcon/__tests__/index.test.d.ts +4 -0
- package/dist/components/StyleSelector/__tests__/index.test.d.ts +5 -0
- package/dist/components/TrackPlayer/__tests__/index.test.d.ts +5 -0
- package/dist/components/irrigation.esm.js +12 -2
- package/dist/components/irrigation.esm.js.map +1 -1
- package/dist/components/marker.esm.js.map +1 -1
- package/dist/components/plotgrouplayer.esm.js +3 -1
- package/dist/components/plotgrouplayer.esm.js.map +1 -1
- package/dist/components/road.esm.js +41 -13
- package/dist/components/road.esm.js.map +1 -1
- package/dist/hooks/__tests__/useRenderOptimization.test.d.ts +0 -1
- package/dist/hooks/index.esm.js +3 -2
- package/dist/hooks/index.esm.js.map +1 -1
- package/dist/hooks/usePolylineDraw.d.ts +75 -0
- package/dist/hooks/usePolylineEdit.d.ts +70 -0
- package/dist/hooks/usePolylineRenderer.d.ts +1 -1
- package/dist/hooks/useSnapManager.d.ts +50 -0
- package/dist/hooks/useVertexMarkers.d.ts +51 -0
- package/dist/index.esm.js +53 -14
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +53 -14
- package/dist/index.js.map +1 -1
- package/dist/index.umd.js +53 -14
- package/dist/index.umd.js.map +1 -1
- package/dist/tests/setup/antd-mock.d.ts +34 -0
- package/dist/tests/setup/browser-mock.d.ts +53 -0
- package/dist/tests/setup/index.d.ts +22 -0
- package/dist/tests/setup/leaflet-mock.d.ts +28 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/irrigation.d.ts +4 -123
- package/dist/types/marker.d.ts +12 -113
- package/dist/types/mixins/DataSourceMixin.d.ts +56 -0
- package/dist/types/mixins/EditableMixin.d.ts +124 -0
- package/dist/types/mixins/InteractionMixin.d.ts +43 -0
- package/dist/types/mixins/LifecycleMixin.d.ts +23 -0
- package/dist/types/mixins/LoadingMixin.d.ts +44 -0
- package/dist/types/mixins/SelectableMixin.d.ts +52 -0
- package/dist/types/mixins/StyleMixin.d.ts +49 -0
- package/dist/types/mixins/ViewControlMixin.d.ts +36 -0
- package/dist/types/mixins/index.d.ts +13 -0
- package/dist/types/plot.d.ts +13 -67
- package/dist/types/road.d.ts +11 -157
- package/dist/types/track.d.ts +5 -15
- package/dist/utils/__tests__/RTreeIndex.test.d.ts +0 -1
- package/dist/utils/drawContext.d.ts +65 -0
- package/package.json +1 -1
|
@@ -30,10 +30,10 @@ interface EditHandlersOptions {
|
|
|
30
30
|
* @description 管理编辑模式的状态和事件处理,添加完整的边界检查和错误处理
|
|
31
31
|
*/
|
|
32
32
|
export declare function useEditHandlers({ enabledButtonsRef, value, dataSource, handleSelect, onCreateRef, onEditRef, onMoveRef: _onMoveRef, onDeleteRef, onSaveRef, closeTooltip, }: EditHandlersOptions): {
|
|
33
|
-
currentMode: "move" | "
|
|
33
|
+
currentMode: "move" | "create" | "idle";
|
|
34
34
|
tempMarker: MarkerData | null;
|
|
35
35
|
dragPosition: Coordinate | null;
|
|
36
|
-
setCurrentMode: import("react").Dispatch<import("react").SetStateAction<"move" | "
|
|
36
|
+
setCurrentMode: import("react").Dispatch<import("react").SetStateAction<"move" | "create" | "idle">>;
|
|
37
37
|
setTempMarker: import("react").Dispatch<import("react").SetStateAction<MarkerData | null>>;
|
|
38
38
|
setDragPosition: import("react").Dispatch<import("react").SetStateAction<Coordinate | null>>;
|
|
39
39
|
setDragStartPos: (position: Coordinate) => void;
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview PlotLayer 组件集成测试
|
|
3
|
-
* @description
|
|
3
|
+
* @description 测试组件的真实功能行为
|
|
4
4
|
* @note 此文件包含完整的组件集成测试,但由于 PlotLayer 组件依赖大量 Leaflet API,
|
|
5
5
|
* 在测试环境中需要完整 mock 才能正常运行。
|
|
6
|
-
*
|
|
7
|
-
* @module components/PlotLayer/__tests__/index.test
|
|
6
|
+
* 这些测试在单元测试环境中跳过,建议在 E2E 测试中验证。
|
|
8
7
|
*/
|
|
9
8
|
export {};
|
|
@@ -7,6 +7,10 @@
|
|
|
7
7
|
* - click 模式:点击道路切换 Popup 显示/隐藏(toggle)
|
|
8
8
|
* - hover 模式:鼠标进入道路延迟显示 Popup,离开立即隐藏(带防抖)
|
|
9
9
|
* - 地图点击:点击地图空白区域自动关闭 Popup
|
|
10
|
+
*
|
|
11
|
+
* 【稳定性优化】
|
|
12
|
+
* handleRoadClick 和 handleRoadHover 通过 useRef 保持稳定引用,
|
|
13
|
+
* 避免因内部状态变化导致回调函数引用改变。
|
|
10
14
|
*/
|
|
11
15
|
import type L from 'leaflet';
|
|
12
16
|
import type { RoadData } from '../../../types';
|
|
@@ -6542,7 +6542,7 @@ function useEditMode(editModeProp, defaultButtons) {
|
|
|
6542
6542
|
* 管理线要素图层的创建与清理
|
|
6543
6543
|
*
|
|
6544
6544
|
* 负责:
|
|
6545
|
-
* 1. 编辑模式下过滤数据(create/
|
|
6545
|
+
* 1. 编辑模式下过滤数据(create/redraw 模式不渲染已有要素)
|
|
6546
6546
|
* 2. 创建 LayerGroup 并将数据渲染进去
|
|
6547
6547
|
* 3. 组件卸载时移除 editingLayerRef
|
|
6548
6548
|
*
|
|
@@ -6595,7 +6595,8 @@ function usePolylineRenderer(options) {
|
|
|
6595
6595
|
return renderItem(item, layerGroup, index);
|
|
6596
6596
|
});
|
|
6597
6597
|
// 数据变化时清理编辑图层(新建保存后数据源更新时,移除临时的编辑图层避免重复)
|
|
6598
|
-
|
|
6598
|
+
// 注意:在 redraw 模式下 editingLayerRef 不应被清理(可能在编辑过程中)
|
|
6599
|
+
if (dataChanged && editingLayerRef.current && currentMode !== 'redraw') {
|
|
6599
6600
|
currentMap.removeLayer(editingLayerRef.current);
|
|
6600
6601
|
editingLayerRef.current = null;
|
|
6601
6602
|
}
|
|
@@ -7790,6 +7791,15 @@ var Irrigation = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
|
7790
7791
|
}, animated, detected.type === 'svg' ? detected.config : null, detected.type === 'url' ? detected.src : null, 'irrigation-port-marker');
|
|
7791
7792
|
}, []);
|
|
7792
7793
|
var renderItem = useCallback(function (channel, layerGroup, _index) {
|
|
7794
|
+
// ========== 方案一修复:redraw 模式下跳过正在编辑的渠道 ==========
|
|
7795
|
+
// 修复描述:当进入重绘模式时,被选中的渠道(id === value)不应该被 renderItem 渲染
|
|
7796
|
+
// 原因:被选中的渠道已经通过 editingLayerRef 在地图上以编辑样式渲染
|
|
7797
|
+
// 如果 renderItem 仍然渲染,会导致同一渠道以两种样式同时显示
|
|
7798
|
+
// 撤销方法:删除以下 if 块及其注释即可恢复到修改前的状态
|
|
7799
|
+
// ========== 方案一修复结束 ==========================================
|
|
7800
|
+
if (currentModeRef.current === 'redraw' && channel.id === valueRef.current) {
|
|
7801
|
+
return; // 跳过渲染,由 editingLayerRef 处理该渠道的显示
|
|
7802
|
+
}
|
|
7793
7803
|
var isSelected = channel.id === value;
|
|
7794
7804
|
var style = getChannelStyle(channel, isSelected);
|
|
7795
7805
|
var hitArea = L$1.polyline(channel.points, {
|