|
|
@@ -1,7 +1,7 @@
|
|
|
<template>
|
|
|
<div class="project-layer-wrapper height-100">
|
|
|
<div class="scrollbar">
|
|
|
- <LayersTree :layer-data="mapLayers" class="project-layer-content" @check="checkLayer" @select="selectLayer"
|
|
|
+ <LayersTree :layer-data="mapLayers" class="project-layer-content" @select="selectLayer"
|
|
|
v-model:selectedKeys="selectedKeys" v-model:checkedKeys="checkedKeys" v-model:expandedKeys="expandedKeys" />
|
|
|
</div>
|
|
|
<a-drawer title="地图元素" placement="right" :closable="true" v-model:visible="visible" :mask="true"
|
|
|
@@ -54,6 +54,56 @@
|
|
|
<a-button type="primary" @click="deleteElement">删除</a-button>
|
|
|
</div>
|
|
|
</a-drawer>
|
|
|
+ <!-- <a-drawer title="图片信息" placement="right" :closable="true" v-model:visible="visible" :mask="true"
|
|
|
+ getContainer="#g-container" :wrap-style="{ position: 'absolute' }" wrapClassName="drawer-element-wrapper"
|
|
|
+ @close="closeDrawer" width="300">
|
|
|
+ <div class="drawer-element-content">
|
|
|
+ <div class="name element-item">
|
|
|
+ <span class="mr30">名称:</span>
|
|
|
+ <a-input v-model:value="layerState.layerName" style="width:110px" placeholder="element name"
|
|
|
+ @change="changeLayer" />
|
|
|
+ </div>
|
|
|
+ <div class="longitude element-item" v-if="layerState.currentType === geoType.Point">
|
|
|
+ <span class="mr30">经度:</span>
|
|
|
+ {{ layerState.longitude || '--' }}
|
|
|
+ </div>
|
|
|
+ <div class="latitude element-item" v-if="layerState.currentType === geoType.Point">
|
|
|
+ <span class="mr30">纬度:</span>
|
|
|
+ {{ layerState.latitude || '--' }}
|
|
|
+ </div>
|
|
|
+ <div class="latitude element-item" v-if="layerState.element_from === 2">
|
|
|
+ <span class="mr30">高度:</span>
|
|
|
+ {{ layerState.height || '--' }}
|
|
|
+ </div>
|
|
|
+ <div class="color-content">
|
|
|
+ <span class="mr30">颜色: </span>
|
|
|
+ <div v-for="item in colors" :key="item.id" class="color-item" :style="'background:' + item.color"
|
|
|
+ @click="changeColor(item)">
|
|
|
+ <svg-icon v-if="item.color === layerState.color" :size="18" name="check"></svg-icon>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="element-item">
|
|
|
+ <span class="mr30">用户:</span>
|
|
|
+ {{ layerState.user_name || '--' }}
|
|
|
+ </div>
|
|
|
+ <div class="element-item">
|
|
|
+ <span class="mr30">来源:</span>
|
|
|
+ <Icon v-if="layerState.element_from === 2">
|
|
|
+ <template #component>
|
|
|
+ <svg width="1em" height="1em" fill="currentColor" viewBox="0 0 1024 1024">
|
|
|
+ <path
|
|
|
+ d="M1024 418.21v576H0v-576h1024z m-672 192c-53.02 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96-42.98-96-96-96z m320 0c-53.02 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96-42.98-96-96-96zM236.59 29.79h125.55v320H236.59v-320z m425.28 0h125.55v320H661.87v-320z"
|
|
|
+ p-id="4408" />
|
|
|
+ </svg>
|
|
|
+ </template>
|
|
|
+ </Icon>
|
|
|
+ <DesktopOutlined v-else />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="flex-row flex-justify-around flex-align-center mt20">
|
|
|
+ <a-button type="primary" @click="deleteElement">删除</a-button>
|
|
|
+ </div>
|
|
|
+ </a-drawer> -->
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
@@ -67,12 +117,11 @@ import {
|
|
|
import Icon from '@ant-design/icons-vue';
|
|
|
import { DesktopOutlined } from '@ant-design/icons-vue';
|
|
|
import LayersTree from '/@/components/LayersTree.vue'
|
|
|
-import { MapDoodleColor, MapElementEnum } from '/@/constants/map'
|
|
|
+import { MapElementEnum } from '/@/constants/map'
|
|
|
import { useGMapCover } from '/@/hooks/use-g-map-cover'
|
|
|
import { useMyStore } from '/@/store'
|
|
|
import { GeojsonCoordinate, LayerResource } from '/@/types/map'
|
|
|
import { Color, GeoType } from '/@/types/mapLayer'
|
|
|
-import { generatePoint } from '/@/utils/genjson'
|
|
|
import { gcj02towgs84, wgs84togcj02 } from '/@/vendors/coordtransform'
|
|
|
|
|
|
interface Props {
|
|
|
@@ -85,9 +134,12 @@ const props = withDefaults(defineProps<Props>(), {
|
|
|
|
|
|
watch(() => props.mapClickId, (newValue, oldValue) => {
|
|
|
if (newValue) {
|
|
|
- // 只有一个文件夹,所以取第一个id即可
|
|
|
- const mapLayerList: any = mapLayers.value;
|
|
|
- const pid = mapLayerList[0].id;
|
|
|
+ // 默认文件夹列表
|
|
|
+ const defaultFileList: any = mapLayers.value.filter((item: any) => item.type === 2);
|
|
|
+ if (defaultFileList.length === 0) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ const pid = defaultFileList[0].id;
|
|
|
expandedKeys.value = [pid];
|
|
|
selectedKeys.value = [`resource__${newValue}`];
|
|
|
selectedLayer.value = getCurrentLayer(`resource__${newValue}`)
|
|
|
@@ -184,19 +236,25 @@ function updateMapElement(
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-function checkLayer(keys: string[]) {
|
|
|
-
|
|
|
-}
|
|
|
-
|
|
|
function selectLayer(keys: string[], e) {
|
|
|
- if (e.selected) {
|
|
|
- selectedKey.value = e.node.eventKey
|
|
|
- selectedLayer.value = getCurrentLayer(selectedKey.value)
|
|
|
- setBaseInfo()
|
|
|
- }
|
|
|
- visible.value = e.selected
|
|
|
+ visible.value = false
|
|
|
store.commit('SET_DRAW_VISIBLE_INFO', visible.value)
|
|
|
+ if (!e.selected) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ selectedKey.value = e.node.eventKey
|
|
|
+ selectedLayer.value = getCurrentLayer(selectedKey.value)
|
|
|
+ setBaseInfo()
|
|
|
+ const info = e.selectedNodes[0];
|
|
|
+ const { type } = info.props.parent;
|
|
|
+ if (type === 2) {// 默认文件夹
|
|
|
+ visible.value = e.selected
|
|
|
+ store.commit('SET_DRAW_VISIBLE_INFO', visible.value)
|
|
|
+ } else if (type === 3) {// 图片标注
|
|
|
+ console.log('此处写图片标注弹出层逻辑');
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
function getCurrentLayer(id: string) {
|
|
|
const Layers = store.state.Layers
|
|
|
const key = id.replaceAll('resource__', '')
|