From ee7af3674e44001aafbe24bcf10f87ef2344a84f Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期六, 11 十月 2025 11:31:11 +0800 Subject: [PATCH] 电子围栏回显 --- ManagementZYTravel/guns-admin/src/main/webapp/WEB-INF/view/system/specialAreaBilling/specialAreaBilling_edit.html | 3 + ManagementZYTravel/guns-admin/src/main/webapp/WEB-INF/view/system/specialAreaBilling/specialAreaBilling_add.html | 3 + ManagementZYTravel/guns-admin/src/main/webapp/static/modular/system/specialAreaBilling/electricFence.js | 76 ++++++++++++++++++++++++++++++++------ ManagementZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TSpecialAreaBillingController.java | 2 + 4 files changed, 70 insertions(+), 14 deletions(-) diff --git a/ManagementZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TSpecialAreaBillingController.java b/ManagementZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TSpecialAreaBillingController.java index 861f749..4006db4 100644 --- a/ManagementZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TSpecialAreaBillingController.java +++ b/ManagementZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TSpecialAreaBillingController.java @@ -63,6 +63,8 @@ */ @RequestMapping("/add") public String add(Model model) { + SpecialAreaBilling specialAreaBilling = new SpecialAreaBilling(); + model.addAttribute("data",specialAreaBilling); return PREFIX + "specialAreaBilling_add.html"; } /** diff --git a/ManagementZYTravel/guns-admin/src/main/webapp/WEB-INF/view/system/specialAreaBilling/specialAreaBilling_add.html b/ManagementZYTravel/guns-admin/src/main/webapp/WEB-INF/view/system/specialAreaBilling/specialAreaBilling_add.html index 41ec94a..4b66798 100644 --- a/ManagementZYTravel/guns-admin/src/main/webapp/WEB-INF/view/system/specialAreaBilling/specialAreaBilling_add.html +++ b/ManagementZYTravel/guns-admin/src/main/webapp/WEB-INF/view/system/specialAreaBilling/specialAreaBilling_add.html @@ -120,7 +120,8 @@ <script src="https://webapi.amap.com/maps?v=1.4.15&key=83a918fd5e6ed82be74e3056d403dbe6&plugin=AMap.MouseTool,AMap.DistrictSearch,AMap.PolyEditor,AMap.RectangleEditor,AMap.CircleEditor"></script> <script src="${ctxPath}/static/modular/system/specialAreaBilling/electricFence.js"></script> <script src="${ctxPath}/static/modular/system/specialAreaBilling/specialAreaBilling_info.js"></script> - +<script> var coordinateData = "${data.coordinate}"; +</script> <script> $(function() { var elem = document.querySelector(".js-switch"); diff --git a/ManagementZYTravel/guns-admin/src/main/webapp/WEB-INF/view/system/specialAreaBilling/specialAreaBilling_edit.html b/ManagementZYTravel/guns-admin/src/main/webapp/WEB-INF/view/system/specialAreaBilling/specialAreaBilling_edit.html index 1879328..5fe7259 100644 --- a/ManagementZYTravel/guns-admin/src/main/webapp/WEB-INF/view/system/specialAreaBilling/specialAreaBilling_edit.html +++ b/ManagementZYTravel/guns-admin/src/main/webapp/WEB-INF/view/system/specialAreaBilling/specialAreaBilling_edit.html @@ -123,7 +123,8 @@ <script src="https://webapi.amap.com/maps?v=1.4.15&key=83a918fd5e6ed82be74e3056d403dbe6&plugin=AMap.MouseTool,AMap.DistrictSearch,AMap.PolyEditor,AMap.RectangleEditor,AMap.CircleEditor"></script> <script src="${ctxPath}/static/modular/system/specialAreaBilling/electricFence.js"></script> <script src="${ctxPath}/static/modular/system/specialAreaBilling/specialAreaBilling_info.js"></script> - +<script> var coordinateData = "${data.coordinate}"; +</script> <script> $(function() { var elem = document.querySelector(".js-switch"); diff --git a/ManagementZYTravel/guns-admin/src/main/webapp/static/modular/system/specialAreaBilling/electricFence.js b/ManagementZYTravel/guns-admin/src/main/webapp/static/modular/system/specialAreaBilling/electricFence.js index d98b147..43e9484 100644 --- a/ManagementZYTravel/guns-admin/src/main/webapp/static/modular/system/specialAreaBilling/electricFence.js +++ b/ManagementZYTravel/guns-admin/src/main/webapp/static/modular/system/specialAreaBilling/electricFence.js @@ -1,7 +1,9 @@ -var map = new AMap.Map('container',{ +// 将 polygons 数组声明提前并确保全局唯一 +var polygons = []; +var map = new AMap.Map('container', { resizeEnable: true, - zoom:15, - center: [102.2667, 27.8833] // 西昌坐标 + zoom: 4, // 使用更小的缩放级别以适应大范围坐标 + center: [77.3833, 34.8833] // 使用更居中的坐标 }); setCenterCoordinate(); function setCenterCoordinate() { @@ -14,12 +16,35 @@ map.setCenter(center) } } +// 修改 setElectricFence 函数来支持单个坐标数据 function setElectricFence() { + console.log("检查 coordinateData:", typeof coordinateData, coordinateData); + if (typeof coordinateData !== 'undefined' && coordinateData) { + console.log("开始绘制多边形,坐标数据:", coordinateData); + var path = convertData(coordinateData); + console.log("转换后的路径:", path); + var polygon = new AMap.Polygon({ + path: path, + strokeWeight: 2, + fillOpacity: 0.4, + fillColor: '#00b0ff', + strokeColor: '#80d8ff' + }); + map.add(polygon); + polygons.push(polygon); + + // 使用 setFitView 确保多边形可见 + map.setFitView([polygon]); + + console.log("多边形已添加到地图"); + return; + } + + // 原有的处理多个位置的逻辑保持不变 var locationsStr = $("#locationList1").val(); if ("" != locationsStr && null != locationsStr) { var locations = JSON.parse(locationsStr); for (let i = 0; i < locations.length; i++) { - console.log(locations[i]) var gid = locations[i].coordinate if (gid == null || gid == "") { continue; @@ -33,6 +58,7 @@ strokeColor: '#80d8ff' }); map.add(polygon); + polygons.push(polygon); } } } @@ -110,10 +136,15 @@ var district = null; -var polygons=[]; + function drawBounds() { + // 在编辑模式下不执行行政区划绘制 + if (typeof coordinateData !== 'undefined' && coordinateData) { + return; + } + if(value == ''){ - value = '北京市'; + value = '西昌市'; } //加载行政区划插件 @@ -129,8 +160,23 @@ //行政区查询 district.setLevel(document.getElementById('level').value) district.search(value, function(status, result) { - map.remove(polygons)//清除上次结果 - polygons = []; + // 只清除行政区划多边形,保留电子围栏 + var tempPolygons = []; + for (var i = 0; i < polygons.length; i++) { + // 保留用户绘制的电子围栏(通过判断是否在objs中) + var isUserPolygon = false; + for (var j = 0; j < objs.polygon.length; j++) { + if (polygons[i] === objs.polygon[j]) { + isUserPolygon = true; + break; + } + } + if (!isUserPolygon) { + tempPolygons.push(polygons[i]); + } + } + map.remove(tempPolygons); + var bounds = result.districtList[0].boundaries; if (bounds) { for (var i = 0, l = bounds.length; i < l; i++) { @@ -142,18 +188,21 @@ fillColor: '#80d8ff', strokeColor: '#0091ea' }); + map.add(polygon); polygons.push(polygon); } } - map.add(polygons) - map.setFitView(polygons);//视口自适应 + // 只对行政区划多边形进行视野调整 + if (bounds && bounds.length > 0) { + map.setFitView(polygons.slice(polygons.length - bounds.length)); + } }); } document.getElementById('find').onclick = function () { value = document.getElementById('district').value; if(value == ''){ - value = "北京市"; + value = "西昌市"; } drawBounds() }; @@ -161,7 +210,7 @@ if (e.keyCode === 13) { value = document.getElementById('district').value; if(value == ''){ - value = "北京市"; + value = "西昌市"; } drawBounds(); return false; @@ -236,6 +285,7 @@ document.getElementById('clear').onclick = function(){ map.remove(overlays) + map.remove(polygons); overlays = []; coordinate = ''; objs.circle = []; @@ -372,6 +422,8 @@ editor.close(); } } + $(function () { + console.log("coordinateData:", coordinateData); // 添加调试日志 setElectricFence() }) \ No newline at end of file -- Gitblit v1.7.1