{/* 中心点计算 */} {/* 选择方式切换 */} setMapPickMode(mapPickMode === 'polygon' ? null : 'polygon')} className="flex-1" > {mapPickMode === 'polygon' ? '正在使用地图选点' : '地图选点'} setMapPickMode(null)} className="flex-1" > 手动输入坐标 {mapPickMode === 'polygon' ? ( ) : ( 多边形坐标点 {geomPoints.map((point, index) => ( 点 {index + 1} handleUpdateGeomPoint(index, 'lat', e.target.value)} placeholder="纬度" className="flex-1" /> handleUpdateGeomPoint(index, 'lng', e.target.value)} placeholder="经度" className="flex-1" /> ))} )} 计算中心点 (ST_Centroid) {geomResult && geomResult.type === 'centroid' && ( 几何中心坐标 纬度 {geomResult.centroid.lat.toFixed(6)} 经度 {geomResult.centroid.lng.toFixed(6)} )} {/* 距离计算 */} {/* 选择方式切换 */} { if (mapPickMode === 'distance-p1' || mapPickMode === 'distance-p2') { setMapPickMode(null); } else { setMapPickMode('distance-p1'); } }} className="flex-1" > {(mapPickMode === 'distance-p1' || mapPickMode === 'distance-p2') ? '正在使用地图选点' : '地图选点'} setMapPickMode(null)} className="flex-1" > 手动输入坐标 {(mapPickMode === 'distance-p1' || mapPickMode === 'distance-p2') ? ( 💡 当前模式:选择{mapPickMode === 'distance-p1' ? '点1' : '点2'}坐标 { if (points.length > 0) { if (mapPickMode === 'distance-p1') { setDistPoint1(points[0]); } else { setDistPoint2(points[0]); } } }} height="400px" title={`在地图上选择${mapPickMode === 'distance-p1' ? '点1' : '点2'}位置`} /> setMapPickMode('distance-p1')} disabled={mapPickMode === 'distance-p1'} > 选择点1 setMapPickMode('distance-p2')} disabled={mapPickMode === 'distance-p2'} > 选择点2 ) : ( 两点坐标 点1坐标 纬度 setDistPoint1({ ...distPoint1, lat: parseFloat(e.target.value) || 0 })} /> 经度 setDistPoint1({ ...distPoint1, lng: parseFloat(e.target.value) || 0 })} /> 点2坐标 纬度 setDistPoint2({ ...distPoint2, lat: parseFloat(e.target.value) || 0 })} /> 经度 setDistPoint2({ ...distPoint2, lng: parseFloat(e.target.value) || 0 })} /> )} 计算距离 (ST_Distance) {geomResult && geomResult.type === 'distance' && ( 两点间距离 米 {geomResult.distance} m 千米 {geomResult.distanceKm} km )} {/* 包围盒计算 */} {/* 选择方式切换 */} setMapPickMode(mapPickMode === 'polygon' ? null : 'polygon')} className="flex-1" > {mapPickMode === 'polygon' ? '正在使用地图选点' : '地图选点'} setMapPickMode(null)} className="flex-1" > 手动输入坐标 {mapPickMode === 'polygon' ? ( ) : ( 多边形坐标点 {geomPoints.map((point, index) => ( 点 {index + 1} handleUpdateGeomPoint(index, 'lat', e.target.value)} placeholder="纬度" className="flex-1" /> handleUpdateGeomPoint(index, 'lng', e.target.value)} placeholder="经度" className="flex-1" /> ))} )} 计算包围盒 (ST_Envelope) {geomResult && geomResult.type === 'bbox' && ( 包围盒坐标 最小纬度 {geomResult.bbox.minLat.toFixed(6)} 最大纬度 {geomResult.bbox.maxLat.toFixed(6)} 最小经度 {geomResult.bbox.minLng.toFixed(6)} 最大经度 {geomResult.bbox.maxLng.toFixed(6)} )}
💡 当前模式:选择{mapPickMode === 'distance-p1' ? '点1' : '点2'}坐标