From e8044ee933b7e2f834855f28ea8575d82eb0eeac Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期五, 20 六月 2025 21:25:13 +0800
Subject: [PATCH] 提现管理

---
 ManagementOKTravel/guns-admin/src/main/webapp/static/modular/system/tSite/electricFence.js |  521 ++++++++++++++++++++++++++-------------------------------
 1 files changed, 239 insertions(+), 282 deletions(-)

diff --git a/ManagementOKTravel/guns-admin/src/main/webapp/static/modular/system/tSite/electricFence.js b/ManagementOKTravel/guns-admin/src/main/webapp/static/modular/system/tSite/electricFence.js
index 8881503..083d74c 100644
--- a/ManagementOKTravel/guns-admin/src/main/webapp/static/modular/system/tSite/electricFence.js
+++ b/ManagementOKTravel/guns-admin/src/main/webapp/static/modular/system/tSite/electricFence.js
@@ -1,196 +1,160 @@
-var map = new AMap.Map('container',{
-    resizeEnable: true,
-    zoom:10
-});
+// 初始化地图
+var map = new BMap.Map('container');
+var point = new BMap.Point(114.329123,29.847218);
+map.centerAndZoom(point, 10);
+map.enableScrollWheelZoom();
 
-
-var value = "";
-map.getCity(
-    callback=function (result) {
-        value = result.city;
-        drawBounds();
-    }
-);
-
-
-var mouseTool = new AMap.MouseTool(map);
-//监听draw事件可获取画好的覆盖物
+// 全局变量
+var coordinate = '';
 var overlays = [];
-var name = null;
-var coordinate = '';//存储坐标
-var objs = {//存储各种类型的覆盖物对象
-    "polyline":[],
-    "polygon":[],
-    "rectangle":[],
-    "circle":[]
+var objs = {
+    "polyline": [],
+    "polygon": [],
+    "rectangle": [],
+    "circle": []
 };
 var editors = [];
-mouseTool.on('draw',function(e){
-    overlays.push(e.obj);
-    console.log(e.obj.getPath());
 
-    switch (name) {
-        case 'polyline':{//折线图
-            var polyline = e.obj.getPath();
-            getCoordinate(polyline);
-            objs.polyline.push(e.obj);
-            break;
-        }
-        case 'polygon':{//多边形
-            var polygon = e.obj.getPath();
-            getCoordinate(polygon);
-            objs.polygon.push(e.obj);
-            break;
-        }
-        case 'rectangle':{//矩形
-            var rectangle = e.obj.getPath();
-            getCoordinate(rectangle);
-            objs.rectangle.push(e.obj);
-            break;
-        }
-        case 'circle':{//圆形
-            var center = e.obj.getCenter();
-            var radius = e.obj.getRadius();
-            if(radius > 5000){
-                Feng.error("创建电子围栏失败,圆半径不能大于5000米");
-                return;
+// 初始化绘图工具
+var drawingManager = new BMapLib.DrawingManager(map, {
+    isOpen: false,
+    enableDrawingTool: true,
+    drawingToolOptions: {
+        anchor: BMAP_ANCHOR_TOP_RIGHT,
+        offset: new BMap.Size(5, 5),
+        drawingModes: [
+            'polygon',    // 修改这里
+            'circle'      // 修改这里
+        ]
+    },
+    polygonOptions: {
+        strokeColor: "#80d8ff",
+        fillColor: "#00b0ff",
+        strokeWeight: 2,
+        strokeOpacity: 0.8
+    },
+    circleOptions: {
+        strokeColor: "#80d8ff",
+        fillColor: "#00b0ff",
+        strokeWeight: 2,
+        strokeOpacity: 0.8
+    }
+});
+
+// 添加提示信息
+function showDrawingTips() {
+    var tips = document.createElement('div');
+    tips.className = 'drawing-tips';
+    tips.style.cssText = 'position: absolute; top: 10px; left: 10px; background: rgba(255,255,255,0.8); padding: 5px 10px; border-radius: 4px; z-index: 1000;';
+    tips.innerHTML = '提示:双击左键结束绘制';
+    document.getElementById('container').appendChild(tips);
+
+    // 3秒后自动消失
+    setTimeout(function() {
+        tips.style.display = 'none';
+    }, 3000);
+}
+
+// 监听绘制完成事件
+drawingManager.addEventListener('overlaycomplete', function(e) {
+    console.log("绘制完成事件触发,类型:", e.type);
+    var overlay = e.overlay;
+    overlays.push(overlay);
+
+    try {
+        // 修改判断条件,使用字符串比较
+        if (e.type === 'polygon') {
+            var path = overlay.getPath();
+            console.log("多边形路径点:", path);
+
+            if (path && path.length > 0) {
+                var str = '';
+                for (var i = 0; i < path.length; i++) {
+                    str += path[i].lat + ',' + path[i].lng + ';';
+                }
+                coordinate = str.substring(0, str.length - 1);
+                objs.polygon.push(overlay);
+                console.log("多边形绘制完成,当前坐标:", coordinate);
+            } else {
+                console.error("多边形路径点为空");
             }
-            coordinate += center.lng + ',' + center.lat + ';' + radius + "_";
-            objs.circle.push(e.obj);
-            break;
-        }
-    }
-    console.log(coordinate);
-})
+        } else if (e.type === 'circle') {
+            var center = overlay.getCenter();
+            var radius = overlay.getRadius();
+            console.log("圆形中心点:", center, "半径:", radius);
 
-
-var district = null;
-var polygons=[];
-function drawBounds() {
-    if(value == ''){
-        value = '北京市';
-    }
-
-    //加载行政区划插件
-    if(!district){
-        //实例化DistrictSearch
-        var opts = {
-            subdistrict: 0,   //获取边界不需要返回下级行政区
-            extensions: 'all',  //返回行政区边界坐标组等具体信息
-            level: 'district'  //查询行政级别为 市
-        };
-        district = new AMap.DistrictSearch(opts);
-    }
-    //行政区查询
-    district.setLevel(document.getElementById('level').value)
-    district.search(value, function(status, result) {
-        map.remove(polygons)//清除上次结果
-        polygons = [];
-        var bounds = result.districtList[0].boundaries;
-        if (bounds) {
-            for (var i = 0, l = bounds.length; i < l; i++) {
-                //生成行政区划polygon
-                var polygon = new AMap.Polygon({
-                    strokeWeight: 1,
-                    path: bounds[i],
-                    fillOpacity: 0.4,
-                    fillColor: '#80d8ff',
-                    strokeColor: '#0091ea'
-                });
-                polygons.push(polygon);
+            if (center && radius) {
+                if (radius > 5000) {
+                    Feng.error("创建电子围栏失败,圆半径不能大于5000米");
+                    map.removeOverlay(overlay);
+                    return;
+                }
+                coordinate = center.lat + ',' + center.lng + ';' + radius;
+                objs.circle.push(overlay);
+                console.log("圆形绘制完成,当前坐标:", coordinate);
+            } else {
+                console.error("圆形参数不完整");
             }
         }
-        map.add(polygons)
-        map.setFitView(polygons);//视口自适应
-    });
-}
-
-document.getElementById('find').onclick = function () {
-    value = document.getElementById('district').value;
-    if(value == ''){
-        value = "北京市";
+    } catch (error) {
+        console.error("处理绘制完成事件时出错:", error);
     }
-    drawBounds()
-};
-document.getElementById('district').onkeydown = function(e) {
-    if (e.keyCode === 13) {
-        value = document.getElementById('district').value;
-        if(value == ''){
-            value = "北京市";
-        }
-        drawBounds();
-        return false;
-    }
-    return true;
-};
+});
 
+// 绘制功能
+function draw(type) {
+    console.log("开始绘制,类型:", type);
+    // 清除之前的坐标
+    coordinate = '';
 
-
-
-//处理坐标结果
-function getCoordinate(arr){
-    var str = '';
-    for(var i = 0; i < arr.length; i++){
-        var lng = arr[i].lng;
-        var lat = arr[i].lat;
-        str += lng + ',' + lat + ';';
-    }
-    coordinate += str.substring(0, str.length - 1) + "_";
-}
-
-
-function draw(type){
-    switch(type){
-        case 'marker':{
-            mouseTool.marker({
-                //同Marker的Option设置
-            });
-            break;
+    try {
+        switch (type) {
+            case 'polygon': {
+                drawingManager.setDrawingMode('polygon');  // 修改这里
+                drawingManager.open();
+                showDrawingTips();
+                break;
+            }
+            case 'circle': {
+                drawingManager.setDrawingMode('circle');   // 修改这里
+                drawingManager.open();
+                break;
+            }
         }
-        case 'polyline':{
-            mouseTool.polyline({
-                strokeColor:'#80d8ff'
-                //同Polyline的Option设置
-            });
-            break;
-        }
-        case 'polygon':{
-            mouseTool.polygon({
-                fillColor:'#00b0ff',
-                strokeColor:'#80d8ff'
-                //同Polygon的Option设置
-            });
-            break;
-        }
-        case 'rectangle':{
-            mouseTool.rectangle({
-                fillColor:'#00b0ff',
-                strokeColor:'#80d8ff'
-                //同Polygon的Option设置
-            });
-            break;
-        }
-        case 'circle':{
-            mouseTool.circle({
-                fillColor:'#00b0ff',
-                strokeColor:'#80d8ff'
-                //同Circle的Option设置
-            });
-            break;
-        }
+    } catch (error) {
+        console.error("设置绘制模式时出错:", error);
     }
 }
-var radios = document.getElementsByName('func');
-for(var i=0;i<radios.length;i+=1){
-    radios[i].onchange = function(e){
-        draw(e.target.value)
-        name = e.target.value;
-    }
-}
-// draw('marker')
 
-document.getElementById('clear').onclick = function(){
-    map.remove(overlays)
+
+// 添加一个直接获取坐标的函数
+function getOverlayCoordinate(overlay) {
+    try {
+        if (overlay instanceof BMap.Polygon) {
+            var path = overlay.getPath();
+            if (path && path.length > 0) {
+                var str = '';
+                for (var i = 0; i < path.length; i++) {
+                    str += path[i].lat + ',' + path[i].lng + ';';
+                }
+                return str.substring(0, str.length - 1);
+            }
+        } else if (overlay instanceof BMap.Circle) {
+            var center = overlay.getCenter();
+            var radius = overlay.getRadius();
+            if (center && radius) {
+                return center.lat + ',' + center.lng + ';' + radius;
+            }
+        }
+    } catch (error) {
+        console.error("获取坐标时出错:", error);
+    }
+    return '';
+}
+
+// 清除按钮事件
+document.getElementById('clear').onclick = function() {
+    map.clearOverlays();
     overlays = [];
     coordinate = '';
     objs.circle = [];
@@ -198,132 +162,125 @@
     objs.polygon = [];
     objs.polyline = [];
     closeEdit();
+    console.log("清除后的坐标:", coordinate);
 }
-document.getElementById('close').onclick = function(){
-    mouseTool.close()//关闭,并清除覆盖物
-    for(var i=0;i<radios.length;i+=1){
+
+// 关闭绘图按钮事件
+document.getElementById('close').onclick = function() {
+    drawingManager.close();
+    for (var i = 0; i < radios.length; i++) {
         radios[i].checked = false;
     }
     closeEdit();
+    console.log("关闭后的坐标:", coordinate);
 }
 
-
-//点击提交处理函数
-function submitCoordinate(){
-    var name = $('#addressName').val();
-    if('' == name){
-        Feng.error('请填写地址名称');
-        return;
-    }
-    if('' == coordinate){
-        Feng.error('请在地图上规划区域');
-        return;
-    }
-    coordinate = coordinate.substring(0, coordinate.length - 1);
-
-}
-
+// 编辑所有覆盖物
 function editAll() {
-    coordinate = '';
     editors = [];
-    //折线
-    for(var i in objs.polyline){
-        var polyline = objs.polyline[i];
-        var polyEditor = new AMap.PolyEditor(map, polyline)
-        polyEditor.on('addnode', function(event) {
-            // log.info('触发事件:addnode')
-        })
 
-        polyEditor.on('adjust', function(event) {
-            // log.info('触发事件:adjust')
-        })
-
-        polyEditor.on('removenode', function(event) {
-            // log.info('触发事件:removenode')
-        })
-
-        polyEditor.on('end', function(e) {
-            var polyline = e.target.getPath();
-            getCoordinate(polyline);
-        })
-        editors.push(polyEditor);
-        polyEditor.open();
-    }
-
-    //多边形
-    for(var i in objs.polygon){
+    // 多边形编辑
+    for (var i in objs.polygon) {
         var polygon = objs.polygon[i];
-        var polyEditor = new AMap.PolyEditor(map, polygon)
-
-        polyEditor.on('addnode', function(event) {
-            // log.info('触发事件:addnode')
-        })
-
-        polyEditor.on('adjust', function(event) {
-            // log.info('触发事件:adjust')
-        })
-
-        polyEditor.on('removenode', function(event) {
-            // log.info('触发事件:removenode')
-        })
-
-        polyEditor.on('end', function(e) {
-            var polygon = e.target.getPath();
-            getCoordinate(polygon);
-        })
-        editors.push(polyEditor);
-        polyEditor.open();
+        var polygonEditor = new BMapLib.PolygonEditor(map, polygon);
+        polygonEditor.addEventListener('drawend', function(e) {
+            var path = e.overlay.getPath();
+            var str = '';
+            for (var i = 0; i < path.length; i++) {
+                str += path[i].lat + ',' + path[i].lng + ';';
+            }
+            coordinate = str.substring(0, str.length - 1);
+            console.log("编辑后的坐标:", coordinate);
+        });
+        editors.push(polygonEditor);
+        polygonEditor.open();
     }
 
-
-    //矩形
-    for(var i in objs.rectangle){
-        var rectangle = objs.rectangle[i];
-        var rectangleEditor = new AMap.RectangleEditor(map, rectangle)
-
-        rectangleEditor.on('adjust', function(event) {
-            // log.info('触发事件:adjust')
-        })
-
-        rectangleEditor.on('end', function(e) {
-            var polygon = e.target.getPath();
-            getCoordinate(polygon);
-        })
-        editors.push(rectangleEditor);
-        rectangleEditor.open();
-    }
-
-    //圆形
-    for(var i in objs.circle){
+    // 圆形编辑
+    for (var i in objs.circle) {
         var circle = objs.circle[i];
-        var circleEditor = new AMap.CircleEditor(map, circle)
-
-        circleEditor.on('move', function(event) {
-            // log.info('触发事件:move')
-        })
-
-        circleEditor.on('adjust', function(e) {
-            var radius = e.target.getRadius();
-            if(radius > 5000){
+        var circleEditor = new BMapLib.CircleEditor(map, circle);
+        circleEditor.addEventListener('drawend', function(e) {
+            var center = e.overlay.getCenter();
+            var radius = e.overlay.getRadius();
+            if (radius > 5000) {
                 Feng.error("创建电子围栏失败,圆半径不能大于5000米");
                 return;
             }
-        })
-
-        circleEditor.on('end', function(e) {
-            var center = e.target.getCenter();
-            var radius = e.target.getRadius();
-            coordinate += center.lng + ',' + center.lat + ';' + radius + "_";
-        })
+            coordinate = center.lat + ',' + center.lng + ';' + radius;
+            console.log("编辑后的坐标:", coordinate);
+        });
         editors.push(circleEditor);
         circleEditor.open();
     }
 }
 
-
+// 关闭编辑
 function closeEdit() {
-    for(var i in editors){
-        var editor = editors[i];
-        editor.close();
+    for (var i = 0; i < editors.length; i++) {
+        editors[i].close();
     }
+    editors = [];
+}
+
+// 添加提交函数
+function submitCoordinate() {
+    console.log("提交时的坐标:", coordinate);
+    if (!coordinate || coordinate.trim() === '') {
+        Feng.error('请在地图上规划区域');
+        return false;
+    }
+    return coordinate;
+}
+
+// 测试函数
+// 修改测试函数
+function testCoordinate() {
+    console.log("当前坐标值:", coordinate);
+    console.log("当前覆盖物数量:", overlays.length);
+    console.log("多边形数量:", objs.polygon.length);
+    console.log("圆形数量:", objs.circle.length);
+
+    // 尝试从最后一个覆盖物获取坐标
+    if (overlays.length > 0) {
+        var lastOverlay = overlays[overlays.length - 1];
+        var newCoordinate = getOverlayCoordinate(lastOverlay);
+        console.log("从最后一个覆盖物获取的坐标:", newCoordinate);
+        if (newCoordinate) {
+            coordinate = newCoordinate;
+        }
+    }
+}
+
+// 绑定单选按钮事件
+var radios = document.getElementsByName('func');
+for (var i = 0; i < radios.length; i++) {
+    radios[i].onchange = function(e) {
+        draw(e.target.value);
+    }
+}
+
+// 在绘制完成后自动测试
+drawingManager.addEventListener('overlaycomplete', function(e) {
+    setTimeout(testCoordinate, 10); // 延迟1秒后测试
+});
+
+// 页面加载完成后初始化
+$(document).ready(function() {
+    // 初始化地图
+    initMap();
+
+    // 监听市区选择变化
+    $("#areaCode").change(function() {
+        console.log("市区选择变化,重新获取地图数据");
+        getMapData();
+    });
+});
+
+// 初始化地图
+function initMap() {
+    // 设置地图中心点和缩放级别
+    var point = new BMap.Point(114.329123,29.847218);
+    map.centerAndZoom(point, 15);
+    map.enableScrollWheelZoom();
 }
\ No newline at end of file

--
Gitblit v1.7.1