Commit cb76080e605f18b94a6158dc650a16cdb794d20d

Authored by 郭娟
1 parent 71f388df
Exists in dev

fix:优化高德地图的区域划分的功能

frontend/front/src/views/pages/regionalManage/components/regionManage.vue
@@ -32,7 +32,7 @@ @@ -32,7 +32,7 @@
32 </el-col> 32 </el-col>
33 <el-col :span="24"> 33 <el-col :span="24">
34 <el-table 34 <el-table
35 - style="width: 100%" 35 + style="width: 99%"
36 :data="tableData"> 36 :data="tableData">
37 <el-table-column 37 <el-table-column
38 type="index" 38 type="index"
@@ -110,7 +110,7 @@ @@ -110,7 +110,7 @@
110 </el-input> 110 </el-input>
111 </el-form-item> 111 </el-form-item>
112 <el-form-item> 112 <el-form-item>
113 - <el-button :class="[dialogParams.fShape == '三角形'?'clickBtn':'','btn']" @click="draw('polygon','三角形')" style="margin-bottom: 5px">绘制多边形</el-button> 113 + <el-button :class="[dialogParams.fShape == '多边形'?'clickBtn':'','btn']" @click="draw('polygon','多边形')" style="margin-bottom: 5px">绘制多边形</el-button>
114 <el-button :class="[dialogParams.fShape == '矩形'?'clickBtn':'','btn']" @click="draw('rectangle','矩形')" style="margin-bottom: 5px">绘制矩形</el-button> 114 <el-button :class="[dialogParams.fShape == '矩形'?'clickBtn':'','btn']" @click="draw('rectangle','矩形')" style="margin-bottom: 5px">绘制矩形</el-button>
115 <el-button :class="[dialogParams.fShape == '圆形'?'clickBtn':'','btn']" @click="draw('circle','圆形')" style="margin-bottom: 5px">绘制圆形</el-button> 115 <el-button :class="[dialogParams.fShape == '圆形'?'clickBtn':'','btn']" @click="draw('circle','圆形')" style="margin-bottom: 5px">绘制圆形</el-button>
116 <el-button @click="closeDraw" v-if="dialogParams.dialogType == 'edit'" style="margin-bottom: 5px">结束编辑</el-button> 116 <el-button @click="closeDraw" v-if="dialogParams.dialogType == 'edit'" style="margin-bottom: 5px">结束编辑</el-button>
@@ -182,6 +182,9 @@ export default { @@ -182,6 +182,9 @@ export default {
182 dialogType:'', 182 dialogType:'',
183 regionalType:'', 183 regionalType:'',
184 regionalName:'', 184 regionalName:'',
  185 + rectangleNothPoint:[],
  186 + rectangleSouthPoint:[],
  187 + polygonPoint:[],//多边形坐标点
185 centerOfCircle:[],//圆形中心点坐标 188 centerOfCircle:[],//圆形中心点坐标
186 }, 189 },
187 polygon: null, 190 polygon: null,
@@ -225,8 +228,17 @@ export default { @@ -225,8 +228,17 @@ export default {
225 this.dialogParams.fShape = fShape; 228 this.dialogParams.fShape = fShape;
226 console.log('打印fBoundary',JSON.parse(fBoundary)); 229 console.log('打印fBoundary',JSON.parse(fBoundary));
227 this.dialogParams.centerOfCircle = centerOfCircle?centerOfCircle.split(','):[]; 230 this.dialogParams.centerOfCircle = centerOfCircle?centerOfCircle.split(','):[];
228 - if(this.dialogParams.fShape == '圆形'){  
229 - 231 + let pointfBoundary = JSON.parse(fBoundary).coordinates;
  232 + if(this.dialogParams.fShape == '矩形'){
  233 + this.dialogParams.rectangleNothPoint =pointfBoundary[0][0];
  234 + this.dialogParams.rectangleSouthPoint = pointfBoundary[0][2];
  235 + // console.log('打印this.dialogParams.rectangleNothPoint ',this.dialogParams.rectangleNothPoint ,this.dialogParams.rectangleSouthPoint )
  236 + }else if(this.dialogParams.fShape == '多边形'){
  237 + console.log('pointfBoundary',pointfBoundary[0])
  238 + let array = pointfBoundary.pop();
  239 + console.log('打印array',array);
  240 + this.dialogParams.polygonPoint = array;
  241 + console.log('打印this.this.dialogParams.polygonPoint ',this.dialogParams.polygonPoint );
230 } 242 }
231 243
232 }) 244 })
@@ -392,8 +404,8 @@ export default { @@ -392,8 +404,8 @@ export default {
392 }); 404 });
393 this.mapEditor = new AMap.CircleEditor(this.map, editShap); 405 this.mapEditor = new AMap.CircleEditor(this.map, editShap);
394 }else if(this.dialogParams.fShape == '矩形'){ 406 }else if(this.dialogParams.fShape == '矩形'){
395 - var southWest = new AMap.LngLat(116.356449, 39.859008)  
396 - var northEast = new AMap.LngLat(116.417901, 39.893797) 407 + var southWest = new AMap.LngLat(this.dialogParams.rectangleSouthPoint[0], this.dialogParams.rectangleSouthPoint[1])
  408 + var northEast = new AMap.LngLat(this.dialogParams.rectangleNothPoint[0], this.dialogParams.rectangleNothPoint[1])
397 var bounds = new AMap.Bounds(southWest, northEast) 409 var bounds = new AMap.Bounds(southWest, northEast)
398 editShap = new AMap.Rectangle({ 410 editShap = new AMap.Rectangle({
399 bounds: bounds, 411 bounds: bounds,
@@ -410,6 +422,17 @@ export default { @@ -410,6 +422,17 @@ export default {
410 zIndex:50, 422 zIndex:50,
411 }); 423 });
412 this.mapEditor = new AMap.RectangleEditor(this.map, editShap); 424 this.mapEditor = new AMap.RectangleEditor(this.map, editShap);
  425 + }else {
  426 + editShap = new AMap.Polygon({
  427 + path: this.dialogParams.polygonPoint,
  428 + strokeColor: "#FF33FF",
  429 + strokeWeight: 6,
  430 + strokeOpacity: 0.2,
  431 + fillOpacity: 0.4,
  432 + fillColor: '#1791fc',
  433 + zIndex: 50,
  434 + });
  435 + this.mapEditor = new AMap.PolyEditor(this.map, editShap);
413 } 436 }
414 editShap.setMap(this.map); 437 editShap.setMap(this.map);
415 // 缩放地图到合适的视野级别 438 // 缩放地图到合适的视野级别
@@ -470,135 +493,6 @@ export default { @@ -470,135 +493,6 @@ export default {
470 } 493 }
471 } 494 }
472 }, 495 },
473 - //绘制多边形  
474 - drawPolygon () {  
475 - if(this.overlays.length>0){  
476 - this.map.remove(this.overlays);  
477 - this.map.clearMap();  
478 - //关闭绘画  
479 - this.mouseTool.close(true);  
480 - this.overlays = [];  
481 - return  
482 - }  
483 - this.mouseTool.polygon({  
484 - fillColor:'#00b0ff',  
485 - strokeColor:'#80d8ff',  
486 - // strokeOpacity: 1,  
487 - strokeWeight: 6,  
488 - strokeOpacity: 0.2,  
489 - fillOpacity: 0.4,  
490 - // 线样式还支持 'dashed'  
491 - strokeStyle: "solid",  
492 - // strokeStyle是dashed时有效  
493 - // strokeDasharray: [30,10],  
494 - });  
495 - let that = this;  
496 - this.mouseTool.on('draw', function(event) {  
497 - if(that.overlays.length>1){  
498 - console.log('打印this.overlays',that.overlays,that.mouseTool);  
499 - that.map.remove(that.overlays);  
500 - //关闭绘画  
501 - // that.mouseTool.close(true);  
502 - that.overlays = [];  
503 - }  
504 - let geoJSON = event.obj.getPath(); // 获取矢量图形的坐标数组  
505 - that.overlays.push(event.obj);  
506 - console.log('打印geoJson',geoJSON,that.overlays);  
507 - // // 为矢量图形设置唯一标识和zIndex  
508 - // console.log('覆盖物对象绘制完成',event.obj);  
509 - // event.obj.setExtData({ uniqueId: 'id_' + new Date().getTime() });  
510 - // event.obj.setOptions({ zIndex: 100 });  
511 -  
512 - // 其他矢量图形处理逻辑...  
513 - // event.obj 为绘制出来的覆盖物对象  
514 - });  
515 - },  
516 - //绘制圆形  
517 - drawCircle () {  
518 - if(this.overlays.length>0){  
519 - this.map.remove(this.overlays);  
520 - //清除原来的电子围栏  
521 - this.map.clearMap();  
522 - //关闭绘画  
523 - this.mouseTool.close(true);  
524 - this.overlays = [];  
525 - return  
526 - }  
527 - console.log('打印this.overlays====>圆形',this.overlays)  
528 - this.mouseTool.circle({  
529 - // strokeOpacity: 1,  
530 - strokeWeight: 6,  
531 - strokeOpacity: 0.2,  
532 - fillColor:'#00b0ff',  
533 - strokeColor:'#80d8ff',  
534 - fillOpacity: 0.4,  
535 - strokeStyle: 'solid',  
536 - // 线样式还支持 'dashed'  
537 - // strokeDasharray: [30,10],  
538 - })  
539 - let that = this;  
540 - this.mouseTool.on('draw', function(event) {  
541 - if(that.overlays.length>0){  
542 - // console.log('打印this.overlays',that.overlays,that.mouseTool);  
543 - that.map.remove(that.overlays);  
544 - //关闭绘画  
545 - that.mouseTool.close(true);  
546 - that.overlays = [];  
547 - return  
548 - }  
549 - let geoJSON = event.obj.getPath(); // 获取矢量图形的坐标数组  
550 - that.overlays.push(event.obj);  
551 - // // 为矢量图形设置唯一标识和zIndex  
552 - // event.obj.setExtData({ uniqueId: 'id_' + new Date().getTime() });  
553 - // event.obj.setOptions({ zIndex: 100 });  
554 -  
555 - // 其他矢量图形处理逻辑...  
556 - // event.obj 为绘制出来的覆盖物对象  
557 - console.log('覆盖物对象开始绘制====》圆形',event.obj,that.overlays);  
558 - });  
559 - },  
560 - //绘制矩形  
561 - drawRectangle () {  
562 - if(this.overlays.length>0){  
563 - this.map.remove(this.overlays);  
564 - //关闭绘画  
565 - this.mouseTool.close(true);  
566 - //清除原来的电子围栏  
567 - this.map.clearMap();  
568 - this.overlays = [];  
569 - return  
570 - }  
571 - console.log('打印矩形=====》',this.overlays,this.mouseTool);  
572 - this.mouseTool.rectangle({  
573 - strokeOpacity:0.5,  
574 - strokeWeight: 6,  
575 - fillColor:'#00b0ff',  
576 - strokeColor:'#80d8ff',  
577 - fillOpacity:0.5,  
578 - // strokeStyle还支持 solid  
579 - strokeStyle: 'solid',  
580 - // strokeDasharray: [30,10],  
581 - })  
582 - let that = this;  
583 - this.mouseTool.on('draw', function(event) {  
584 - if(that.overlays.length>0){  
585 - console.log('打印this.overlays',that.overlays,that.mouseTool);  
586 - that.map.remove(that.overlays);  
587 - //关闭绘画  
588 - that.mouseTool.close(true);  
589 - that.overlays = [];  
590 - return  
591 - }  
592 - let geoJSON = event.obj.getPath(); // 获取矢量图形的坐标数组  
593 - that.overlays.push(event.obj);  
594 - // 为矢量图形设置唯一标识和zIndex  
595 - // event.obj.setExtData({ uniqueId: 'id_' + new Date().getTime() });  
596 - // event.obj.setOptions({ zIndex: 100 });  
597 - // 其他矢量图形处理逻辑...  
598 - // event.obj 为绘制出来的覆盖物对象  
599 - console.log('覆盖物对象绘制完成=====>矩形',event,that.overlays)  
600 - });  
601 - },  
602 //提交事件 496 //提交事件
603 async handleSubmit(formName){ 497 async handleSubmit(formName){
604 this.$refs[formName].validate(async (valid) => { 498 this.$refs[formName].validate(async (valid) => {
@@ -620,7 +514,7 @@ export default { @@ -620,7 +514,7 @@ export default {
620 let params= { 514 let params= {
621 id:this.dialogParams.id, 515 id:this.dialogParams.id,
622 fName: this.dialogParams.regionalName, 516 fName: this.dialogParams.regionalName,
623 - fSsczid: this.rowData.fSsczid, 517 + fSsczid: this.dialogParams.fSsczid,
624 fRegionalType: this.dialogParams.regionalType, 518 fRegionalType: this.dialogParams.regionalType,
625 fShape: this.dialogParams.fShape, 519 fShape: this.dialogParams.fShape,
626 fRemark:this.dialogParams.fRemark, 520 fRemark:this.dialogParams.fRemark,
@@ -668,10 +562,21 @@ export default { @@ -668,10 +562,21 @@ export default {
668 this.dialogParams.dialogType= type; 562 this.dialogParams.dialogType= type;
669 switch (type){ 563 switch (type){
670 case 'add': 564 case 'add':
  565 + this.dialogParams.fSsczid = this.rowData.fSsczid;
671 this.dialogParams.id =''; 566 this.dialogParams.id ='';
  567 + this.dialogParams.radius = '';
  568 + this.dialogParams.fShape = '';
  569 + this.dialogParams.fRemark = '';
  570 + this.dialogParams.regionalType ='';
  571 + this.dialogParams.regionalName ='';
  572 + this.dialogParams.rectangleNothPoint =[];
  573 + this.dialogParams.rectangleSouthPoint=[];
  574 + this.dialogParams.polygonPoint = [];//多边形坐标点
  575 + this.dialogParams.centerOfCircle = [];//圆形中心点坐标
672 this.dialogParams.title='新增区域'; 576 this.dialogParams.title='新增区域';
673 break; 577 break;
674 case 'edit': 578 case 'edit':
  579 + this.dialogParams.fSsczid = row.f_ssczid;
675 this.dialogParams.id = row.id_; 580 this.dialogParams.id = row.id_;
676 this.dialogParams.title='编辑区域'; 581 this.dialogParams.title='编辑区域';
677 this.getRegionDetailInfoData(row.id_); 582 this.getRegionDetailInfoData(row.id_);