| | |
| | | }); |
| | | }; |
| | | // 编辑围栏区域 |
| | | // const handleEdit = val => { |
| | | // console.log('编辑数据',val.geo_data); |
| | | |
| | | // viewer.entities.removeAll(); |
| | | // layerParams.value.editDetailData = val; |
| | | // drawPolygonExample.editThePatch(true); |
| | | // drawPolygonExample.drawTheArea(true); |
| | | // const positions = parseGeoDataToPositions(val.geo_data, val.altitude); |
| | | // if (positions.length < 3) return; // 少于3个点无法构成多边形 |
| | | // drawPolygonExample.initPolygon(viewer, positions, true); |
| | | // }; |
| | | // 编辑围栏区域 |
| | | const handleEdit = val => { |
| | | viewer.entities.removeAll(); |
| | | layerParams.value.editDetailData = val; |
| | | drawPolygonExample.editThePatch(true); |
| | | drawPolygonExample.drawTheArea(true); |
| | | const positions = parseGeoDataToPositions(val.geo_data, val.altitude); |
| | | drawPolygonExample.drawTheArea(true); |
| | | // 移除最后一个点 |
| | | let geoDataArr = JSON.parse(val.geo_data); |
| | | if (geoDataArr.length > 0) { |
| | | geoDataArr.pop(); |
| | | } |
| | | const processedGeoData = JSON.stringify(geoDataArr); |
| | | // 使用处理后的 geo_data 解析坐标 |
| | | const positions = parseGeoDataToPositions(processedGeoData, val.altitude); |
| | | if (positions.length < 3) return; // 少于3个点无法构成多边形 |
| | | drawPolygonExample.initPolygon(viewer, positions, true); |
| | | }; |
| | |
| | | tbJwdList = []; |
| | | dataList.forEach(item => { |
| | | let positions = parseGeoDataToPositions(item.geo_data, item.altitude); |
| | | positions.push(positions[0]); |
| | | // positions.push(positions[0]); |
| | | if (positions.length < 3) { |
| | | console.warn(`数据 ${item.name} 坐标点不足,无法绘制`); |
| | | return; |
| | |
| | | }, |
| | | }); |
| | | }; |
| | | |
| | | // 编辑/绘制 |
| | | const loadPlanarRoute = async (positions = null, save = false) => { |
| | | isShowWaringTip.value = false; |
| | |
| | | }; |
| | | }); |
| | | } |
| | | |
| | | let polygon = curPolygonPosition.map(item => [item?.lng, item?.lat]); |
| | | if(polygon.length > 0){ |
| | | polygon.push([curPolygonPosition[0]?.lng, curPolygonPosition[0]?.lat]) |
| | | } |
| | | let polygonString = JSON.stringify(polygon); |
| | | layerParams.value.polygonPosition = polygon.length > 0 ? polygonString : null; |
| | | if (polygon.length >= 3) { |
| | |
| | | } |
| | | }; |
| | | provide('layerParams', layerParams); |
| | | |
| | | onMounted(() => { |
| | | initMap(); |
| | | cesiumContextMenu(); |
| | | getdataFolderApi(); |
| | | |
| | | // 监听单个实体删除事件 |
| | | EventBus.on('deleteMapEntityById', deleteMapEntityById); |
| | | // 监听文件夹下所有实体删除事件 |
| | | EventBus.on('deleteMapEntitiesByFolderId', deleteMapEntitiesByFolderId); |
| | | }); |
| | | |
| | | onBeforeUnmount(() => { |
| | | destroyMap(); |
| | | cesiumContextMenu(false); |
| | | |
| | | // 移除事件监听 |
| | | EventBus.off('deleteMapEntityById', deleteMapEntityById); |
| | | EventBus.off('deleteMapEntitiesByFolderId', deleteMapEntitiesByFolderId); |
| | | }); |
| | | |
| | | // 删除单个地图实体 |
| | | const deleteMapEntityById = entityId => { |
| | | if (!viewer) return; |
| | |
| | | // 更新选中数据列表 |
| | | selectDataList.value = selectDataList.value.filter(item => item.id !== entityId); |
| | | }; |
| | | |
| | | // 删除文件夹下所有地图实体 |
| | | const deleteMapEntitiesByFolderId = folderId => { |
| | | if (!viewer) return; |