2024-05-27 08:25:43 +08:00
|
|
|
|
<template>
|
2024-06-13 18:04:53 +08:00
|
|
|
|
<<<<<<< HEAD
|
2024-05-27 08:25:43 +08:00
|
|
|
|
<div class="map-container">
|
|
|
|
|
|
<div id="mapContainer" class="map-box"></div>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 图层控制 -->
|
2024-06-13 18:02:33 +08:00
|
|
|
|
<div class="layer-control-center" v-if="false">
|
2024-06-12 17:28:10 +08:00
|
|
|
|
<a-collapse v-model:activeKey="activeKey" accordion expandIconPosition="end" expandIcon="">
|
|
|
|
|
|
<a-collapse-panel key="1" header="图层">
|
2024-06-13 18:02:33 +08:00
|
|
|
|
<p v-for="(item, index) in props.mapConfig.layers" class="layer-item">
|
2024-06-12 17:28:10 +08:00
|
|
|
|
<a-checkbox v-model:checked="item.checked" @change="handlerCheckboxChange(item)">{{
|
|
|
|
|
|
item.name
|
|
|
|
|
|
}}</a-checkbox>
|
|
|
|
|
|
</p>
|
2024-06-13 18:02:33 +08:00
|
|
|
|
<p v-for="(item, index) in props.mapConfig.baseLayers" class="layer-item">
|
2024-06-12 17:28:10 +08:00
|
|
|
|
<a-checkbox v-model:checked="item.checked" @change="handlerCheckboxChange(item)">{{
|
|
|
|
|
|
item.name
|
|
|
|
|
|
}}</a-checkbox>
|
|
|
|
|
|
</p>
|
|
|
|
|
|
</a-collapse-panel>
|
|
|
|
|
|
</a-collapse>
|
2024-05-27 08:25:43 +08:00
|
|
|
|
</div>
|
2024-06-13 18:04:53 +08:00
|
|
|
|
=======
|
2024-06-13 09:02:01 +08:00
|
|
|
|
<div class="map-container">
|
|
|
|
|
|
<div id="mapContainer" class="map-box"></div>
|
2024-06-13 18:04:53 +08:00
|
|
|
|
>>>>>>> 666e8282d20e63d6618652a83ba0b8f126f74646
|
2024-06-13 09:02:01 +08:00
|
|
|
|
|
|
|
|
|
|
<!-- 图层控制 -->
|
|
|
|
|
|
<div class="layer-control-center">
|
|
|
|
|
|
<a-collapse v-model:activeKey="activeKey" accordion expandIconPosition="end" expandIcon="">
|
|
|
|
|
|
<a-collapse-panel key="1" header="图层">
|
|
|
|
|
|
<p v-for="(item, index) in props.mapConfig.layers" :key="index">
|
|
|
|
|
|
<a-checkbox v-model:checked="item.checked" @change="handlerCheckboxChange(item)">{{
|
|
|
|
|
|
item.name
|
|
|
|
|
|
}}</a-checkbox>
|
|
|
|
|
|
</p>
|
|
|
|
|
|
<p v-for="(item, index) in props.mapConfig.baseLayers" :key="index">
|
|
|
|
|
|
<a-checkbox v-model:checked="item.checked" @change="handlerCheckboxChange(item)">{{
|
|
|
|
|
|
item.name
|
|
|
|
|
|
}}</a-checkbox>
|
|
|
|
|
|
</p>
|
|
|
|
|
|
</a-collapse-panel>
|
|
|
|
|
|
</a-collapse>
|
2024-05-27 08:25:43 +08:00
|
|
|
|
</div>
|
2024-05-30 10:13:56 +08:00
|
|
|
|
|
2024-06-13 09:02:01 +08:00
|
|
|
|
<!-- 绘图控制 -->
|
|
|
|
|
|
<div class="draw-control-center" v-show="drawing">
|
|
|
|
|
|
<div class="draw-btn" @click="handlerCancleDraw"> 取消 </div>
|
|
|
|
|
|
<div class="draw-btn" @click="handlerDrawComplete"> 保存 </div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
|
|
<script lang="ts" setup>
|
|
|
|
|
|
import {
|
|
|
|
|
|
onMounted,
|
|
|
|
|
|
onUnmounted,
|
|
|
|
|
|
defineProps,
|
|
|
|
|
|
defineEmits,
|
|
|
|
|
|
reactive,
|
|
|
|
|
|
ref,
|
|
|
|
|
|
defineExpose,
|
|
|
|
|
|
} from 'vue';
|
|
|
|
|
|
|
2024-06-13 18:04:53 +08:00
|
|
|
|
<<<<<<< HEAD
|
2024-05-30 10:13:56 +08:00
|
|
|
|
// 测量工具
|
2024-06-13 18:02:33 +08:00
|
|
|
|
import { SwitchLayerControl,MeasureControl,SwitchMapControl } from 'mapbox-extensions'
|
2024-05-30 10:13:56 +08:00
|
|
|
|
import 'mapbox-extensions/dist/index.css'
|
2024-06-13 18:04:53 +08:00
|
|
|
|
=======
|
2024-06-13 09:02:01 +08:00
|
|
|
|
import { useMessage } from '@/hooks/web/useMessage';
|
2024-06-13 18:04:53 +08:00
|
|
|
|
>>>>>>> 666e8282d20e63d6618652a83ba0b8f126f74646
|
2024-05-30 10:13:56 +08:00
|
|
|
|
|
2024-06-13 09:02:01 +08:00
|
|
|
|
import mapboxgl, { Map, Popup } from 'mapbox-gl';
|
2024-06-06 16:47:16 +08:00
|
|
|
|
|
2024-06-13 09:02:01 +08:00
|
|
|
|
// 图形绘制工具类
|
|
|
|
|
|
import MapboxDraw from '@mapbox/mapbox-gl-draw';
|
2024-06-08 08:34:52 +08:00
|
|
|
|
|
2024-06-13 09:02:01 +08:00
|
|
|
|
import { generateUUID, getGeometryCenter } from './src/tool';
|
|
|
|
|
|
|
|
|
|
|
|
// 测量工具
|
|
|
|
|
|
import { SwitchLayerControl, MeasureControl } from 'mapbox-extensions';
|
|
|
|
|
|
import 'mapbox-extensions/dist/index.css';
|
|
|
|
|
|
|
|
|
|
|
|
import U from 'mapbox-gl-utils';
|
|
|
|
|
|
import 'mapbox-gl/dist/mapbox-gl.css';
|
|
|
|
|
|
import './src/index.less';
|
|
|
|
|
|
import { MapboxConfig, MapboxDefaultStyle, MapControlConfig } from './src/config';
|
|
|
|
|
|
import { MP } from './src/MP';
|
|
|
|
|
|
import { DrawingType } from '@/enums/mapEnum';
|
2024-06-11 08:29:53 +08:00
|
|
|
|
|
2024-06-13 18:04:53 +08:00
|
|
|
|
<<<<<<< HEAD
|
2024-05-30 10:13:56 +08:00
|
|
|
|
},
|
|
|
|
|
|
measureLineStringOptions:{
|
|
|
|
|
|
},
|
|
|
|
|
|
measurePolygonOptions:{
|
|
|
|
|
|
}
|
2024-06-12 13:37:35 +08:00
|
|
|
|
}),"top-right")
|
2024-06-13 18:02:33 +08:00
|
|
|
|
|
|
|
|
|
|
let applicationLayers = []
|
|
|
|
|
|
let baseLayers = [];
|
|
|
|
|
|
props.mapConfig.layers?.forEach((item,index)=>{
|
|
|
|
|
|
let style = JSON.parse(item.style)
|
|
|
|
|
|
let layers = {
|
|
|
|
|
|
name:item.name,
|
|
|
|
|
|
layer:style,
|
|
|
|
|
|
fixed:true,
|
|
|
|
|
|
zoom:-100,
|
|
|
|
|
|
easeToOptions:{},
|
|
|
|
|
|
mutex:true,
|
|
|
|
|
|
mutexIdentity:"t1",
|
|
|
|
|
|
active:false,
|
|
|
|
|
|
backgroundImage:"",
|
|
|
|
|
|
backgroundImageActive:"",
|
|
|
|
|
|
|
|
|
|
|
|
onVisibleChange:(visible:boolean)=>{}
|
|
|
|
|
|
}
|
|
|
|
|
|
applicationLayers.push(layers)
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
props.mapConfig.baseLayers?.forEach((item,index)=>{
|
|
|
|
|
|
let layers = {
|
|
|
|
|
|
name:item.name,
|
|
|
|
|
|
layer: item.layer,
|
|
|
|
|
|
fixed:true,
|
|
|
|
|
|
zoom:-100,
|
|
|
|
|
|
easeToOptions:{},
|
|
|
|
|
|
mutex:true,
|
|
|
|
|
|
mutexIdentity:index,
|
|
|
|
|
|
active:false,
|
|
|
|
|
|
backgroundImage:"http://lbs.tianditu.gov.cn/images/cia_c.png",
|
|
|
|
|
|
backgroundImageActive:"",
|
|
|
|
|
|
onVisibleChange:(visible:boolean)=>{}
|
|
|
|
|
|
}
|
|
|
|
|
|
baseLayers.push(layers)
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
map.addControl(new SwitchLayerControl({
|
|
|
|
|
|
name:"图层管理" ,
|
|
|
|
|
|
position:"top-left",
|
|
|
|
|
|
selectAndClearAll:true,
|
|
|
|
|
|
selectAllLabel:"select all",
|
|
|
|
|
|
clearAllLabel:"clear all",
|
|
|
|
|
|
showToTop:true,
|
|
|
|
|
|
topLayerId:"",
|
|
|
|
|
|
layerGroups:{
|
|
|
|
|
|
"应用图层":{
|
|
|
|
|
|
mutex:true,
|
|
|
|
|
|
collapse:true,
|
|
|
|
|
|
uiType:"SwitchBtn",
|
|
|
|
|
|
layers:applicationLayers
|
|
|
|
|
|
},
|
|
|
|
|
|
"地图底图":{
|
|
|
|
|
|
mutex:true,
|
|
|
|
|
|
collapse:true,
|
|
|
|
|
|
uiType:"ImgTxtBtn",
|
|
|
|
|
|
layers:baseLayers
|
|
|
|
|
|
},
|
|
|
|
|
|
}
|
|
|
|
|
|
}),"top-left");
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-05-27 08:25:43 +08:00
|
|
|
|
});
|
|
|
|
|
|
});
|
|
|
|
|
|
// 销毁地图
|
2024-06-13 18:04:53 +08:00
|
|
|
|
=======
|
2024-06-13 09:02:01 +08:00
|
|
|
|
import {
|
|
|
|
|
|
SnapPolygonMode,
|
|
|
|
|
|
SnapPointMode,
|
|
|
|
|
|
SnapLineMode,
|
|
|
|
|
|
SnapModeDrawStyles,
|
|
|
|
|
|
SnapDirectSelect,
|
|
|
|
|
|
} from 'mapbox-gl-draw-snap-mode';
|
2024-06-13 18:04:53 +08:00
|
|
|
|
>>>>>>> 666e8282d20e63d6618652a83ba0b8f126f74646
|
2024-06-13 09:02:01 +08:00
|
|
|
|
|
|
|
|
|
|
import { customDrawStyles } from './Styles/Styles';
|
|
|
|
|
|
import Drawtool from '@/views/datamaintenance/components/drawtool.vue';
|
|
|
|
|
|
import { WktToGeojson, GeojsonToWkt } from './src/WktGeojsonTransform';
|
|
|
|
|
|
import { features } from 'process';
|
|
|
|
|
|
|
|
|
|
|
|
const openModal = ref(false);
|
|
|
|
|
|
const insertShpModal = ref(false);
|
|
|
|
|
|
const changeOpenModal = (value) => {
|
|
|
|
|
|
openModal.value = value;
|
|
|
|
|
|
};
|
|
|
|
|
|
const changeOpenInsertShpModal = (value) => {
|
|
|
|
|
|
insertShpModal.value = value;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// map参数类型
|
|
|
|
|
|
interface MapboxOptionsInterface {
|
|
|
|
|
|
mapOptions: mapboxgl.MapboxOptions;
|
|
|
|
|
|
control: DrawingType[];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const props = defineProps({
|
|
|
|
|
|
mapConfig: {
|
|
|
|
|
|
type: Object,
|
|
|
|
|
|
default: {},
|
|
|
|
|
|
},
|
|
|
|
|
|
layers: {
|
|
|
|
|
|
type: Array,
|
|
|
|
|
|
default: [],
|
|
|
|
|
|
},
|
|
|
|
|
|
location: {
|
|
|
|
|
|
type: Array,
|
|
|
|
|
|
default: [],
|
|
|
|
|
|
},
|
|
|
|
|
|
type: {
|
|
|
|
|
|
type: String,
|
|
|
|
|
|
default: '',
|
|
|
|
|
|
},
|
|
|
|
|
|
feature: {
|
|
|
|
|
|
type: String,
|
|
|
|
|
|
default: '',
|
|
|
|
|
|
},
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
console.log('mapConfig', props.mapConfig);
|
|
|
|
|
|
|
|
|
|
|
|
let nextMapControl: Array<any> = reactive([]);
|
|
|
|
|
|
nextMapControl = props.control
|
|
|
|
|
|
? props.control.map((item) => {
|
|
|
|
|
|
return MapControlConfig[item];
|
|
|
|
|
|
})
|
|
|
|
|
|
: [];
|
|
|
|
|
|
|
|
|
|
|
|
// 定义地图容器
|
|
|
|
|
|
let map: Map;
|
|
|
|
|
|
let drawTool: any;
|
|
|
|
|
|
let popup: Popup;
|
|
|
|
|
|
let clickPoisition: Array<number> = [];
|
|
|
|
|
|
let selectFeature: Object = {};
|
|
|
|
|
|
let mp: any = null;
|
|
|
|
|
|
let geojson = reactive({
|
|
|
|
|
|
geojson: {},
|
|
|
|
|
|
});
|
|
|
|
|
|
let drawing = ref(false);
|
|
|
|
|
|
|
|
|
|
|
|
let drawGeojson = reactive({
|
|
|
|
|
|
geojson: {
|
|
|
|
|
|
type: 'FeatureCollection',
|
|
|
|
|
|
features: [],
|
|
|
|
|
|
},
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
const { createConfirm, createMessage } = useMessage();
|
|
|
|
|
|
|
|
|
|
|
|
// 定义地图回调emit
|
|
|
|
|
|
// 地图加载完成回调
|
|
|
|
|
|
const emit = defineEmits(['mapOnLoad', 'mapDraw', 'handlerDrawComplete']);
|
|
|
|
|
|
|
|
|
|
|
|
onMounted(() => {
|
|
|
|
|
|
mapboxgl.accessToken = MapboxConfig.ACCESS_TOKEN;
|
|
|
|
|
|
map = initMap();
|
|
|
|
|
|
map.on('load', () => {
|
|
|
|
|
|
// 根据地图配置信息加载地形数据
|
|
|
|
|
|
if (props.mapConfig.mode == '3D') {
|
|
|
|
|
|
handlerLoadTerrain();
|
2024-05-27 08:25:43 +08:00
|
|
|
|
}
|
2024-06-08 08:34:52 +08:00
|
|
|
|
|
2024-06-13 09:02:01 +08:00
|
|
|
|
// 初始化绘图空间
|
|
|
|
|
|
// handlerInitDrawTool(null);
|
2024-06-08 08:34:52 +08:00
|
|
|
|
|
2024-06-13 09:02:01 +08:00
|
|
|
|
map.on('click', (e) => {
|
|
|
|
|
|
// handlerPreviewFeatureInfo(e);
|
|
|
|
|
|
clickPoisition = e.lngLat;
|
2024-05-27 08:25:43 +08:00
|
|
|
|
});
|
2024-06-08 08:34:52 +08:00
|
|
|
|
|
2024-06-13 09:02:01 +08:00
|
|
|
|
map.on('draw.selectionchange', (e) => {
|
|
|
|
|
|
// handlerCopyToTargetLayer(e);
|
2024-05-27 08:25:43 +08:00
|
|
|
|
});
|
2024-06-13 09:02:01 +08:00
|
|
|
|
emit('mapOnLoad', map);
|
|
|
|
|
|
|
|
|
|
|
|
// 设置绘图监听事件
|
|
|
|
|
|
map.on('draw.create', function (e) {
|
|
|
|
|
|
drawGeojson.geojson.features = e.features;
|
|
|
|
|
|
handlerDealFeature(e.features[0]);
|
2024-05-27 08:25:43 +08:00
|
|
|
|
});
|
2024-06-13 09:02:01 +08:00
|
|
|
|
|
|
|
|
|
|
map.on('draw.update', function (e) {
|
|
|
|
|
|
drawGeojson.geojson = e.features;
|
|
|
|
|
|
handlerDealFeature(e.features[0]);
|
2024-05-27 08:25:43 +08:00
|
|
|
|
});
|
2024-05-30 10:13:56 +08:00
|
|
|
|
|
2024-06-13 09:02:01 +08:00
|
|
|
|
map.on('draw.delete', function (e) {
|
|
|
|
|
|
handlerDeleteFeature(e.features[0]);
|
|
|
|
|
|
});
|
2024-05-30 10:13:56 +08:00
|
|
|
|
|
2024-06-13 09:02:01 +08:00
|
|
|
|
window.handlerCopyFeature = handlerCopyFeature;
|
|
|
|
|
|
|
|
|
|
|
|
// 测量工具
|
|
|
|
|
|
map.addControl(
|
|
|
|
|
|
new MeasureControl({
|
|
|
|
|
|
horizontal: true, //default false
|
|
|
|
|
|
btnBgColor: '#ffffff', //default '#ffffff'
|
|
|
|
|
|
btnActiveColor: '#ddd', //default '#ddd'
|
|
|
|
|
|
geometryClick: true, //defualt false
|
|
|
|
|
|
enableModes: ['Point', 'LineString', 'Polygon'], //default all
|
|
|
|
|
|
onStart: () => {},
|
|
|
|
|
|
onStop: () => {},
|
|
|
|
|
|
measurePointOptions: {},
|
|
|
|
|
|
measureLineStringOptions: {},
|
|
|
|
|
|
measurePolygonOptions: {},
|
|
|
|
|
|
}),
|
|
|
|
|
|
'top-right',
|
|
|
|
|
|
);
|
|
|
|
|
|
});
|
|
|
|
|
|
});
|
|
|
|
|
|
// 销毁地图
|
|
|
|
|
|
|
|
|
|
|
|
// 加载地形
|
|
|
|
|
|
const handlerLoadTerrain = () => {
|
|
|
|
|
|
map.addSource('mapbox-dem', {
|
|
|
|
|
|
type: 'raster-dem',
|
|
|
|
|
|
url: 'mapbox://mapbox.mapbox-terrain-dem-v1',
|
|
|
|
|
|
tileSize: 512,
|
|
|
|
|
|
maxzoom: 14,
|
|
|
|
|
|
});
|
2024-05-30 10:13:56 +08:00
|
|
|
|
|
2024-06-13 09:02:01 +08:00
|
|
|
|
map.setTerrain({ source: 'mapbox-dem', exaggeration: 1.5 });
|
|
|
|
|
|
};
|
|
|
|
|
|
// 移除地图实例
|
|
|
|
|
|
onUnmounted(() => {
|
|
|
|
|
|
map ? map.remove() : null;
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
// 数据绘制完成判断
|
|
|
|
|
|
const handlerDealFeature = (feature) => {
|
|
|
|
|
|
let existFeature = geojson.geojson.features.find((item, index) => {
|
|
|
|
|
|
return item.id == feature.id;
|
|
|
|
|
|
});
|
2024-05-30 10:13:56 +08:00
|
|
|
|
|
2024-06-13 09:02:01 +08:00
|
|
|
|
if (existFeature) {
|
|
|
|
|
|
// 如果查找到了 则替换数据
|
|
|
|
|
|
for (let i = 0; i < geojson.geojson.features.length; i++) {
|
|
|
|
|
|
if (geojson.geojson.features[i].id == feature.id) {
|
|
|
|
|
|
geojson.geojson.features[i] = feature;
|
2024-05-27 08:25:43 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2024-06-13 09:02:01 +08:00
|
|
|
|
} else {
|
|
|
|
|
|
// 如果没找到数据则添加到数组
|
|
|
|
|
|
geojson.geojson.features.push(feature);
|
|
|
|
|
|
}
|
|
|
|
|
|
// 自动将数据返回给父组件
|
|
|
|
|
|
handlerDrawComplete();
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// 删除数据
|
|
|
|
|
|
const handlerDeleteFeature = (feature) => {
|
|
|
|
|
|
for (let i = 0; i < geojson.geojson.features.length; i++) {
|
|
|
|
|
|
if (geojson.geojson.features[i].id == feature.id) {
|
|
|
|
|
|
geojson.geojson.features.splice(i, 1);
|
2024-05-27 08:25:43 +08:00
|
|
|
|
}
|
2024-06-13 09:02:01 +08:00
|
|
|
|
}
|
|
|
|
|
|
// handlerDrawComplete();
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// 初始化地图 返回地图实例
|
|
|
|
|
|
const initMap = () => {
|
|
|
|
|
|
return new mapboxgl.Map({
|
|
|
|
|
|
container: 'mapContainer',
|
|
|
|
|
|
language: 'zh-cmn',
|
|
|
|
|
|
projection: 'equirectangular', // wgs84参考系
|
|
|
|
|
|
style: MapboxDefaultStyle,
|
|
|
|
|
|
maxZoom: props.mapConfig.maxZoom ? props.mapConfig.maxZoom : 18,
|
|
|
|
|
|
minZoom: props.mapConfig.minZoom ? props.mapConfig.minZoom : 1,
|
|
|
|
|
|
zoom: props.mapConfig.zoom ? props.mapConfig.zoom : 12,
|
|
|
|
|
|
pitch: props.mapConfig.angle ? props.mapConfig.angle : 0,
|
|
|
|
|
|
center: props.mapConfig.center?.split(','),
|
|
|
|
|
|
});
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
const handlerMapControlClick = (handler: string) => {
|
|
|
|
|
|
handler === 'handlerDrawPoint' && handlerDrawPoint();
|
|
|
|
|
|
handler === 'handlerDrawLineString' && handlerDrawLineString();
|
|
|
|
|
|
handler === 'handlerDrawPolygon' && handlerDrawPolygon();
|
|
|
|
|
|
};
|
|
|
|
|
|
//绘制点
|
|
|
|
|
|
const handlerDrawPoint = () => {
|
|
|
|
|
|
mp.draw('Point');
|
|
|
|
|
|
mp.on('Point', function (e) {
|
|
|
|
|
|
emit('mapDraw', 'Point', e);
|
|
|
|
|
|
});
|
|
|
|
|
|
};
|
|
|
|
|
|
//绘制线
|
|
|
|
|
|
const handlerDrawLineString = () => {
|
|
|
|
|
|
mp.draw('LineString');
|
|
|
|
|
|
mp.on('LineString', function (e) {
|
|
|
|
|
|
emit('mapDraw', 'LineString', e);
|
|
|
|
|
|
});
|
|
|
|
|
|
};
|
|
|
|
|
|
//绘制面
|
|
|
|
|
|
const handlerDrawPolygon = () => {
|
|
|
|
|
|
mp.draw('Polygon');
|
|
|
|
|
|
mp.on('Polygon', function (e) {
|
|
|
|
|
|
emit('mapDraw', 'Polygon', e);
|
|
|
|
|
|
});
|
|
|
|
|
|
};
|
|
|
|
|
|
//删除标记
|
|
|
|
|
|
const handlerUnDraw = () => {
|
|
|
|
|
|
mp.deleteDraw();
|
|
|
|
|
|
emit('mapDraw', 'cancel');
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// 初始化绘图空间
|
|
|
|
|
|
const handlerInitDrawTool = (feature, bool) => {
|
|
|
|
|
|
// if (feature.features.length > 0) {
|
|
|
|
|
|
|
|
|
|
|
|
// feature.features.forEach((item) => {
|
|
|
|
|
|
|
|
|
|
|
|
// if (item.geometry.type == 'MultiPolygon') {
|
|
|
|
|
|
// let arr: any = ref([]);
|
|
|
|
|
|
// item.geometry.coordinates.forEach((val) => {
|
|
|
|
|
|
// arr.value.push(val[0]);
|
|
|
|
|
|
// });
|
|
|
|
|
|
// item.geometry.coordinates = arr.value;
|
|
|
|
|
|
// item.geometry.type = 'Polygon';
|
|
|
|
|
|
// }
|
|
|
|
|
|
// });
|
|
|
|
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
geojson.geojson = feature;
|
|
|
|
|
|
|
|
|
|
|
|
if (drawTool) {
|
|
|
|
|
|
drawTool.deleteAll();
|
|
|
|
|
|
if (feature.features) {
|
|
|
|
|
|
drawTool.set(geojson.geojson);
|
2024-05-27 08:25:43 +08:00
|
|
|
|
}
|
2024-06-13 09:02:01 +08:00
|
|
|
|
} else {
|
2024-05-27 08:25:43 +08:00
|
|
|
|
drawTool = new MapboxDraw({
|
|
|
|
|
|
modes: {
|
|
|
|
|
|
...MapboxDraw.modes,
|
|
|
|
|
|
draw_point: SnapPointMode,
|
2024-06-13 09:02:01 +08:00
|
|
|
|
draw_polygon: SnapPolygonMode,
|
|
|
|
|
|
draw_line_string: SnapLineMode,
|
2024-05-27 08:25:43 +08:00
|
|
|
|
direct_select: SnapDirectSelect,
|
|
|
|
|
|
},
|
|
|
|
|
|
styles: customDrawStyles,
|
|
|
|
|
|
userProperties: true,
|
|
|
|
|
|
snap: true,
|
|
|
|
|
|
snapOptions: {
|
2024-06-13 09:02:01 +08:00
|
|
|
|
snapPx: 12, // defaults to 15
|
2024-05-27 08:25:43 +08:00
|
|
|
|
snapToMidPoints: true, // defaults to false
|
|
|
|
|
|
snapVertexPriorityDistance: 0.0025, // defaults to 1.25
|
|
|
|
|
|
},
|
|
|
|
|
|
guides: false,
|
|
|
|
|
|
});
|
2024-06-11 08:29:53 +08:00
|
|
|
|
|
2024-06-13 09:02:01 +08:00
|
|
|
|
map.addControl(drawTool, 'top-right');
|
2024-06-11 08:29:53 +08:00
|
|
|
|
|
2024-06-13 09:02:01 +08:00
|
|
|
|
if (feature.features) {
|
|
|
|
|
|
drawTool.set(geojson.geojson);
|
2024-06-11 08:29:53 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-06-13 09:02:01 +08:00
|
|
|
|
// 正在绘制
|
|
|
|
|
|
// if (bool) {
|
|
|
|
|
|
// drawing.value = true;
|
|
|
|
|
|
// } else {
|
|
|
|
|
|
// drawing.value = false;
|
|
|
|
|
|
// }
|
2024-06-11 08:29:53 +08:00
|
|
|
|
|
2024-06-13 09:02:01 +08:00
|
|
|
|
drawing.value = true;
|
|
|
|
|
|
};
|
2024-06-11 08:29:53 +08:00
|
|
|
|
|
2024-06-13 09:02:01 +08:00
|
|
|
|
// 将图斑复制到指定图层
|
|
|
|
|
|
const handlerCopyToTargetLayer = (e) => {
|
|
|
|
|
|
if (e.features.length > 0) {
|
|
|
|
|
|
if (popup) {
|
|
|
|
|
|
popup.remove();
|
|
|
|
|
|
popup = null;
|
2024-06-11 08:29:53 +08:00
|
|
|
|
}
|
2024-05-30 10:13:56 +08:00
|
|
|
|
|
2024-06-13 09:02:01 +08:00
|
|
|
|
selectFeature = e.features[0];
|
2024-06-11 08:29:53 +08:00
|
|
|
|
|
2024-06-13 09:02:01 +08:00
|
|
|
|
popup = new mapboxgl.Popup({
|
|
|
|
|
|
closeButton: false,
|
|
|
|
|
|
closeOnClick: false,
|
|
|
|
|
|
});
|
2024-05-30 10:13:56 +08:00
|
|
|
|
|
2024-06-13 09:02:01 +08:00
|
|
|
|
// 设置 popup 的位置和内容
|
|
|
|
|
|
popup
|
|
|
|
|
|
.setLngLat(clickPoisition)
|
|
|
|
|
|
.setHTML(
|
|
|
|
|
|
`
|
|
|
|
|
|
<div style="color:#333;padding:3px 12px;cursor:pointer;" type="primary" icon="el-icon-search" onclick="handlerCopyFeature();">复制当前图斑</div>`,
|
|
|
|
|
|
)
|
|
|
|
|
|
.addTo(map);
|
|
|
|
|
|
} else {
|
|
|
|
|
|
popup.remove();
|
2024-05-27 08:25:43 +08:00
|
|
|
|
}
|
2024-06-13 09:02:01 +08:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
const handlerCopyFeature = () => {
|
|
|
|
|
|
popup.remove();
|
|
|
|
|
|
createMessage.success('复制成功!');
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// 添加到图层
|
|
|
|
|
|
const handlerAddToLayerList = (layer) => {
|
|
|
|
|
|
handlerCheckLayerExist(layer);
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// 判断图层列表中是否一定添加
|
|
|
|
|
|
const handlerCheckLayerExist = (layer) => {
|
|
|
|
|
|
for (let i = 0; i < layerList.length; i++) {
|
|
|
|
|
|
if (layerList[i] == layer.id) {
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
2024-05-27 08:25:43 +08:00
|
|
|
|
}
|
2024-06-13 09:02:01 +08:00
|
|
|
|
layerList.push(layer);
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
const handlerCheckboxChange = (item) => {
|
|
|
|
|
|
console.log('itemitemitem', item);
|
|
|
|
|
|
handlerPreviewLayer(item);
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// 控制图层是否显示
|
|
|
|
|
|
const handlerPreviewLayer = (layer) => {
|
|
|
|
|
|
console.log('layersss', layer);
|
|
|
|
|
|
handlerLayerControler(layer);
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// 图层控制中心
|
|
|
|
|
|
const handlerLayerControler = (layerInfo) => {
|
|
|
|
|
|
layerInfo.layer = layerInfo.layer ? layerInfo.layer : JSON.parse(layerInfo.style);
|
|
|
|
|
|
|
|
|
|
|
|
if (map.getSource(layerInfo.layer.id)) {
|
|
|
|
|
|
if (layerInfo.checked) {
|
|
|
|
|
|
map.setLayoutProperty(layerInfo.layer.id, 'visibility', 'visible');
|
|
|
|
|
|
} else {
|
|
|
|
|
|
map.setLayoutProperty(layerInfo.layer.id, 'visibility', 'none');
|
|
|
|
|
|
}
|
|
|
|
|
|
} else {
|
|
|
|
|
|
map.addLayer(layerInfo.layer);
|
|
|
|
|
|
map.on('click', layerInfo.layer.id, function (e) {
|
|
|
|
|
|
handlerPreviewFeatureInfo(e);
|
|
|
|
|
|
});
|
2024-06-12 13:37:35 +08:00
|
|
|
|
}
|
2024-06-13 09:02:01 +08:00
|
|
|
|
};
|
2024-06-12 13:37:35 +08:00
|
|
|
|
|
2024-06-13 09:02:01 +08:00
|
|
|
|
// 查看列表数据
|
|
|
|
|
|
const handlerDataList = () => {};
|
2024-06-12 17:28:10 +08:00
|
|
|
|
|
2024-06-13 09:02:01 +08:00
|
|
|
|
// 图斑属性查看
|
|
|
|
|
|
const handlerPreviewFeatureInfo = (e) => {
|
|
|
|
|
|
if (e.features) {
|
|
|
|
|
|
isOpen.value = true;
|
2024-05-27 08:25:43 +08:00
|
|
|
|
}
|
2024-06-13 09:02:01 +08:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
const handlerClose = (e) => {
|
|
|
|
|
|
isOpen.value = e;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// 图斑定位
|
|
|
|
|
|
const handlerLocation = (lngLat) => {
|
|
|
|
|
|
map.flyTo({
|
|
|
|
|
|
center: lngLat,
|
|
|
|
|
|
zoom: 17,
|
|
|
|
|
|
speed: 10, // 飞行速度
|
|
|
|
|
|
curve: 1, // 飞行曲线
|
|
|
|
|
|
easing(t) {
|
|
|
|
|
|
// 飞行动画函数
|
|
|
|
|
|
return t;
|
|
|
|
|
|
},
|
|
|
|
|
|
});
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// 编辑图斑
|
|
|
|
|
|
const handlerEdit = (info) => {
|
|
|
|
|
|
initDraw(info);
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
const initDraw = (layerInfo) => {
|
|
|
|
|
|
// 实例化绘图工具
|
|
|
|
|
|
drawTool = new MapboxDraw({
|
|
|
|
|
|
modes: {
|
|
|
|
|
|
...MapboxDraw.modes,
|
|
|
|
|
|
draw_point: SnapPointMode,
|
|
|
|
|
|
// draw_polygon: SnapPolygonMode,
|
|
|
|
|
|
// draw_line_string: SnapLineMode,
|
|
|
|
|
|
direct_select: SnapDirectSelect,
|
|
|
|
|
|
},
|
|
|
|
|
|
styles: customDrawStyles,
|
|
|
|
|
|
userProperties: true,
|
|
|
|
|
|
snap: true,
|
|
|
|
|
|
snapOptions: {
|
|
|
|
|
|
snapPx: 15, // defaults to 15
|
|
|
|
|
|
snapToMidPoints: true, // defaults to false
|
|
|
|
|
|
snapVertexPriorityDistance: 0.0025, // defaults to 1.25
|
|
|
|
|
|
},
|
|
|
|
|
|
guides: false,
|
|
|
|
|
|
});
|
2024-05-30 10:13:56 +08:00
|
|
|
|
|
2024-06-13 09:02:01 +08:00
|
|
|
|
map.addControl(drawTool, 'top-right');
|
|
|
|
|
|
|
|
|
|
|
|
// let geojson:Object = {};
|
|
|
|
|
|
// if (layerInfo.dataType == "面") {
|
|
|
|
|
|
// geojson.type = "Polygon";
|
|
|
|
|
|
// geojson.coordinates = geojson.coordinates[0];
|
|
|
|
|
|
// } else if (layerInfo.dataType == "点") {
|
|
|
|
|
|
// geojson.type = "Point";
|
|
|
|
|
|
// geojson.coordinates = geojson.coordinates;
|
|
|
|
|
|
// } else if (layerInfo.dataType == "线") {
|
|
|
|
|
|
// geojson.type = "LineString";
|
|
|
|
|
|
// geojson.coordinates = geojson.coordinates[0];
|
|
|
|
|
|
// }
|
|
|
|
|
|
// if (formData.lat && formData.lng) {
|
|
|
|
|
|
// formData.lat = geojson.coordinates[1];
|
|
|
|
|
|
// formData.lng = geojson.coordinates[0];
|
|
|
|
|
|
// }
|
|
|
|
|
|
// geojson = {
|
|
|
|
|
|
// type: "FeatureCollection",
|
|
|
|
|
|
// features: [
|
|
|
|
|
|
// {
|
|
|
|
|
|
// type: "Feature",
|
|
|
|
|
|
// geometry: geojson,
|
|
|
|
|
|
// },
|
|
|
|
|
|
// ],
|
|
|
|
|
|
// };
|
|
|
|
|
|
// map.setLayoutProperty("pbfLayer", "visibility", "none");
|
|
|
|
|
|
// drawTool.set(geojson);
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
const handlerDrawComplete = () => {
|
|
|
|
|
|
let arr = [];
|
|
|
|
|
|
geojson.geojson.features.forEach((item, index) => {
|
|
|
|
|
|
let wktStr = GeojsonToWkt(item.geometry);
|
|
|
|
|
|
let obj = {
|
|
|
|
|
|
columnName: 'mapgeom',
|
|
|
|
|
|
value: wktStr,
|
|
|
|
|
|
};
|
|
|
|
|
|
arr.push(obj);
|
|
|
|
|
|
});
|
|
|
|
|
|
console.log('aaaa', arr);
|
|
|
|
|
|
emit('handlerDrawComplete', arr);
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
const handlerCancleDraw = () => {
|
|
|
|
|
|
map.removeControl(drawTool);
|
|
|
|
|
|
drawTool = null;
|
|
|
|
|
|
drawing.value = false;
|
|
|
|
|
|
|
|
|
|
|
|
// 清空详情图层
|
|
|
|
|
|
if (map.getSource('detailsSource')) {
|
|
|
|
|
|
map.getSource('detailsSource').setData({
|
|
|
|
|
|
type: 'FeatureCollection',
|
|
|
|
|
|
features: [],
|
|
|
|
|
|
});
|
2024-05-27 08:25:43 +08:00
|
|
|
|
}
|
2024-06-13 09:02:01 +08:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
*
|
|
|
|
|
|
* 查看图斑
|
|
|
|
|
|
*
|
|
|
|
|
|
* 添加图斑
|
|
|
|
|
|
*
|
|
|
|
|
|
* 编辑图斑
|
|
|
|
|
|
*
|
|
|
|
|
|
* status 操作类型
|
|
|
|
|
|
*
|
|
|
|
|
|
* features 空间数据
|
|
|
|
|
|
*
|
|
|
|
|
|
* [
|
|
|
|
|
|
* {id:"8448048304dofhaofh0af0q4",geom:""}
|
|
|
|
|
|
* ]
|
|
|
|
|
|
* */
|
|
|
|
|
|
const handlerDraw = (status: string, features = null, bool = false) => {
|
|
|
|
|
|
let geo = {
|
|
|
|
|
|
type: 'FeatureCollection',
|
|
|
|
|
|
features: [],
|
|
|
|
|
|
};
|
|
|
|
|
|
// 清空详情图斑
|
|
|
|
|
|
if (map.getSource('detailsSource')) {
|
|
|
|
|
|
map.getSource('detailsSource').setData({
|
|
|
|
|
|
type: 'FeatureCollection',
|
|
|
|
|
|
features: [],
|
|
|
|
|
|
});
|
2024-05-27 08:25:43 +08:00
|
|
|
|
}
|
2024-06-13 09:02:01 +08:00
|
|
|
|
if (features == null) {
|
|
|
|
|
|
bool = true;
|
|
|
|
|
|
} else {
|
|
|
|
|
|
if (features.length > 0) {
|
|
|
|
|
|
for (let i = 0; i < features.length; i++) {
|
|
|
|
|
|
try {
|
|
|
|
|
|
let featureTemp = WktToGeojson(features[i]?.mapgeom);
|
|
|
|
|
|
let feature = {
|
|
|
|
|
|
id: generateUUID(),
|
|
|
|
|
|
type: 'Feature',
|
|
|
|
|
|
properties: {},
|
|
|
|
|
|
geometry: featureTemp,
|
|
|
|
|
|
};
|
|
|
|
|
|
geo.features.push(feature);
|
|
|
|
|
|
|
|
|
|
|
|
// 获取第一个图斑的中心点跳转定位
|
|
|
|
|
|
if (i == 0) {
|
|
|
|
|
|
let lngLat = getGeometryCenter(feature);
|
|
|
|
|
|
handlerLocation(lngLat);
|
|
|
|
|
|
}
|
|
|
|
|
|
} catch (e) {
|
|
|
|
|
|
createMessage.error('WKT数据格式解析错误,请检查WKT数据格式是否有误!');
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2024-05-27 08:25:43 +08:00
|
|
|
|
}
|
2024-06-13 09:02:01 +08:00
|
|
|
|
switch (status) {
|
|
|
|
|
|
case 'Add':
|
|
|
|
|
|
handlerInitDrawTool(geo, bool);
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 'Edit':
|
|
|
|
|
|
handlerInitDrawTool(geo, bool);
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 'Details':
|
|
|
|
|
|
handlerDetails(geo);
|
|
|
|
|
|
break;
|
|
|
|
|
|
default:
|
|
|
|
|
|
createMessage.error('请传入操作类型!');
|
2024-05-27 08:25:43 +08:00
|
|
|
|
}
|
2024-06-13 09:02:01 +08:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// 查看图斑详情
|
|
|
|
|
|
const handlerDetails = (geojson) => {
|
|
|
|
|
|
if (map.getSource('detailsSource')) {
|
|
|
|
|
|
map.getSource('detailsSource').setData(geojson);
|
|
|
|
|
|
} else {
|
|
|
|
|
|
map.addSource('detailsSource', {
|
|
|
|
|
|
type: 'geojson',
|
|
|
|
|
|
data: geojson,
|
|
|
|
|
|
});
|
|
|
|
|
|
map.addLayer({
|
|
|
|
|
|
id: 'detailsLayer',
|
|
|
|
|
|
type: 'fill',
|
|
|
|
|
|
source: 'detailsSource',
|
|
|
|
|
|
layout: {},
|
|
|
|
|
|
paint: {
|
|
|
|
|
|
//填充颜色
|
|
|
|
|
|
'fill-color': '#3badc9',
|
|
|
|
|
|
//透明度设置
|
|
|
|
|
|
'fill-opacity': 0.4,
|
|
|
|
|
|
},
|
|
|
|
|
|
});
|
2024-05-30 10:13:56 +08:00
|
|
|
|
|
2024-06-13 09:02:01 +08:00
|
|
|
|
map.addLayer({
|
|
|
|
|
|
id: 'detailsLayerLine',
|
|
|
|
|
|
type: 'line',
|
|
|
|
|
|
source: 'detailsSource',
|
|
|
|
|
|
layout: {},
|
|
|
|
|
|
paint: {
|
|
|
|
|
|
'line-color': '#3badc9',
|
|
|
|
|
|
'line-width': 2,
|
|
|
|
|
|
},
|
|
|
|
|
|
});
|
2024-05-30 10:13:56 +08:00
|
|
|
|
}
|
2024-06-13 09:02:01 +08:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// 创建查看图斑图层
|
|
|
|
|
|
|
|
|
|
|
|
defineExpose({
|
|
|
|
|
|
handlerDraw,
|
|
|
|
|
|
handlerLocation,
|
|
|
|
|
|
handlerCancleDraw,
|
|
|
|
|
|
});
|
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
<style>
|
|
|
|
|
|
.map-container {
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
height: 100%;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.map-box {
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
height: 100%;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.layer-control-center {
|
|
|
|
|
|
position: absolute;
|
|
|
|
|
|
top: 15px;
|
|
|
|
|
|
left: 15px;
|
|
|
|
|
|
background: #fff;
|
|
|
|
|
|
border-radius: 8px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.layer-control-center p {
|
|
|
|
|
|
margin: 0px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.layer-control-center .ant-checkbox-wrapper {
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.draw-control-center {
|
|
|
|
|
|
position: absolute;
|
|
|
|
|
|
padding: 8px;
|
|
|
|
|
|
top: 15px;
|
|
|
|
|
|
right: 15px;
|
|
|
|
|
|
background: #ffffff;
|
|
|
|
|
|
border-radius: 12px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.draw-control-center .draw-btn {
|
|
|
|
|
|
float: left;
|
|
|
|
|
|
margin: 0px 7px;
|
|
|
|
|
|
padding: 5px;
|
|
|
|
|
|
border-radius: 5px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.draw-control-center .draw-btn:hover {
|
|
|
|
|
|
background-color: rgb(0 0 0/5%);
|
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-06-13 18:04:53 +08:00
|
|
|
|
<<<<<<< HEAD
|
2024-05-27 08:25:43 +08:00
|
|
|
|
.mapboxgl-ctrl-group {
|
2024-06-13 18:02:33 +08:00
|
|
|
|
padding: 6px;
|
2024-05-27 08:25:43 +08:00
|
|
|
|
border-radius: 12px;
|
|
|
|
|
|
top: 5px;
|
|
|
|
|
|
}
|
|
|
|
|
|
.mapbox-gl-draw_ctrl-draw-btn {
|
|
|
|
|
|
width: 20px !important;
|
|
|
|
|
|
height: 20px !important;
|
|
|
|
|
|
float: left;
|
|
|
|
|
|
}
|
2024-06-13 18:04:53 +08:00
|
|
|
|
=======
|
2024-06-13 09:02:01 +08:00
|
|
|
|
.mapboxgl-ctrl-group:not(:empty) {
|
|
|
|
|
|
box-shadow: none;
|
|
|
|
|
|
}
|
2024-06-13 18:04:53 +08:00
|
|
|
|
>>>>>>> 666e8282d20e63d6618652a83ba0b8f126f74646
|
2024-06-13 09:02:01 +08:00
|
|
|
|
|
|
|
|
|
|
.mapboxgl-ctrl-group {
|
|
|
|
|
|
padding: 10px;
|
|
|
|
|
|
border-radius: 12px;
|
|
|
|
|
|
position: relative;
|
|
|
|
|
|
right: 140px;
|
|
|
|
|
|
top: 5px;
|
|
|
|
|
|
}
|
|
|
|
|
|
.mapbox-gl-draw_ctrl-draw-btn {
|
|
|
|
|
|
width: 20px !important;
|
|
|
|
|
|
height: 20px !important;
|
|
|
|
|
|
float: left;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.mapboxgl-ctrl-top-right {
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.mapboxgl-ctrl-group button + button {
|
|
|
|
|
|
border: 0px;
|
|
|
|
|
|
margin: 0px 6px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.mapbox-gl-draw_ctrl-draw-btn:hover {
|
|
|
|
|
|
transform: scale(1.2);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-06-13 18:04:53 +08:00
|
|
|
|
<<<<<<< HEAD
|
2024-05-30 10:13:56 +08:00
|
|
|
|
.jas-ctrl-measure-item{
|
|
|
|
|
|
height:22px;
|
2024-06-13 18:02:33 +08:00
|
|
|
|
color: rgb(255, 255, 255);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.layer-item{
|
|
|
|
|
|
padding:8px 16px;
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.layer-item:hover{
|
|
|
|
|
|
background:#c7dcf580;
|
|
|
|
|
|
|
2024-05-30 10:13:56 +08:00
|
|
|
|
}
|
2024-06-12 17:28:10 +08:00
|
|
|
|
|
2024-06-13 18:02:33 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
::v-deep .ant-collapse-content-box{
|
|
|
|
|
|
padding:0px!important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-05-27 08:25:43 +08:00
|
|
|
|
</style>
|
2024-06-13 18:04:53 +08:00
|
|
|
|
|
|
|
|
|
|
=======
|
2024-06-13 09:02:01 +08:00
|
|
|
|
.mapbox-gl-draw_polygon {
|
|
|
|
|
|
background-image: url(/polygon.png);
|
|
|
|
|
|
background-size: 100% 100%;
|
|
|
|
|
|
width: 100px;
|
|
|
|
|
|
height: 100px;
|
|
|
|
|
|
}
|
|
|
|
|
|
.mapbox-gl-draw_point {
|
|
|
|
|
|
background-image: url(/point.png);
|
|
|
|
|
|
background-size: 100% 100%;
|
|
|
|
|
|
width: 100px;
|
|
|
|
|
|
height: 100px;
|
|
|
|
|
|
}
|
|
|
|
|
|
.mapbox-gl-draw_line {
|
|
|
|
|
|
background-image: url(/line.png);
|
|
|
|
|
|
background-size: 100% 100%;
|
|
|
|
|
|
width: 100px;
|
|
|
|
|
|
height: 100px;
|
|
|
|
|
|
margin: 0px 6px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.mapbox-gl-draw_trash {
|
|
|
|
|
|
background-image: url(/del.png);
|
|
|
|
|
|
background-size: 100% 100%;
|
|
|
|
|
|
width: 100px;
|
|
|
|
|
|
height: 100px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.mapbox-gl-draw_combine {
|
|
|
|
|
|
background-image: url(/combine.png);
|
|
|
|
|
|
background-size: 100% 100%;
|
|
|
|
|
|
width: 100px;
|
|
|
|
|
|
height: 100px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.mapbox-gl-draw_uncombine {
|
|
|
|
|
|
background-image: url(/uncombine.png);
|
|
|
|
|
|
background-size: 100% 100%;
|
|
|
|
|
|
width: 100px;
|
|
|
|
|
|
height: 100px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.jas-ctrl-measure {
|
|
|
|
|
|
position: relative;
|
|
|
|
|
|
top: 6px;
|
|
|
|
|
|
right: 10px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.jas-ctrl-measure-item {
|
|
|
|
|
|
height: 22px;
|
|
|
|
|
|
color: #fff;
|
|
|
|
|
|
}
|
|
|
|
|
|
</style>
|
2024-06-13 18:04:53 +08:00
|
|
|
|
>>>>>>> 666e8282d20e63d6618652a83ba0b8f126f74646
|