Compare commits

...

4 Commits

@ -29,13 +29,13 @@
"management-system"
],
"dependencies": {
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6",
"@babel/plugin-proposal-optional-chaining": "^7.18.9",
"@fullcalendar/core": "^6.1.4",
"@fullcalendar/daygrid": "^6.1.4",
"@fullcalendar/interaction": "^6.1.4",
"@fullcalendar/timegrid": "^6.1.4",
"@fullcalendar/vue": "^6.1.4",
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6",
"@babel/plugin-proposal-optional-chaining": "^7.18.9",
"@tinymce/tinymce-vue": "^3.2.0",
"axios": "0.18.1",
"clipboard": "2.0.4",

@ -1,3 +1,11 @@
<!--
* @Author: jevononlie 728254585@qq.com
* @Date: 2024-05-17 17:34:18
* @LastEditors: jevononlie 728254585@qq.com
* @LastEditTime: 2024-05-21 11:02:18
* @FilePath: /jnpf-web/public/index.html
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
<!DOCTYPE html>
<html>
@ -9,6 +17,9 @@
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title><%= webpackConfig.name %></title>
<script src="<%= BASE_URL %>cdn/echarts/echarts.min.js"></script>
<!-- 先在vue的index.html里面引入腾讯地图包 -->
<script charset="utf-8" src="https://map.qq.com/api/js?v=2.exp&key=U24BZ-7UECT-ZSNXI-L3GJD-GZD3E-3YFF6&libraries=drawing"></script>
<script src="https://mapapi.qq.com/web/mapComponents/geoLocation/v/geolocation.min.js"></script>
<!-- <script type="text/javascript" src="//api.map.baidu.com/api?v=2.0&ak=nYAafE0e8IXpGM0ykV3BO2k7CVRHI79Y"></script> -->
</head>

@ -1,8 +1,8 @@
/*
* @Author: 王文杰
* @Date: 2024-02-02 14:19:40
* @LastEditors: 王文杰
* @LastEditTime: 2024-02-29 14:40:37
* @LastEditors: jevononlie 728254585@qq.com
* @LastEditTime: 2024-05-21 09:35:25
* @FilePath: /jnpf-web/src/utils/apiUrl.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
@ -10,5 +10,5 @@ module.exports = {
// 开发环境接口配置
// APIURl: 'http://127.0.0.1:30000'
// 测试环境接口配置
APIURl: 'http://222.71.165.187:30000'
APIURl: 'http://192.168.0.23:30000'
}

@ -0,0 +1,257 @@
<template>
<el-dialog title="电子围栏" :close-on-click-modal="false" :visible="true" top="10vh" width="90%" append-to-body
modal-append-to-body :before-close="handleClose" class="my-dialog">
<div class="cont">
<div class="tips">
<p>1绘制鼠标左键点击及移动即可绘制图形; &nbsp;&nbsp; 2结束绘制鼠标左键双击即可结束绘制折线多边形会自动闭合圆形矩形椭圆单击即可结束;&nbsp;&nbsp;
3中断绘制过程中按下esc键可中断该过程</p>
</div>
<div id="mapFencecontainer" class="mapBox">
<div class="mapBtn">
<!-- <el-button size="small" type="danger" @click="delpolygon()"></el-button> -->
<el-button size="small" type="danger" @click="clearOverlays()"></el-button>
<el-button size="small" type="primary" @click="sendLngLat"></el-button>
<!-- <el-button size="small" type="primary" @click="sendMsg"></el-button> -->
</div>
</div>
<!-- <p>给地图绑定了点击事件当点击地图时会在点击位置显示Marker</p> -->
</div>
</el-dialog>
</template>
<script>
let map, marker, polygon, drawingManager, lngLat; //
const markersArray = []; let overlaysArray = []; // ,
let path4 = [];//
//
let arr = [{ 'lat': 34.80506482194067, 'lng': 113.59760284423828 },
{ 'lat': 34.780394716350614, 'lng': 113.59365463256836 },
{ 'lat': 34.760794345237514, 'lng': 113.58541488647461 },
{ 'lat': 34.7330074293797, 'lng': 113.58455657958984 },
{ 'lat': 34.70281206762318, 'lng': 113.61854553222656 },
{ 'lat': 34.70027176815597, 'lng': 113.62884521484375 },
{ 'lat': 34.6987193245323, 'lng': 113.63296508789062 },
{ 'lat': 34.69914272113635, 'lng': 113.63880157470703 },
{ 'lat': 34.699001589175694, 'lng': 113.64498138427734 },
{ 'lat': 34.698578191849535, 'lng': 113.68309020996094 },
{ 'lat': 34.73907339121123, 'lng': 113.68206024169922 },
{ 'lat': 34.738932327388824, 'lng': 113.6920166015625 },
{ 'lat': 34.76319176276739, 'lng': 113.69218826293945 },
{ 'lat': 34.763050740134055, 'lng': 113.70386123657227 },
{ 'lat': 34.7864571976711, 'lng': 113.70214462280273 },
{ 'lat': 34.786739162702524, 'lng': 113.68206024169922 },
{ 'lat': 34.809997957307736, 'lng': 113.68223190307617 },
{ 'lat': 34.81098454894641, 'lng': 113.64789962768555 },
{ 'lat': 34.81366238099493, 'lng': 113.62936019897461 }]; //
export default {
props: ['position'],
data() {
return {
longitude: '',
latitude: '',
lngLatData: [] //
};
},
mounted() {
this.$nextTick(() => {
this.init();
})
},
methods: {
handleClose() {
this.$emit('areaVisibleChange', false);
},
// ()
sendMsg() {
// func: this.msg:
this.$emit('areaVisibleChange', false);
},
// ()
sendLngLat() {
if (lngLat == undefined) {
lngLat = path4;
}
console.log('确认', lngLat)
},
//
init() {
const lat = this.position.lat
const lng = this.position.lng
map = new qq.maps.Map(document.getElementById('mapFencecontainer'), {
center: new qq.maps.LatLng(lat, lng), //
zoom: 13
});
//
this.addMarker(new qq.maps.LatLng(lat, lng)); //
this.markerOnly();
//
// 便
// path4 = [];
arr.forEach(item => {
path4.push(new qq.maps.LatLng(item.lat, item.lng));
});
console.log(path4);
this.showpolygon(path4);
//
this.addpolygon();
},
//
markerOnly() {
qq.maps.event.addListener(map, 'click', function (event) {
this.addMarker(event.latLng);
qq.maps.event.addListener(map, 'click', function (event) {
this.deleteOverlays(); //
marker = new qq.maps.Marker({
position: event.latLng,
map: map
});
});
var gps = event.latLng.getLat() + ',' + event.latLng.getLng(); // 便
});
},
//
addMarker(location) {
this.deleteOverlays();
var marker = new qq.maps.Marker({
position: location,
map: map
});
markersArray.push(marker);
},
//
deleteOverlays() {
if (markersArray) {
// for (i in markersArray) {
for (var i = 0; i < markersArray.length; i++) {
markersArray[i].setMap(null);
}
markersArray.length = 0;
}
if (marker !== undefined) {
marker.setMap(null);
}
},
/**
* 多边形绘制
*/
//
addpolygon() {
drawingManager = new qq.maps.drawing.DrawingManager({
drawingMode: qq.maps.drawing.OverlayType.POLYGON, //
drawingControl: true,
drawingControlOptions: {
position: qq.maps.ControlPosition.TOP_CENTER,
// drawingModes: [
// qq.maps.drawing.OverlayType.POLYGON
// ]
//
drawingModes: [
qq.maps.drawing.OverlayType.MARKER,
qq.maps.drawing.OverlayType.CIRCLE,
qq.maps.drawing.OverlayType.POLYGON,
qq.maps.drawing.OverlayType.POLYLINE,
qq.maps.drawing.OverlayType.RECTANGLE
]
},
markerOptions: {
visible: false
},
//
polygonOptions: {
editable: true,
strokeColor: new qq.maps.Color(202, 67, 58, 0.8),
fillColor: new qq.maps.Color(202, 67, 58, 0.1),
clickable: false
},
//
circleOptions: {
fillColor: new qq.maps.Color(255, 208, 70, 0.3),
strokeColor: new qq.maps.Color(88, 88, 88, 1),
strokeWeight: 3,
clickable: false
}
});
drawingManager.setMap(map);
qq.maps.event.addListener(drawingManager, 'overlaycomplete', function (event) {
// clearOverlays(overlaysArray)
lngLat = [];
overlaysArray.push(event.overlay);
for (const item of event.overlay.getPath().elems) {
const lng = item.getLng();
const lat = item.getLat();
lngLat.push({
lat: lat,
lng: lng
});
}
console.log('overlaycomplete',lngLat); //
});
},
//
showpolygon(path3) {
polygon = new qq.maps.Polygon({
map: map,
editable: true,
strokeColor: new qq.maps.Color(202, 67, 58, 0.8),
fillColor: new qq.maps.Color(202, 67, 58, 0.1)
});
polygon.setPath(path3);
},
//
delpolygon() {
const a = [];
polygon.setPath(a);
},
//
clearOverlays() {
arr = []; //
path4 = [];
polygon.setPath(path4);
if (overlaysArray) { // ifvuefor in if0
// for (i in overlaysArray) {
for (var i = 0; i < overlaysArray.length; i++) {
overlaysArray[i].setMap(null);
}
}
overlaysArray = []; //
lngLat = [];
console.log(drawingManager);
this.init();
}
}
};
</script>
<style scoped lang="scss">
>>>.el-dialog__body {
padding: 0 20px 30px;
}
.cont {
height: 680px;
position: relative;
.tips {
margin: 20px 0;
p {
line-height: 16px;
}
}
}
.mapBox {
width: 100%;
height: 90%;
position: absolute;
.mapBtn {
position: absolute;
bottom: 20px;
right: 20px;
z-index: 999;
}
}
</style>

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save