111
This commit is contained in:
parent
287187d01c
commit
e140cb5118
1
src/assets/icons/svg/map.svg
Normal file
1
src/assets/icons/svg/map.svg
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1715418472703" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4370" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M528 32C325.056 32 160 196.8 160 399.36c0 75.2 22.656 147.584 65.024 208.48 2.112 3.648 4.256 7.168 6.784 10.592l268.608 353.472c7.296 8.096 17.088 12.576 27.584 12.576 10.368 0 20.224-4.512 28.768-14.08l267.36-352c2.624-3.52 4.896-7.36 6.112-9.6A364.864 364.864 0 0 0 896 399.36C896 196.8 730.912 32 528 32z m0 498.72a131.52 131.52 0 0 1-131.456-131.232 131.488 131.488 0 0 1 262.88 0 131.52 131.52 0 0 1-131.424 131.2z" fill="#bfbfbf" p-id="4371"></path></svg>
|
After Width: | Height: | Size: 795 B |
|
@ -3,18 +3,19 @@
|
||||||
<div id="container"></div>
|
<div id="container"></div>
|
||||||
<div class="input-card">
|
<div class="input-card">
|
||||||
<el-button @click="createPolygon()">新建</el-button>
|
<el-button @click="createPolygon()">新建</el-button>
|
||||||
<el-button @click="polyEditor.open()">开始编辑</el-button>
|
<!-- <el-button @click="polyEditor.open()">开始编辑</el-button> -->
|
||||||
<el-button @click="editClose">结束编辑</el-button>
|
<el-button @click="editClose">结束编辑</el-button>
|
||||||
<el-button @click="changeMapStyle()">切换地图</el-button>
|
<el-button @click="changeMapStyle()">切换地图</el-button>
|
||||||
|
<el-button @click="clearPolygon()">清除多边形</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import AMapLoader from "@amap/amap-jsapi-loader";
|
import AMapLoader from "@amap/amap-jsapi-loader";
|
||||||
import globalConfig from '@/utils/config/globalConfig'
|
import globalConfig from '@/utils/config/globalConfig'
|
||||||
var polyEditor = "";
|
var polyEditor = "";
|
||||||
function calculateCenter(mapList) {
|
function calculateCenter(mapList) {
|
||||||
var total = mapList.length;
|
var total = mapList.length;
|
||||||
var X = 0,
|
var X = 0,
|
||||||
Y = 0,
|
Y = 0,
|
||||||
|
@ -38,9 +39,9 @@
|
||||||
var Lat = Math.atan2(Z, Hyp);
|
var Lat = Math.atan2(Z, Hyp);
|
||||||
let center = new AMap.LngLat((Lng * 180) / Math.PI, (Lat * 180) / Math.PI);
|
let center = new AMap.LngLat((Lng * 180) / Math.PI, (Lat * 180) / Math.PI);
|
||||||
return center;
|
return center;
|
||||||
}
|
}
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "AreaMap",
|
name: "AreaMap",
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
@ -48,6 +49,7 @@
|
||||||
// polyEditor: null,
|
// polyEditor: null,
|
||||||
coordList: "",
|
coordList: "",
|
||||||
timer: "",
|
timer: "",
|
||||||
|
status:true,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
props: ["pathList", "dataId"],
|
props: ["pathList", "dataId"],
|
||||||
|
@ -61,7 +63,24 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
changeMapStyle(){
|
clearPolygon() {
|
||||||
|
this.status=false
|
||||||
|
if (polyEditor) {
|
||||||
|
polyEditor.close(); // 关闭多边形编辑器
|
||||||
|
}
|
||||||
|
|
||||||
|
// 移除地图上的所有多边形对象
|
||||||
|
this.map.getAllOverlays('polygon').forEach(polygon => {
|
||||||
|
this.map.remove(polygon);
|
||||||
|
});
|
||||||
|
|
||||||
|
// 如果需要,也可以清空与多边形相关的其他状态或数据
|
||||||
|
this.coordList = '';
|
||||||
|
this.$emit("mapList", '');
|
||||||
|
|
||||||
|
this.$emit("center", '');
|
||||||
|
},
|
||||||
|
changeMapStyle() {
|
||||||
// 创建一个默认的图层组件
|
// 创建一个默认的图层组件
|
||||||
let defaultLayer = new AMap.TileLayer();
|
let defaultLayer = new AMap.TileLayer();
|
||||||
// 创建一个卫星图图层组件
|
// 创建一个卫星图图层组件
|
||||||
|
@ -72,14 +91,14 @@
|
||||||
// 获取当前地图显示的图层
|
// 获取当前地图显示的图层
|
||||||
let currentLayer = this.map.getLayers()[0]; // 假设默认图层在第一个位置
|
let currentLayer = this.map.getLayers()[0]; // 假设默认图层在第一个位置
|
||||||
// 切换图层
|
// 切换图层
|
||||||
if(this.type=='default'){
|
if (this.type == 'default') {
|
||||||
console.log(1111111)
|
// console.log(1111111)
|
||||||
//获取地图图层数据
|
//获取地图图层数据
|
||||||
this.map.setLayers([defaultLayer]); // 切换回默认图层
|
this.map.setLayers([defaultLayer]); // 切换回默认图层
|
||||||
this.type = 'Satellite';
|
this.type = 'Satellite';
|
||||||
}else{
|
} else {
|
||||||
console.log(222222)
|
console.log(222222)
|
||||||
this.map.setLayers([satelliteLayer,roadNetLayer]); // 切换到卫星图图层
|
this.map.setLayers([satelliteLayer, roadNetLayer]); // 切换到卫星图图层
|
||||||
this.type = 'default';
|
this.type = 'default';
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -104,7 +123,7 @@
|
||||||
//设置地图容器id
|
//设置地图容器id
|
||||||
viewMode: "3D", //是否为3D地图模式
|
viewMode: "3D", //是否为3D地图模式
|
||||||
zoom: 18, //初始化地图级别
|
zoom: 18, //初始化地图级别
|
||||||
center: [120.356031,26.94088], //初始化地图中心点位置--大嵛山岛
|
center: [120.356031, 26.94088], //初始化地图中心点位置--大嵛山岛
|
||||||
});
|
});
|
||||||
this.map.setFitView();
|
this.map.setFitView();
|
||||||
})
|
})
|
||||||
|
@ -126,10 +145,10 @@
|
||||||
});
|
});
|
||||||
this.map.add([polygon1]);
|
this.map.add([polygon1]);
|
||||||
polyEditor = new AMap.PolygonEditor(this.map);
|
polyEditor = new AMap.PolygonEditor(this.map);
|
||||||
console.log(polyEditor);
|
// console.log(polyEditor);
|
||||||
console.dir(polyEditor);
|
// console.dir(polyEditor);
|
||||||
polyEditor.on("add", (data) => {
|
polyEditor.on("add", (data) => {
|
||||||
console.log(data);
|
// console.log(data);
|
||||||
this.coordList = data.lnglat;
|
this.coordList = data.lnglat;
|
||||||
var polygon = data.target;
|
var polygon = data.target;
|
||||||
polygon.on("dblclick", () => {
|
polygon.on("dblclick", () => {
|
||||||
|
@ -145,6 +164,7 @@
|
||||||
return polyEditor;
|
return polyEditor;
|
||||||
},
|
},
|
||||||
createPolygon() {
|
createPolygon() {
|
||||||
|
this.status=true
|
||||||
polyEditor.close();
|
polyEditor.close();
|
||||||
polyEditor.setTarget();
|
polyEditor.setTarget();
|
||||||
polyEditor.open();
|
polyEditor.open();
|
||||||
|
@ -160,13 +180,15 @@
|
||||||
// console.log("coordList", this.coordList);
|
// console.log("coordList", this.coordList);
|
||||||
let mapList = [];
|
let mapList = [];
|
||||||
this.coordList.forEach((v) => {
|
this.coordList.forEach((v) => {
|
||||||
console.log("v", v.lng, "--", v.lat);
|
// console.log("v", v.lng, "--", v.lat);
|
||||||
mapList.push([v.lng, v.lat]);
|
mapList.push([v.lng, v.lat]);
|
||||||
});
|
});
|
||||||
let center = calculateCenter(mapList);
|
let center = calculateCenter(mapList);
|
||||||
|
console.log(mapList,'mapListmapList');
|
||||||
that.$emit("mapList", mapList);
|
that.$emit("mapList", mapList);
|
||||||
console.log("center:", center);
|
|
||||||
that.$emit("center", center);
|
that.$emit("center", center);
|
||||||
|
|
||||||
});
|
});
|
||||||
polyEditor.close();
|
polyEditor.close();
|
||||||
},
|
},
|
||||||
|
@ -174,16 +196,16 @@
|
||||||
beforeDestroy() {
|
beforeDestroy() {
|
||||||
clearInterval(this.timer);
|
clearInterval(this.timer);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
#container {
|
#container {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 500px;
|
height: 500px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.container {
|
.container {
|
||||||
position: relative;
|
position: relative;
|
||||||
border: 1px solid rgb(204, 204, 204);
|
border: 1px solid rgb(204, 204, 204);
|
||||||
|
|
||||||
|
@ -192,5 +214,5 @@
|
||||||
bottom: 15px;
|
bottom: 15px;
|
||||||
right: 15px;
|
right: 15px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
Loading…
Reference in New Issue
Block a user