From e8b19513b4240598d395d4b23481e678d251d94e Mon Sep 17 00:00:00 2001 From: liub Date: Sun, 28 Sep 2025 15:37:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=A4=A7=E5=B1=8F=E5=9C=B0?= =?UTF-8?q?=E5=9B=BE=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/largeScreen/mapOpt.ts | 184 ++++++++++++++++++ src/assets/images/mapPoint.png | Bin 0 -> 5590 bytes src/assets/images/mapWarn.png | Bin 0 -> 7741 bytes .../fys-equipment/fenceAccessRecord/index.vue | 5 +- src/views/largeScreen/index.vue | 151 ++++++++++++++ 5 files changed, 338 insertions(+), 2 deletions(-) create mode 100644 src/api/largeScreen/mapOpt.ts create mode 100644 src/assets/images/mapPoint.png create mode 100644 src/assets/images/mapWarn.png create mode 100644 src/views/largeScreen/index.vue diff --git a/src/api/largeScreen/mapOpt.ts b/src/api/largeScreen/mapOpt.ts new file mode 100644 index 0000000..43e8b5e --- /dev/null +++ b/src/api/largeScreen/mapOpt.ts @@ -0,0 +1,184 @@ +import { fa } from "element-plus/es/locale/index.mjs"; + +var map = null; + + +function initMap(click) { + // let key = '90bc158992feb8ccd0145e168cab1307'; + let init = function () { + map = new AMap.Map("map", { + viewMode: '2D', //默认使用 2D 模式 + zoom: 11, //地图级别 + center: [114.420739, 30.487514], //地图中心点 + mapStyle: "amap://styles/8c3efc37298895fd78e6aa0e799e78ce" + }); + + map.on('click', function (evt) { + // alert('您点击的位置:'+evt.lnglat.longitude+' , '+ evt.lnglat.latitude); + if (click) { + click(evt.lnglat); + } + }); + } + return new Promise((resolve, reject) => { + if (map) { + resolve(200); + return; + } + if (window.AMap) { + init(); + resolve(200); + return; + } + reject({ code: 500, msg: '高德地图未能初始化成功' }); + }); + +} + +//添加一个点 +function AddPoint(point, index, dragEnd, click, iconImg) { + + return new Promise((resolve, reject) => { + try { + let center = point ? new AMap.LngLat(point.longitude, point.latitude) : map.getCenter(); + + let icon = new AMap.Icon({ + size: new AMap.Size(45, 45), //图标尺寸 + image: iconImg, //Icon 的图像 + + imageSize: new AMap.Size(45, 45), //根据所设置的大小拉伸或压缩图片 + }); + let marker = new AMap.Marker({ + icon: icon, + position: center, + offset: new AMap.Pixel(-15, -24), + draggable: dragEnd ? true : false, + cursor: 'point', + title: point.isAlarming ? '正在报警:' + point.deviceName : point.deviceName, + text: index, + class: 'point', + extData: point + }); + marker.setMap(map); + + let lays = map.getAllOverlays('text'); + for (let i = 0; i < lays.length; i++) { + const element = lays[i]; + let cls = element.getOptions(); + if (cls.class) { + element.dom.classList.add(cls.class); + } + } + + + resolve(center); + } catch (ex) { + reject(ex) + } + + }); + + +} + +function getCenter() { + var center = map.getCenter().toJSON(); + return center; +} + +function setCenter(lon, latitude) { + var position = new AMap.LngLat(lon, latitude); //传入经纬度 + map.setCenter(position); //简写 设置地图中心点 + +} +//画多边形 +function DrawPoy(points) { + if (!map) { + return; + } + if (!points) { + return; + } + let path = []; + let path1 = []; + + setTimeout(() => { + points.coordinates.filter(v => { + path.push(new AMap.LngLat(v.longitude, v.latitude)); + path1.push(new AMap.LngLat(v.longitude * 0.5, v.latitude * 0.5)); + return true; + }); + + let polygon = new AMap.Polygon({ + path: path, + fillColor: '#F00C0C', + fillOpacity: 0.03, + strokeOpacity: 0.1, + strokeColor: '#F00C0C', + + strokeWeight: 3, + strokeStyle: 'dashed', + // strokeDasharray: [50,50,50], + extData: points + }); + map.add(polygon); + }, 0); + +} +//画圆形 +function DrawCicle(points, raduis, dragEnd) { + if (!map) { + return; + } + + + let circle = new AMap.Circle({ + center: [points.coordinates[0].longitude, points.coordinates[0].latitude], + radius: raduis ? raduis : 1000, //半径 + borderWeight: 3, + strokeColor: "#F00C0C", + strokeWeight: 1, + strokeOpacity: 0.2, + fillOpacity: 0.4, + strokeStyle: 'dashed', + strokeDasharray: [10, 10], + // 线样式还支持 'dashed' + fillColor: '#1791fc', + zIndex: 50, + }) + + + + map.add(circle); + // 缩放地图到合适的视野级别 + +} + +//清除所有 +function clearOverLays() { + map && map.clearMap(); +} + + + +function removeOverLay(lay) { + map && map.remove(lay); +} + + + +function setFitView() { + if (map) { map.setFitView(); } +} +export default { + gdMap: map, + initMap: initMap, + AddPoint: AddPoint, + getCenter: getCenter, + DrawPoy: DrawPoy, + DrawCicle: DrawCicle, + clearOverLays: clearOverLays, + removeOverLay: removeOverLay, + + setFitView: setFitView +} \ No newline at end of file diff --git a/src/assets/images/mapPoint.png b/src/assets/images/mapPoint.png new file mode 100644 index 0000000000000000000000000000000000000000..57e432e07d23041f8fa4273899e0bcf90640aa6d GIT binary patch literal 5590 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 literal 0 HcmV?d00001 diff --git a/src/assets/images/mapWarn.png b/src/assets/images/mapWarn.png new file mode 100644 index 0000000000000000000000000000000000000000..805d43c8b503fbee6566f1c76ee2eb326894aa31 GIT binary patch literal 7741 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 - + +