# 几何计算工具 - 地图选点功能集成状态 ## ✅ 已完成 ### 1. 面积计算 Tab - 部分完成 - ✅ 添加了地图/手动切换按钮 - ✅ 添加了地图选点组件 - ✅ 添加了条件渲染开始 - ⚠️ 需要关闭手动输入的Card标签 - ⚠️ 需要将计算按钮移到外面 --- ## 🔧 需要继续完成的修改 ### 修改位置 文件:`/components/field/FieldSpatialQuery.tsx` 对话框位置:约第1436行开始 --- ### 步骤1: 完成面积计算Tab的收尾 **在第1550行附近,找到:** ```tsx {geomResult && geomResult.type === 'area' && ( ``` **将第1550行的 `` 改为:** ```tsx )} {geomResult && geomResult.type === 'area' && ( ``` 这样就完成了面积计算Tab的地图选点功能。 --- ### 步骤2: 修改周长计算Tab(约第1579行) **找到:** ```tsx {/* 周长计算 */}

多边形坐标点

``` **替换为:** ```tsx {/* 周长计算 */} {/* 选择方式切换 */}
{mapPickMode === 'polygon' ? ( ) : (

多边形坐标点

``` **然后找到周长计算的按钮部分(约第1612行):** ```tsx
{geomResult && geomResult.type === 'perimeter' && ( ``` **替换为:** ```tsx
)} {geomResult && geomResult.type === 'perimeter' && ( ``` --- ### 步骤3: 修改中心点计算Tab(约第1639行) 使用与步骤2相同的模式修改中心点计算。 **切换按钮和地图组件相同,计算按钮改为:** ```tsx )} ``` --- ### 步骤4: 修改距离计算Tab(约第1672行) 距离计算需要为两个点分别添加地图选择。 **替换整个距离计算Tab为:** ```tsx {/* 距离计算 */} {/* 点1选择 */}

点1坐标

{mapPickMode === 'distance-p1' ? ( setDistPoint1(points[0] || distPoint1)} height="300px" title="在地图上选择点1位置" /> ) : (
setDistPoint1({ ...distPoint1, lat: parseFloat(e.target.value) || 0 })} />
setDistPoint1({ ...distPoint1, lng: parseFloat(e.target.value) || 0 })} />
)}
{/* 点2选择 */}

点2坐标

{mapPickMode === 'distance-p2' ? ( setDistPoint2(points[0] || distPoint2)} height="300px" title="在地图上选择点2位置" /> ) : (
setDistPoint2({ ...distPoint2, lat: parseFloat(e.target.value) || 0 })} />
setDistPoint2({ ...distPoint2, lng: parseFloat(e.target.value) || 0 })} />
)}
{geomResult && geomResult.type === 'distance' && ( {/* 保留原有的结果显示 */} )}
``` --- ### 步骤5: 修改包围盒计算Tab(约第1758行) 使用与步骤2、3相同的模式修改包围盒计算。 **计算按钮改为:** ```tsx )} ``` --- ## 📝 修改要点总结 ### 对于多边形计算(面积、周长、中心点、包围盒) 1. 在 `` 开头添加切换按钮 2. 添加条件渲染:`{mapPickMode === 'polygon' ? : 手动输入}` 3. 关闭手动输入的 `` 后添加 `)}` 4. 将计算按钮移到条件渲染外面,去掉 `mt-4` 5. 保留结果显示部分不变 ### 对于距离计算 1. 分别为点1和点2创建独立的Card 2. 每个Card内都有切换按钮和条件渲染 3. 使用 `'distance-p1'` 和 `'distance-p2'` 模式 4. 使用 `mode="single"` 的 MapPointPicker 5. 计算按钮和结果显示在最外面 --- ## ✅ 完成后测试 - [ ] 面积计算 - 地图选点 ✓ - [ ] 面积计算 - 手动输入 ✓ - [ ] 周长计算 - 地图选点 - [ ] 中心点计算 - 地图选点 - [ ] 距离计算 - 点1地图选择 - [ ] 距离计算 - 点2地图选择 - [ ] 包围盒计算 - 地图选点 - [ ] 模式切换 - 坐标保留 - [ ] 计算功能 - 正常工作 --- **状态:** 面积计算已完成60%,需要手动完成剩余40% **预计时间:** 10-15分钟 **难度:** 简单,重复性操作