From e1aa0ecffbabd618c71e4ad94370fb8dffe6ee1c Mon Sep 17 00:00:00 2001
From: zhanghua <314079846@qq.com>
Date: 星期日, 21 一月 2024 20:54:49 +0800
Subject: [PATCH] 优化
---
src/views/systemSetting/device/grid/components/components/map.vue | 122 +++++++++++++++++++++++++++++-----------
1 files changed, 87 insertions(+), 35 deletions(-)
diff --git a/src/views/systemSetting/device/grid/components/components/map.vue b/src/views/systemSetting/device/grid/components/components/map.vue
index 0a4fd03..b954da3 100644
--- a/src/views/systemSetting/device/grid/components/components/map.vue
+++ b/src/views/systemSetting/device/grid/components/components/map.vue
@@ -1,5 +1,27 @@
<template>
- <div id="container"></div>
+ <div>
+ <div id="container"></div>
+ <div class="optionBtn">
+ <el-button
+ type="primary"
+ class="btn submit"
+ @click.native.prevent="handleRanging"
+ >娴嬭窛
+ </el-button>
+ <el-button
+ type="primary"
+ class="btn submit"
+ @click.native.prevent="handleDraw"
+ >鐢荤嚎
+ </el-button>
+ <el-button
+ type="primary"
+ class="btn submit"
+ @click.native.prevent="handleDelete"
+ >鍒犻櫎
+ </el-button>
+ </div>
+ </div>
</template>
<script>
import AMapLoader from "@amap/amap-jsapi-loader";
@@ -7,33 +29,56 @@
data() {
return {
map: null,
+ mouseTool: null,
+ ruler: null,
_point: { x: "119.27179890", y: "28.59027084" },
_zoom: 15,
};
},
- created() {
- },
+ created() {},
methods: {
locationMap() {
const that = this;
- that.map.setZoomAndCenter(that.zoom, [that.point.x, that.point.y]);
- if (that.mark) {
- // 鍒涘缓涓�涓� Marker 瀹炰緥锛�
- var marker = new AMap.Marker({
- position: new AMap.LngLat(that._point.x, that._point.y), // 缁忕含搴﹀璞★紝涔熷彲浠ユ槸缁忕含搴︽瀯鎴愮殑涓�缁存暟缁刐116.39, 39.9]
- title: that.mark.title,
- });
+ that.zoom = that.zoom || that._zoom;
+ that.point = that.point || that._point;
+ that.map.setZoomAndCenter(that.zoom, [that.point.x, that.point.y]);
- // 灏嗗垱寤虹殑鐐规爣璁版坊鍔犲埌宸叉湁鐨勫湴鍥惧疄渚嬶細
- that.map.add(marker);
- marker.on('click',function(e){
- console.log('666')
- that.$emit('fatherMethod')
- // that.$parent.fatherMethod();
+ if (this.region) {
+ let polygon = new AMap.Polygon({
+ path: eval(this.region),
+ fillColor: "#ccebc5",
+ strokeOpacity: 1,
+ fillOpacity: 0.5,
+ strokeColor: "#2b8cbe",
+ strokeWeight: 1,
+ strokeStyle: "dashed",
+ strokeDasharray: [5, 5],
+ });
- })
- }
-
+ that.map.add(polygon);
+ } else {
+ that.mouseTool.polygon({
+ fillColor: "#00b0ff",
+ strokeColor: "#80d8ff",
+ //鍚孭olygon鐨凮ption璁剧疆
+ });
+ }
+ },
+ handleRanging() {
+ this.ruler.turnOn();
+ this.mouseTool.close(false);
+ },
+ handleDraw() {
+ this.ruler.turnOff();
+ this.mouseTool.close(false);
+ this.mouseTool.polygon({
+ fillColor: "#00b0ff",
+ strokeColor: "#80d8ff",
+ //鍚孭olygon鐨凮ption璁剧疆
+ });
+ },
+ handleDelete() {
+ this.map.clearMap();
},
},
mounted() {
@@ -41,28 +86,22 @@
AMapLoader.load({
key: "091ade377d4db40f68cc78cb9658ce8d", // 鐢宠濂界殑Web绔紑鍙戣�匥ey锛岄娆¤皟鐢� load 鏃跺繀濉�
version: "2.0", // 鎸囧畾瑕佸姞杞界殑 JSAPI 鐨勭増鏈紝缂虹渷鏃堕粯璁や负 1.4.15
- plugins: [], // 闇�瑕佷娇鐢ㄧ殑鐨勬彃浠跺垪琛紝濡傛瘮渚嬪昂'AMap.Scale'绛�
+ plugins: ["AMap.MouseTool", "AMap.RangingTool"], // 闇�瑕佷娇鐢ㄧ殑鐨勬彃浠跺垪琛紝濡傛瘮渚嬪昂'AMap.Scale'绛�
})
.then((AMap) => {
- that.map = new AMap.Map("container");
+ that.map = new AMap.Map("container",{resizeEnable: true});
+ that.mouseTool = new AMap.MouseTool(that.map);
+ that.mouseTool.on("draw", function (e) {
+ //缁樺埗瀹屾垚鍚庡皢鏁扮粍浼犲叆琛ㄥ崟
+ that.$emit("getRegion", e.obj.getOptions());
+ });
+ //榛樿鏍峰紡
+ that.ruler = new AMap.RangingTool(that.map);
that.locationMap();
})
.catch((e) => {
console.log(e);
});
- // const that = this;
- // debugger
- // that.map.setZoomAndCenter(that._zoom, [that._point.x, that._point.y]);
- // if (that.mark) {
- // // 鍒涘缓涓�涓� Marker 瀹炰緥锛�
- // var marker = new AMap.Marker({
- // position: new AMap.LngLat(that._point.x, that._point.y), // 缁忕含搴﹀璞★紝涔熷彲浠ユ槸缁忕含搴︽瀯鎴愮殑涓�缁存暟缁刐116.39, 39.9]
- // title: that.mark.title,
- // });
-
- // // 灏嗗垱寤虹殑鐐规爣璁版坊鍔犲埌宸叉湁鐨勫湴鍥惧疄渚嬶細
- // that.map.add(marker);
- // }
},
watch: {
point(newval, oldval) {
@@ -73,7 +112,7 @@
this._zoom = newval;
},
},
- props: ["point", "zoom", "mark"],
+ props: ["point", "zoom", "region"],
};
</script>
<style lang="scss" scoped>
@@ -81,4 +120,17 @@
width: 100%;
height: 100%;
}
+.optionBtn {
+ display: flex;
+ flex-direction: column;
+ position: absolute;
+ top: 10px;
+ right: 10px;
+ z-index: 9;
+}
+.el-button {
+ width: 70px;
+ margin-bottom: 5px;
+ margin-left: 10px;
+}
</style>
--
Gitblit v1.8.0