| | |
| | | <a-button type="primary" style="margin-left: 10px" @click="selectLu"
|
| | | >搜索</a-button
|
| | | >
|
| | | <a-button type="primary" style="margin-left: 10px" @click="clearPolygon"
|
| | | >清除绘制</a-button
|
| | | >
|
| | | </div>
|
| | | <div class="left-two">
|
| | | <a-table
|
| | |
| | | ></a-table>
|
| | | </div>
|
| | | <div class="left-three" style="margin-top: 20px">
|
| | | <a-button type="primary" style="margin-left: 10px" @click="reosurce"
|
| | | >添加路段信息</a-button
|
| | | >
|
| | | <a-button
|
| | | type="primary"
|
| | | style="margin-left: 10px"
|
| | | @click="showAllPolygon"
|
| | | >显示所有矩形</a-button
|
| | | >
|
| | | <a-button
|
| | | v-show="upa === ''"
|
| | | type="primary"
|
| | |
| | | </a-modal>
|
| | | <div class="right">
|
| | | <div id="roadmap" class="roadmap"></div>
|
| | | <ul class="drawing-panel">
|
| | | <li
|
| | | class="bmap-btn bmap-rectangle"
|
| | | @click="draw('rectangle')"
|
| | | :style="{
|
| | | 'background-position-y': actNav === 'rectangle' ? '-52px' : '0px',
|
| | | }"
|
| | | ></li>
|
| | | <li
|
| | | class="bmap-btn bmap-polygon"
|
| | | @click="draw('polygon')"
|
| | | :style="{
|
| | | 'background-position-y': actNav === 'polygon' ? '-52px' : '0px',
|
| | | }"
|
| | | ></li>
|
| | | </ul>
|
| | | </div>
|
| | | <div class="fixeds" v-show="showfix === true">
|
| | | <div style="font-size: 20px; margin-left: 50px; margin-top: 50px">
|
| | |
| | | <script lang="tsx">
|
| | | import { Component, Prop, Vue, Model, Watch } from "vue-property-decorator";
|
| | | import { get, post } from "@/util/request";
|
| | | import * as turf from "@turf/turf";
|
| | | import org from "@/util/org";
|
| | | import axios from "axios";
|
| | | import { jsonp } from "vue-jsonp";
|
| | | import any = jasmine.any;
|
| | | import { da } from "date-fns/locale";
|
| | | import { Moment } from "moment";
|
| | | import coordtransform from "coordtransform";
|
| | | @Component({
|
| | | components: {},
|
| | | })
|
| | |
| | | ];
|
| | | }
|
| | | private mounted() {
|
| | | let a = coordtransform.bd09togcj02(120.16669577, 33.35188998);
|
| | | console.log("bd09togcj02:", coordtransform.gcj02towgs84(a[0], a[1]));
|
| | | this.roadmap();
|
| | | }
|
| | | private dateFormat(fmt: string, date: any) {
|
| | |
| | | RegExp.$1,
|
| | | (date.getFullYear() + "").substr(4 - RegExp.$1.length)
|
| | | );
|
| | | for (var k in o)
|
| | | for (let k in o)
|
| | | if (new RegExp("(" + k + ")").test(fmt))
|
| | | fmt = fmt.replace(
|
| | | RegExp.$1,
|
| | |
| | | return fmt;
|
| | | }
|
| | | private map: any;
|
| | | private drawingManager: any;
|
| | | private roadmap() {
|
| | | this.map = new BMapGL.Map("roadmap");
|
| | | this.map = new BMapGL.Map("roadmap", {
|
| | | enableMapClick: false, //取消默认窗口
|
| | | });
|
| | | // 设置地图中心点和缩放级别
|
| | | var point = new BMapGL.Point(116.404, 39.915);
|
| | | let point = new BMapGL.Point(116.404, 39.915);
|
| | | this.map.centerAndZoom("苏州市", 15);
|
| | | this.map.enableScrollWheelZoom(true); // 开启鼠标滚轮,地图可以进行放大、缩小s
|
| | | this.drawingManager = new BMapGLLib.DrawingManager(this.map, {
|
| | | // isOpen: true, // 是否开启绘制模式
|
| | | enableCalculate: false, // 绘制是否进行测距测面
|
| | | enableSorption: true, // 是否开启边界吸附功能
|
| | | sorptiondistance: 20, // 边界吸附距离
|
| | | circleOptions: this.styleOptions, // 圆的样式
|
| | | polylineOptions: this.styleOptions, // 线的样式
|
| | | polygonOptions: this.styleOptions, // 多边形的样式
|
| | | rectangleOptions: this.styleOptions, // 矩形的样式
|
| | | labelOptions: this.labelOptions, // label样式
|
| | | });
|
| | | }
|
| | | private dataSource: any[] = [];
|
| | | private visibleCreateModal1: boolean = false;
|
| | |
| | |
|
| | | private opRender(text: string, record: any, index: number) {
|
| | | return (
|
| | | <div style="width:180px">
|
| | | <div style="width:180px;text-align:left">
|
| | | <a onClick={() => this.handleEditModalVisible(record)}> 编辑 </a>
|
| | | <a-divider type="vertical" />
|
| | | <a onClick={() => this.handleEditbatch(record)}> 批量添加 </a>
|
| | |
| | | >
|
| | | <a href="#">删除</a>
|
| | | </a-popconfirm>
|
| | | <br></br>
|
| | | <a onClick={() => this.canvasbatch(record)}> 绘制批量添加 </a>
|
| | | <a-divider type="vertical" />
|
| | | <a onClick={() => this.handleEditCanves(record)}> 添加矩形 </a>
|
| | | <br></br>
|
| | | <a onClick={() => this.handleShowPolygon(record)}> 显示矩形 </a>
|
| | | </div>
|
| | | );
|
| | | }
|
| | | private deleteDevice(record) {
|
| | | private deleteDevice(record: any) {
|
| | | get("coordinate/deleteCruiserRoad", {
|
| | | id: record.coordinateId,
|
| | | }).then((res) => {
|
| | |
| | | private pointshow: boolean = false;
|
| | | private batchid: any = 0;
|
| | | private batchshow: boolean = false;
|
| | | private handleEditbatch(record) {
|
| | | private handleEditbatch(record: any) {
|
| | | this.check = false;
|
| | | this.startstate = "batch";
|
| | | this.batchshow = true;
|
| | |
| | | this.endtime = "";
|
| | | }
|
| | | private insertbatch() {
|
| | | console.log("this.starttime", this.starttime);
|
| | | console.log("this.starttime", this.endtime);
|
| | | post("coordinateDetail/batch", {
|
| | | coordinateId: this.batchid,
|
| | | type: "0",
|
| | | time1: this.starttime,
|
| | | time2: this.endtime,
|
| | | coordinateId: this.batchid,
|
| | | mac: this.carvalue,
|
| | | }).then((res) => {
|
| | | console.log(res);
|
| | |
| | | // this.selectCar()
|
| | | });
|
| | | }
|
| | | // 显示所有矩形
|
| | | showAllPolygon() {
|
| | | let macType = null;
|
| | | if (this.carvalue !== "请选择走航车") {
|
| | | macType = this.carvalue;
|
| | | }
|
| | | get("coordinate/selectCruiserRoad", {
|
| | | name: "",
|
| | | mac: macType,
|
| | | }).then((res) => {
|
| | | res.data.data.forEach((item: any) => {
|
| | | if (item.bdValues) {
|
| | | let pointList = item.bdValues.map((item: any) => {
|
| | | return new BMapGL.Point(item.lng, item.lat);
|
| | | });
|
| | | let polygon = new BMapGL.Polygon([...pointList]);
|
| | | console.log("polygon", polygon);
|
| | | this.map.addOverlay(polygon);
|
| | | }
|
| | | });
|
| | | });
|
| | | }
|
| | | // 显示矩形
|
| | | handleShowPolygon(record: any) {
|
| | | console.log(record);
|
| | | if (record.bdValues) {
|
| | | let pointList = record.bdValues.map((item: any) => {
|
| | | return new BMapGL.Point(item.lng, item.lat);
|
| | | });
|
| | | let polygon = new BMapGL.Polygon([...pointList]);
|
| | | console.log("polygon", polygon);
|
| | | this.map.addOverlay(polygon);
|
| | | }
|
| | | }
|
| | | // 添加矩形
|
| | | private handleEditCanves(record: any) {
|
| | | console.log("this.turfPolygon", this.turfPolygon);
|
| | | if (this.roadbaiduPolygon.length > 0) {
|
| | | post("coordinate/updateCruiserRoad", {
|
| | | coordinateId: record.coordinateId,
|
| | | bdValue: this.roadbaiduPolygon,
|
| | | value: this.road84Polygon,
|
| | | }).then((res) => {
|
| | | this.$message.success("添加成功");
|
| | | this.selectLu();
|
| | | });
|
| | | } else {
|
| | | this.$message.warning("请绘制矩形");
|
| | | }
|
| | | }
|
| | | private canvasbatch(record: any) {
|
| | | let ptsWithin = turf.pointsWithinPolygon(this.multiPt, this.turfPolygon);
|
| | | let data: { flylon: number; flylat: number }[] = [];
|
| | | turf.coordEach(ptsWithin, (currentCoord) => {
|
| | | data.push({
|
| | | flylon: currentCoord[0],
|
| | | flylat: currentCoord[1],
|
| | | });
|
| | | });
|
| | | this.check = false;
|
| | | this.startstate = "batch";
|
| | | post("coordinateDetail/batch", {
|
| | | type: "1",
|
| | | coordinateId: record.coordinateId,
|
| | | list: data,
|
| | | mac: this.carvalue,
|
| | | }).then((res) => {
|
| | | console.log(res);
|
| | | this.$message.success(res.data.message);
|
| | | // this.selectCar()
|
| | | });
|
| | | }
|
| | | private upa = "";
|
| | | private recordid: any = 0;
|
| | | private handleEditModalVisible(record) {
|
| | | private handleEditModalVisible(record: any) {
|
| | | console.log("dataList", this.dataList);
|
| | | this.check = false;
|
| | | this.handlebatch();
|
| | |
| | | // console.log(this.carDate,'this.carDate');
|
| | | this.carDate = [];
|
| | | this.pointshow = false;
|
| | | this.map.removeOverlay();
|
| | | this.setMarker(res);
|
| | | });
|
| | | }
|
| | | reosurce() {
|
| | | console.log("this.timevalue", this.timevalue);
|
| | | post("coordinateDetail/queryAll", {
|
| | | mac: this.carvalue,
|
| | | time1: this.timevalue[0],
|
| | | time2: this.timevalue[1],
|
| | | }).then((res) => {
|
| | | console.log(res.data.data, "res");
|
| | | this.$message.success("添加成功");
|
| | | // console.log(this.carDate,'this.carDate');
|
| | | });
|
| | | }
|
| | | private markerdata: any = [];
|
| | |
| | | private endtime: any = "";
|
| | | private InfoWindow = null;
|
| | | private startstate: any = "none";
|
| | | private setMarker(res) {
|
| | | private styleOptions = {
|
| | | strokeColor: "#5E87DB", // 边线颜色
|
| | | fillColor: "#5E87DB", // 填充颜色。当参数为空时,圆形没有填充颜色
|
| | | strokeWeight: 2, // 边线宽度,以像素为单位
|
| | | strokeOpacity: 1, // 边线透明度,取值范围0-1
|
| | | fillOpacity: 0.2, // 填充透明度,取值范围0-1
|
| | | };
|
| | | private labelOptions = {
|
| | | borderRadius: "2px",
|
| | | background: "#FFFBCC",
|
| | | border: "1px solid #E1E1E1",
|
| | | color: "#703A04",
|
| | | fontSize: "12px",
|
| | | letterSpacing: "0",
|
| | | padding: "5px",
|
| | | };
|
| | | private actNav: String = "";
|
| | | private clearPolygon() {
|
| | | //得到所有overlays
|
| | | let overlays = this.map.getOverlays();
|
| | | this.drawingManager.clearOverlays();
|
| | | //判断是Marker对象还是Label对象
|
| | | overlays.forEach((overlay: any) => {
|
| | | if (overlay.toString() === "Polygon") {
|
| | | this.map.removeOverlay(overlay);
|
| | | }
|
| | | });
|
| | | // this.map.clearOverlays();
|
| | | }
|
| | | private turfPolygon: any = null;
|
| | | private roadbaiduPolygon: any = [];
|
| | | private road84Polygon: any = [];
|
| | | private draw(drawingType: String) {
|
| | | console.log("new BMapGLLib", this.drawingManager);
|
| | | this.actNav = drawingType;
|
| | | if (
|
| | | this.drawingManager._isOpen &&
|
| | | this.drawingManager.getDrawingMode() === drawingType
|
| | | ) {
|
| | | this.drawingManager.close();
|
| | | } else {
|
| | | this.drawingManager.setDrawingMode(drawingType);
|
| | | this.drawingManager.open();
|
| | | }
|
| | | // 监听矩形绘制完成事件
|
| | | this.drawingManager.addEventListener("overlaycomplete", (e: any) => {
|
| | | // 获取矩形对象
|
| | | this.actNav = "";
|
| | | const polygon = e.overlay;
|
| | | // 获取矩形的四个顶点
|
| | | const polygonPoints = polygon.getPath();
|
| | | this.roadbaiduPolygon = polygonPoints;
|
| | | let transformationPoints = polygonPoints.map((coord: any) => {
|
| | | const [x, y] = [coord.lng, coord.lat];
|
| | | const [lng1, lat1] = coordtransform.bd09togcj02(x, y);
|
| | | const [lng2, lat2] = coordtransform.gcj02towgs84(lng1, lat1);
|
| | | return { lng: lng2, lat: lat2 };
|
| | | });
|
| | |
|
| | | this.road84Polygon = transformationPoints;
|
| | | console.log("polygonPoints2", transformationPoints);
|
| | | this.turfPolygon = turf.polygon([
|
| | | transformationPoints.map((item: any) => [item.lng, item.lat]),
|
| | | ]);
|
| | | });
|
| | | }
|
| | | private multiPt: any = [];
|
| | | private setMarker(res: any) {
|
| | | const that = this;
|
| | | that.carDate = [];
|
| | | that.carDataList = [];
|
| | | for (var i = 0; i < res.data.data.rsData.length; i++) {
|
| | | let pointSlint = [];
|
| | |
|
| | | for (let i = 0; i < res.data.data.rsData.length; i++) {
|
| | | that.carDate.push(res.data.data.rsData[i]);
|
| | | pointSlint.push(res.data.data.rsData[i].data.split("_").map(Number));
|
| | | }
|
| | | for (var i = 0; i < res.data.data.data.length; i++) {
|
| | | this.multiPt = turf.points([...pointSlint]);
|
| | | for (let i = 0; i < res.data.data.data.length; i++) {
|
| | | that.carDataList.push(res.data.data.data[i]);
|
| | | }
|
| | | that.map.clearOverlays();
|
| | |
| | | if (res.status === 200) {
|
| | | for (let i = 0; i < that.carDate.length; i++) {
|
| | | //创建单个point
|
| | | var myIcon = new BMapGL.Icon(
|
| | | let myIcon = new BMapGL.Icon(
|
| | | require("@/assets/723cd95f31481a502d495b2d814d658.png"),
|
| | | new BMapGL.Size(50, 50),
|
| | | {}
|
| | | );
|
| | | var startIcon = new BMapGL.Icon(
|
| | | let startIcon = new BMapGL.Icon(
|
| | | require("@/assets/start.png"),
|
| | | new BMapGL.Size(50, 50),
|
| | | {}
|
| | | );
|
| | | var endIcon = new BMapGL.Icon(
|
| | | let endIcon = new BMapGL.Icon(
|
| | | require("@/assets/end.png"),
|
| | | new BMapGL.Size(50, 50),
|
| | | {}
|
| | |
| | | );
|
| | | bPoints.push(statePoint);
|
| | | if (i === 0) {
|
| | | that.marker[i] = new BMapGL.Marker(statePoint, { icon: startIcon });
|
| | | that.marker[i] = new BMapGL.Marker(statePoint, {
|
| | | icon: startIcon,
|
| | | });
|
| | | that.marker[i].customData = {
|
| | | data: that.carDate[i].data,
|
| | | state: that.carDate[i].state,
|
| | | };
|
| | | that.marker[i].iconPng = "startIcon";
|
| | | } else if (i === that.carDate.length - 1) {
|
| | | that.marker[i] = new BMapGL.Marker(statePoint, { icon: endIcon });
|
| | | that.marker[i] = new BMapGL.Marker(statePoint, {
|
| | | icon: endIcon,
|
| | | });
|
| | | that.marker[i].customData = {
|
| | | data: that.carDate[i].data,
|
| | | state: that.carDate[i].state,
|
| | | };
|
| | | that.marker[i].iconPng = "endIcon";
|
| | | } else {
|
| | | that.marker[i] = new BMapGL.Marker(statePoint, { icon: myIcon });
|
| | | that.marker[i] = new BMapGL.Marker(statePoint, {
|
| | | icon: myIcon,
|
| | | });
|
| | | that.marker[i].customData = {
|
| | | data: that.carDate[i].data,
|
| | | state: that.carDate[i].state,
|
| | | };
|
| | | that.marker[i].iconPng = "myIcon";
|
| | | }
|
| | | var infoWindow = "";
|
| | | let infoWindow = "";
|
| | | //that.marker[i].name = that.carDate[i].time;
|
| | | that.marker[i].on("mouseover", function(e) {
|
| | | infoWindow = new BMapGL.InfoWindow(
|
| | |
| | | for (let i = 0; i < that.carDataList.length; i++) {
|
| | | // console.log(that.carDataList[i],'that.carDataList[i]');
|
| | | //创建单个point
|
| | | var myIcon = new BMapGL.Icon(
|
| | | let myIcon = new BMapGL.Icon(
|
| | | require("@/assets/fb259ce2e368f6853a58b91d6f6b293.png"),
|
| | | new BMapGL.Size(50, 50)
|
| | | );
|
| | |
| | | // console.log(statePoint,'statePoint');
|
| | | aPoints.push(statePoint);
|
| | | //将marker保存在data函数中 后续需要使用
|
| | | that.markerdata[i] = new BMapGL.Marker(statePoint, { icon: myIcon });
|
| | | that.markerdata[i] = new BMapGL.Marker(statePoint, {
|
| | | icon: myIcon,
|
| | | });
|
| | | that.markerdata[i].customData = {
|
| | | data: that.carDataList[i].code,
|
| | | state: that.carDataList[i].state,
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | private setZoom(bPoints) {
|
| | | var view = this.map.getViewport(eval(bPoints));
|
| | | var mapZoom = view.zoom;
|
| | | var centerPoint = view.center;
|
| | | private setZoom(bPoints: any) {
|
| | | let view = this.map.getViewport(eval(bPoints));
|
| | | let mapZoom = view.zoom;
|
| | | let centerPoint = view.center;
|
| | | this.map.centerAndZoom(centerPoint, mapZoom);
|
| | | }
|
| | | private selectLuName: any = null;
|
| | | private selectLu() {
|
| | | var macType = null;
|
| | | let macType = null;
|
| | | if (this.carvalue !== "请选择走航车") {
|
| | | macType = this.carvalue;
|
| | | }
|
| | |
| | | left: 55%;
|
| | | z-index: 999;
|
| | | }
|
| | | .drawing-panel {
|
| | | z-index: 200;
|
| | | position: absolute;
|
| | | top: 10rem;
|
| | | margin-left: 2rem;
|
| | | padding-left: 0;
|
| | | border-radius: .25rem;
|
| | | height: 47px;
|
| | | box-shadow: 0 2px 6px 0 rgba(27, 142, 236, 0.5);
|
| | | }
|
| | | .bmap-btn {
|
| | | border-right: 1px solid #d2d2d2;
|
| | | float: left;
|
| | | width: 64px;
|
| | | height: 100%;
|
| | | background-image: url(
|
| | | //api.map.baidu.com/library/DrawingManager/1.4/src/bg_drawing_tool.png);
|
| | | cursor: pointer;
|
| | | list-style: none;
|
| | | padding: 0;
|
| | | }
|
| | | .drawing-panel .bmap-marker {
|
| | | background-position: -65px 0;
|
| | | }
|
| | | .drawing-panel .bmap-polyline {
|
| | | background-position: -195px 0;
|
| | | }
|
| | | .drawing-panel .bmap-rectangle {
|
| | | background-position: -325px 0;
|
| | | }
|
| | | .drawing-panel .bmap-polygon {
|
| | | background-position: -260px 0;
|
| | | }
|
| | | .drawing-panel .bmap-circle {
|
| | | background-position: -130px 0;
|
| | | }
|
| | | </style>
|