| | |
| | | * @LastEditTime: 2021-04-24 11:59:43 |
| | | --> |
| | | <template> |
| | | <div id="map"> |
| | | <div class="controlMap"> |
| | | <el-button-group v-if="false"> |
| | | <el-button |
| | | type="primary" |
| | | icon="el-icon-finished" |
| | | @click="openDrawLineMethod" |
| | | :class="[ |
| | | <div id="map"> |
| | | <div class="controlMap"> |
| | | <el-button-group v-if="false"> |
| | | <el-button |
| | | type="primary" |
| | | icon="el-icon-finished" |
| | | @click="openDrawLineMethod" |
| | | :class="[ |
| | | 'openDrawsb', |
| | | openDrawChiose == 'openDrawLine' ? 'activeDraw' : '', |
| | | ]" |
| | | >规划路线</el-button |
| | | > |
| | | <el-button |
| | | type="primary" |
| | | @click="openDrawPointMethod" |
| | | icon="el-icon-coordinate" |
| | | :class="[ |
| | | >规划路线</el-button> |
| | | <el-button |
| | | type="primary" |
| | | @click="openDrawPointMethod" |
| | | icon="el-icon-coordinate" |
| | | :class="[ |
| | | 'openDrawsb', |
| | | openDrawChiose == 'openDrawPoint' ? 'activeDraw' : '', |
| | | ]" |
| | | >规划标点</el-button |
| | | > |
| | | </el-button-group> |
| | | <div id="openTitle" style="display: none">当前选择:{{ openTitle }}</div> |
| | | <el-button-group id="openDrawLine" style="display: none"> |
| | | <el-button |
| | | type="primary" |
| | | icon="el-icon-edit" |
| | | @click="getTypeSelected" |
| | | :disabled="beginDraw" |
| | | >{{ butTitle }}</el-button |
| | | > |
| | | <el-button type="primary" @click="stopDrawOur" icon="el-icon-delete" |
| | | >取消</el-button |
| | | > |
| | | </el-button-group> |
| | | <el-button-group id="openDrawPoint" style="display: none"> |
| | | <el-button |
| | | type="primary" |
| | | icon="el-icon-edit" |
| | | @click="getTypeSelectedPoint" |
| | | :disabled="beginDraw" |
| | | >{{ butTitlePoint }}</el-button |
| | | > |
| | | <el-button type="primary" @click="stopDrawOur" icon="el-icon-delete" |
| | | >取消</el-button |
| | | > |
| | | </el-button-group> |
| | | >规划标点</el-button> |
| | | </el-button-group> |
| | | <div id="openTitle" style="display: none">当前选择:{{ openTitle }}</div> |
| | | <el-button-group id="openDrawLine" style="display: none"> |
| | | <el-button |
| | | type="primary" |
| | | icon="el-icon-edit" |
| | | @click="getTypeSelected" |
| | | :disabled="beginDraw" |
| | | >{{ butTitle }}</el-button> |
| | | <el-button type="primary" @click="stopDrawOur" icon="el-icon-delete">取消</el-button> |
| | | </el-button-group> |
| | | <el-button-group id="openDrawPoint" style="display: none"> |
| | | <el-button |
| | | type="primary" |
| | | icon="el-icon-edit" |
| | | @click="getTypeSelectedPoint" |
| | | :disabled="beginDraw" |
| | | >{{ butTitlePoint }}</el-button> |
| | | <el-button type="primary" @click="stopDrawOur" icon="el-icon-delete">取消</el-button> |
| | | </el-button-group> |
| | | </div> |
| | | <el-button-group id="dataConfirm" style="display: none"> |
| | | <el-button type="success" icon="el-icon-check" @click="useMapData">确定选择</el-button> |
| | | <!-- v-show="notNow" --> |
| | | <el-button type="danger" @click="clearUseMapData" icon="el-icon-refresh-right">清空</el-button> |
| | | </el-button-group> |
| | | <tip v-show="showTip" :title="tipTitle" :position="position"></tip> |
| | | </div> |
| | | <el-button-group id="dataConfirm" style="display: none"> |
| | | <el-button type="success" icon="el-icon-check" @click="useMapData" |
| | | >确定选择</el-button |
| | | > |
| | | <!-- v-show="notNow" --> |
| | | <el-button |
| | | type="danger" |
| | | @click="clearUseMapData" |
| | | icon="el-icon-refresh-right" |
| | | >清空</el-button |
| | | > |
| | | </el-button-group> |
| | | <tip v-show="showTip" :title="tipTitle" :position="position"></tip> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | import OLCesium from "olcs/OLCesium.js"; |
| | | import "ol/ol.css"; |
| | | import OlView from "ol/View.js"; |
| | | import XYZ from "ol/source/XYZ"; |
| | | import OlLayerTile from "ol/layer/Tile.js"; |
| | | import OlMap from "ol/Map.js"; |
| | | import tip from "./tip.vue"; |
| | | import OLCesium from "olcs/OLCesium.js" |
| | | import "ol/ol.css" |
| | | import OlView from "ol/View.js" |
| | | import XYZ from "ol/source/XYZ" |
| | | import OlLayerTile from "ol/layer/Tile.js" |
| | | import OlMap from "ol/Map.js" |
| | | import tip from "./tip.vue" |
| | | import { |
| | | // eslint-disable-next-line no-unused-vars |
| | | defaults as OlControlDefaults, |
| | | defaults, |
| | | // 全屏控件 |
| | | FullScreen, |
| | | // 比例尺控件 |
| | | ScaleLine, |
| | | // 缩放滚动条控件 |
| | | // eslint-disable-next-line no-unused-vars |
| | | ZoomSlider, |
| | | // 鼠标位置控件 |
| | | // eslint-disable-next-line no-unused-vars |
| | | MousePosition, |
| | | // -地图属性控件 |
| | | Attribution, |
| | | // 鹰眼控件 |
| | | // eslint-disable-next-line no-unused-vars |
| | | OverviewMap, |
| | | // 缩放到范围控件 |
| | | // eslint-disable-next-line no-unused-vars |
| | | ZoomToExtent, |
| | | Rotate, |
| | | } from "ol/control.js"; |
| | | // eslint-disable-next-line no-unused-vars |
| | | defaults as OlControlDefaults, |
| | | defaults, |
| | | // 全屏控件 |
| | | FullScreen, |
| | | // 比例尺控件 |
| | | ScaleLine, |
| | | // 缩放滚动条控件 |
| | | // eslint-disable-next-line no-unused-vars |
| | | ZoomSlider, |
| | | // 鼠标位置控件 |
| | | // eslint-disable-next-line no-unused-vars |
| | | MousePosition, |
| | | // -地图属性控件 |
| | | Attribution, |
| | | // 鹰眼控件 |
| | | // eslint-disable-next-line no-unused-vars |
| | | OverviewMap, |
| | | // 缩放到范围控件 |
| | | // eslint-disable-next-line no-unused-vars |
| | | ZoomToExtent, |
| | | Rotate, |
| | | } from "ol/control.js" |
| | | |
| | | import VectorLayer from "ol/layer/Vector"; |
| | | import VectorSource from "ol/source/Vector"; |
| | | import VectorLayer from "ol/layer/Vector" |
| | | import VectorSource from "ol/source/Vector" |
| | | |
| | | import { OSM, TileWMS, Vector } from "ol/source"; |
| | | import { OSM, TileWMS, Vector } from "ol/source" |
| | | // import Draw from "ol/interaction/Draw"; |
| | | import Draw from "./Draw"; |
| | | import Draw from "./Draw" |
| | | |
| | | import Feature from "ol/Feature.js"; |
| | | import Point from "ol/geom/Point.js"; |
| | | import LineString from "ol/geom/LineString.js"; |
| | | import { Icon, Style, Fill, Stroke } from "ol/style.js"; |
| | | import Feature from "ol/Feature.js" |
| | | import Point from "ol/geom/Point.js" |
| | | import LineString from "ol/geom/LineString.js" |
| | | import { Icon, Style, Fill, Stroke } from "ol/style.js" |
| | | |
| | | // import drawFence from "./drawFence"; |
| | | |
| | | import OlFeature from "ol/Feature"; |
| | | import OlGeomPoint from "ol/geom/Point"; |
| | | import OlFeature from "ol/Feature" |
| | | import OlGeomPoint from "ol/geom/Point" |
| | | // import OlLayerVector from "ol/layer/Vector"; |
| | | // import OlSourceVector from "ol/source/Vector"; |
| | | import OlStyleStyle from "ol/style/Style"; |
| | | import OlStyleIcon from "ol/style/Icon"; |
| | | import OlStyleStyle from "ol/style/Style" |
| | | import OlStyleIcon from "ol/style/Icon" |
| | | // // 用来添加相关文字描述的 |
| | | import OlStyleText from "ol/style/Text"; |
| | | import OlStyleFill from "ol/style/Fill"; |
| | | import OlStyleText from "ol/style/Text" |
| | | import OlStyleFill from "ol/style/Fill" |
| | | // import Cesium from "libs/Cesium/Cesium.js"; |
| | | |
| | | export default { |
| | | name: "MapInThere", |
| | | components: { |
| | | tip, |
| | | }, |
| | | data() { |
| | | return { |
| | | gunAddlayer: new VectorLayer({ |
| | | // 图标图层 |
| | | zIndex: 22, |
| | | source: new VectorSource(), |
| | | }), |
| | | peopleAddlayer: new VectorLayer({ |
| | | // 图标图层 |
| | | zIndex: 22, |
| | | source: new VectorSource(), |
| | | }), |
| | | carAddlayer: new VectorLayer({ |
| | | // 图标图层 |
| | | zIndex: 22, |
| | | source: new VectorSource(), |
| | | }), |
| | | // peopleLineAddlayer: new VectorLayer({ |
| | | // // 图标图层 |
| | | // zIndex: 22, |
| | | // source: new VectorSource(), |
| | | // }), |
| | | beginsPoint: new VectorLayer({ |
| | | // 图标图层 |
| | | zIndex: 22, |
| | | source: new VectorSource(), |
| | | }), |
| | | DrawLayer: new VectorLayer({ |
| | | // 图标图层 |
| | | // zIndex: 1000, |
| | | source: new VectorSource(), |
| | | }), |
| | | peopleLineAddlayer: null, |
| | | |
| | | // 存储新增点,线,面,数据的地方 |
| | | // polygonData: [], |
| | | // polygonFlag: false, |
| | | // editToolbar: null, |
| | | // addPolygonEntitys: null, |
| | | |
| | | typeSelected: "LineString", |
| | | // drawLayer: null, |
| | | draw: null, |
| | | coordinates: [], |
| | | coordinatesStr: "", |
| | | beginDraw: false, |
| | | butTitle: "开始绘画", |
| | | view: "", |
| | | // map: null, |
| | | |
| | | showTip: false, |
| | | tipTitle: "", |
| | | position: { |
| | | w: 200, |
| | | h: 10, |
| | | }, |
| | | // openDrawChiose: "", //openDrawPoint openDrawLine |
| | | openDrawLine: false, |
| | | openDrawPoint: false, |
| | | |
| | | butTitlePoint: "选择标点", |
| | | olLayer: null, //点图层 |
| | | |
| | | nowIndex: "", //返回第几个 |
| | | |
| | | fromView: false, //若是查看 不显示更改按钮 |
| | | |
| | | openTitle: "", //当前选择 |
| | | |
| | | ourDatas: [], //所有数据 |
| | | ourLayer: {}, //图层合集 |
| | | |
| | | notNow: true, //如果修改,不显示确认按钮 |
| | | }; |
| | | }, |
| | | computed: { |
| | | openDrawChiose() { |
| | | // console.log( |
| | | // "this.openDrawLine:", |
| | | // this.openDrawLine, |
| | | // "this.openDrawPoint:", |
| | | // this.openDrawPoint |
| | | // ); |
| | | if (this.openDrawLine) { |
| | | return "openDrawLine"; |
| | | } else if (this.openDrawPoint) { |
| | | return "openDrawPoint"; |
| | | } else { |
| | | return "notBut---"; |
| | | } |
| | | name: "MapInThere", |
| | | components: { |
| | | tip, |
| | | }, |
| | | }, |
| | | // watch: { |
| | | // openDrawChiose() { |
| | | // console.log(this.openDrawChiose, "openDrawChiose"); |
| | | // }, |
| | | // }, |
| | | mounted() { |
| | | const ol2d = new OlMap({ |
| | | layers: [ |
| | | // new OlLayerTile({ |
| | | // zIndex: 4, |
| | | // title: "影像", |
| | | // source: new XYZ({ |
| | | // url: "https://webmap-tile.sf-express.com/MapTileService/rt?fetchtype=static&x={x}&y={y}&z={z}&project=sfmap&pic_size=256&pic_type=png8&data_name=361100&data_format=merged-dat&data_type=normal", // 行政区划 |
| | | // }), |
| | | // }), |
| | | // new OlLayerTile({ |
| | | // zIndex: 5, |
| | | // title: "道路+中文注记", |
| | | // source: new XYZ({ |
| | | // url: "http://t3.tianditu.com/DataServer?T=cva_w&x={x}&y={y}&l={z}&tk=e9533f5acb2ac470b07f406a4d24b4f0", // 注记 |
| | | // }), |
| | | // }), |
| | | new OlLayerTile({ |
| | | zIndex: 4, |
| | | title: "矢量", |
| | | source: new XYZ({ |
| | | url: "http://t3.tianditu.com/DataServer?T=vec_w&x={x}&y={y}&l={z}&tk=e9533f5acb2ac470b07f406a4d24b4f0", // 行政区划 |
| | | // url: "/localData/sl/{z}/{x}/{y}.png", |
| | | tileUrlFunction: function (tileCoord) { |
| | | var z = tileCoord[0]; |
| | | var x = tileCoord[1]; |
| | | var y = Math.pow(2, z) + tileCoord[2]; |
| | | return "../assets/sl/" + z + "/" + x + "/" + y + ".png"; |
| | | data () { |
| | | return { |
| | | gunAddlayer: new VectorLayer({ |
| | | // 图标图层 |
| | | zIndex: 22, |
| | | source: new VectorSource(), |
| | | }), |
| | | peopleAddlayer: new VectorLayer({ |
| | | // 图标图层 |
| | | zIndex: 22, |
| | | source: new VectorSource(), |
| | | }), |
| | | carAddlayer: new VectorLayer({ |
| | | // 图标图层 |
| | | zIndex: 22, |
| | | source: new VectorSource(), |
| | | }), |
| | | // peopleLineAddlayer: new VectorLayer({ |
| | | // // 图标图层 |
| | | // zIndex: 22, |
| | | // source: new VectorSource(), |
| | | // }), |
| | | beginsPoint: new VectorLayer({ |
| | | // 图标图层 |
| | | zIndex: 22, |
| | | source: new VectorSource(), |
| | | }), |
| | | DrawLayer: new VectorLayer({ |
| | | // 图标图层 |
| | | // zIndex: 1000, |
| | | source: new VectorSource(), |
| | | }), |
| | | peopleLineAddlayer: null, |
| | | |
| | | // 存储新增点,线,面,数据的地方 |
| | | // polygonData: [], |
| | | // polygonFlag: false, |
| | | // editToolbar: null, |
| | | // addPolygonEntitys: null, |
| | | |
| | | typeSelected: "LineString", |
| | | // drawLayer: null, |
| | | draw: null, |
| | | coordinates: [], |
| | | coordinatesStr: "", |
| | | beginDraw: false, |
| | | butTitle: "开始绘画", |
| | | view: "", |
| | | // map: null, |
| | | |
| | | showTip: false, |
| | | tipTitle: "", |
| | | position: { |
| | | w: 200, |
| | | h: 10, |
| | | }, |
| | | }), |
| | | }), |
| | | new OlLayerTile({ |
| | | zIndex: 5, |
| | | title: "中文注记", |
| | | source: new XYZ({ |
| | | url: "http://t3.tianditu.com/DataServer?T=cva_w&x={x}&y={y}&l={z}&tk=e9533f5acb2ac470b07f406a4d24b4f0", // 注记 |
| | | }), |
| | | }), |
| | | ], |
| | | // openDrawChiose: "", //openDrawPoint openDrawLine |
| | | openDrawLine: false, |
| | | openDrawPoint: false, |
| | | |
| | | // 注意地图控件的写法 |
| | | controls: defaults().extend([ |
| | | // new FullScreen(), |
| | | // new ScaleLine(), |
| | | // new MousePosition(), |
| | | // new Rotate(), |
| | | // new Attribution() |
| | | ]), |
| | | target: "map", |
| | | view: new OlView({ |
| | | center: [0, 0], |
| | | zoom: 2, |
| | | projection: "EPSG:4326", |
| | | }), |
| | | }); |
| | | window.ol2d = ol2d; |
| | | butTitlePoint: "选择标点", |
| | | olLayer: null, //点图层 |
| | | |
| | | var view = ol2d.getView(); |
| | | nowIndex: "", //返回第几个 |
| | | |
| | | // let provider = new Cesium.UrlTemplateImageryProvider({ |
| | | // url: "/wp/{z}/{x}/{y}.png", |
| | | // fileExtension: "png", |
| | | // }); |
| | | // view.imageryLayers.addImageryProvider(provider); |
| | | fromView: false, //若是查看 不显示更改按钮 |
| | | |
| | | // view.setCenter([115.85883507433789, 28.708432053474827]) |
| | | view.setCenter([114.03858862, 27.63088262]); |
| | | openTitle: "", //当前选择 |
| | | |
| | | // |
| | | view.setZoom(18); |
| | | this.view = view; |
| | | const ol3d = new OLCesium({ map: window.ol2d }); |
| | | window.ol3d = ol3d; |
| | | ourDatas: [], //所有数据 |
| | | ourLayer: {}, //图层合集 |
| | | |
| | | // ol2d.addLayer(this.gunAddlayer); |
| | | // ol2d.addLayer(this.peopleAddlayer); |
| | | // ol2d.addLayer(this.carAddlayer); |
| | | // ol2d.addLayer(this.peopleLineAddlayer); |
| | | // ol2d.addLayer(this.beginsPoint); |
| | | }, |
| | | methods: { |
| | | clearUseMapData() { |
| | | if (this.openDrawPoint) { |
| | | this.$store.commit("setPointData", ""); //用vuex清空最终数据 |
| | | } else if (this.openDrawLine) { |
| | | this.$store.commit("setRotesData", ""); //用vuex清空最终数据 |
| | | } |
| | | this.useMapData(); |
| | | }, |
| | | onceOnlodad(ourDatas) { |
| | | this.ourDatas = ourDatas; |
| | | this.Renders(ourDatas); |
| | | }, |
| | | //加载底层路线和图标 |
| | | Renders(ourDatas) { |
| | | // for (let i in ourDatas) { |
| | | // console.log(ourDatas[i].value, "------", i); |
| | | // } |
| | | this.deleteElement(); |
| | | for (let k in ourDatas) { |
| | | if (ourDatas[k].isLine) { |
| | | if (!ourDatas[k].value) { |
| | | // this.deleteElement("line", ourDatas[k].id); |
| | | } else { |
| | | this.addLines(ourDatas[k], "line"); |
| | | } |
| | | } else { |
| | | if (!ourDatas[k].value) { |
| | | // this.deleteElement("point", ourDatas[k].id); |
| | | } else { |
| | | this.addPoint(ourDatas[k], "point"); |
| | | } |
| | | notNow: true, //如果修改,不显示确认按钮 |
| | | } |
| | | } |
| | | this.drawLayerRoom(); //重置绘画层 |
| | | }, |
| | | // 若没有value数据,删除地图上的元素 |
| | | deleteElement(name, id) { |
| | | // console.log(name, id); |
| | | // this.ourLayer[name + id].getSource().clear(); |
| | | for (let k in this.ourLayer) { |
| | | this.ourLayer[k].getSource().clear(); |
| | | } |
| | | }, |
| | | //加载点 |
| | | addPoint(data, name) { |
| | | //创建图层 |
| | | let layer = new VectorLayer({ |
| | | zIndex: 22, |
| | | source: new VectorSource(), |
| | | }), |
| | | iconFeature = new OlFeature({ |
| | | geometry: new OlGeomPoint(data.value), //绘制图形(点) |
| | | }), |
| | | iconFeatureTitle = new OlFeature({ |
| | | geometry: new OlGeomPoint(data.value), //绘制图形(点) |
| | | }), |
| | | that = this; |
| | | iconFeature.setStyle( |
| | | new OlStyleStyle({ |
| | | image: new OlStyleIcon({ |
| | | scale: 0.5, |
| | | offset: [0, 5], |
| | | offsetOrigin: "bottom", |
| | | src: "img/dingwei/dingwei5.png", |
| | | }), |
| | | }) |
| | | ); |
| | | iconFeatureTitle.setStyle( |
| | | new OlStyleStyle({ |
| | | text: new OlStyleText({ |
| | | text: data.name, |
| | | font: "14px sans-serif", // CSS 字体设置 |
| | | scale: 1, //比例 |
| | | offsetY: -40, |
| | | fill: new OlStyleFill({ |
| | | color: "#1296DB", |
| | | }), |
| | | }), |
| | | }) |
| | | ); |
| | | layer.getSource().addFeature(iconFeature); |
| | | layer.getSource().addFeature(iconFeatureTitle); |
| | | //保存图层 |
| | | this.ourLayer[name + data.id] = layer; |
| | | ol2d.addLayer(that.ourLayer[name + data.id]); |
| | | // console.log(this.ourLayer, 77777); |
| | | }, |
| | | addLines(data, name) { |
| | | //创建图层 |
| | | let layer = new VectorLayer({ |
| | | zIndex: 22, |
| | | source: new VectorSource(), |
| | | }), |
| | | that = this; |
| | | //绘画线路 |
| | | var entityData = ""; |
| | | var entityArr = []; |
| | | entityData = data.value.match(/\(([^)]*)\)/); |
| | | if (entityData && entityData != "") { |
| | | entityData = entityData[1].split(","); |
| | | for (var j = 0; j < entityData.length; j++) { |
| | | entityArr.push([ |
| | | Number(entityData[j].split(" ")[0]), |
| | | Number(entityData[j].split(" ")[1]), |
| | | ]); |
| | | } |
| | | } |
| | | var lineCoords = entityArr; // 线里点的集合 |
| | | // console.log(lineCoords); |
| | | var feature_LineString = new Feature({ |
| | | //线面板 |
| | | geometry: new LineString(lineCoords), |
| | | }); |
| | | feature_LineString.setStyle( |
| | | //线样式 |
| | | new Style({ |
| | | //填充色 |
| | | fill: new Fill({ |
| | | color: "rgba(255, 255, 255, 0.2)", |
| | | }), |
| | | //边线颜色 |
| | | stroke: new Stroke({ |
| | | color: "rgb(18,150,219)", |
| | | width: 5, |
| | | }), |
| | | }) |
| | | ); |
| | | //线名称 |
| | | let lineFeatureTitle = new OlFeature({ |
| | | geometry: new OlGeomPoint(lineCoords[0]), //绘制图形(点) |
| | | }); |
| | | lineFeatureTitle.setStyle( |
| | | new OlStyleStyle({ |
| | | text: new OlStyleText({ |
| | | text: data.name, |
| | | font: "14px sans-serif", // CSS 字体设置 |
| | | scale: 1, //比例 |
| | | offsetY: -10, |
| | | fill: new OlStyleFill({ |
| | | color: "#1296DB", |
| | | }), |
| | | }), |
| | | }) |
| | | ); |
| | | layer.getSource().addFeature(lineFeatureTitle); |
| | | layer.getSource().addFeature(feature_LineString); |
| | | //保存图层 |
| | | this.ourLayer[name + data.id] = layer; |
| | | ol2d.addLayer(that.ourLayer[name + data.id]); |
| | | // console.log(this.ourLayer, 88888); |
| | | }, |
| | | |
| | | //上面是初始化················· |
| | | |
| | | //下面是选择点或线路开始按钮 |
| | | init(val, num, value) { |
| | | this.openTitle = val; |
| | | if (value) { |
| | | this.notNow = false; |
| | | } else { |
| | | this.notNow = true; |
| | | } |
| | | //notNow来确定是修改值还是增加值 是否显示$("#dataConfirm").show(100); |
| | | this.nowIndex = num; |
| | | if (val.indexOf("路径") != -1) { |
| | | // console.log("加载路径按钮"); |
| | | this.controlBut("openDrawLine", this.notNow); |
| | | } else { |
| | | // console.log("加载标点按钮"); |
| | | this.controlBut("openDrawPoint", this.notNow); |
| | | } |
| | | }, |
| | | controlBut(openName, notNow) { |
| | | //判断哪个dom打开 |
| | | this.closeOurBut(); |
| | | this[openName] = true; |
| | | $("#" + openName).show(); |
| | | $("#openTitle").show(); |
| | | if (!notNow) { |
| | | $("#dataConfirm").show(100); |
| | | } |
| | | }, |
| | | closeOurBut(open) { |
| | | //整体关闭dom |
| | | $("#dataConfirm").hide(); |
| | | $("#openDrawPoint").hide(); |
| | | $("#openDrawLine").hide(); |
| | | $("#openTitle").hide(); |
| | | this.openDrawLine = false; |
| | | this.openDrawPoint = false; |
| | | if (open) { |
| | | this.openTitle = ""; |
| | | this.$parent.closeOpenedMap(); //开放按钮 |
| | | this.drawLayerRoom(); |
| | | } |
| | | }, |
| | | //取消按钮 |
| | | stopDrawOur() { |
| | | this.closeOurBut(true); |
| | | }, |
| | | //确认数据 |
| | | useMapData() { |
| | | //返回用数据 |
| | | // console.log(this.openDrawChiose, this.nowIndex); |
| | | this.$parent.MapDataShow = false; |
| | | let val = |
| | | this.openDrawChiose == "openDrawLine" |
| | | ? "line" |
| | | : this.openDrawChiose == "openDrawPoint" |
| | | ? "point" |
| | | : "notData"; |
| | | // console.log(val); |
| | | this.$parent.backMapDataOurData(val, this.nowIndex); |
| | | // 返回后关闭操作按钮 |
| | | this.closeOurBut(); |
| | | //清除绘画图层 |
| | | this.drawLayerRoom(); |
| | | }, |
| | | //提示位置 |
| | | setTipPosition(x, y, n, m) { |
| | | this.position.w = x + n; |
| | | this.position.h = y + m; |
| | | }, |
| | | //实时添加最上图层,为了编辑或新建路径能在最上 |
| | | drawLayerRoom() { |
| | | let that = this; |
| | | //添加绘画图层--为了在最上层--所以每次绘画要重新添加图层 |
| | | if (that.peopleLineAddlayer) { |
| | | that.peopleLineAddlayer.getSource().clear(); |
| | | that.peopleLineAddlayer = null; |
| | | that.peopleLineAddlayer = new VectorLayer({ |
| | | zIndex: 22, |
| | | source: new VectorSource(), |
| | | }); |
| | | } else { |
| | | that.peopleLineAddlayer = new VectorLayer({ |
| | | zIndex: 22, |
| | | source: new VectorSource(), |
| | | }); |
| | | } |
| | | ol2d.addLayer(this.peopleLineAddlayer); |
| | | }, |
| | | |
| | | //选择绘画路线------↓ |
| | | getTypeSelected() { |
| | | let that = this; |
| | | this.beginDraw = true; |
| | | this.draw && ol2d.removeInteraction(this.draw); |
| | | //再根据typeSelect的值绘制新的Interaction |
| | | this.drawLayerRoom(); //重置绘画层 |
| | | this.addInteraction(); |
| | | }, |
| | | addInteraction() { |
| | | let value = this.typeSelected, |
| | | that = this; |
| | | this.tipTitle = "单击左键或右键开始绘画"; |
| | | $("#map") //提示器 |
| | | .off("mousemove") |
| | | .mousemove(function (e) { |
| | | if (!that.showTip) { |
| | | that.showTip = true; |
| | | } |
| | | that.setTipPosition(e.offsetX, e.offsetY, 10, 10); |
| | | }); |
| | | this.coordinates = []; |
| | | if (value !== "None") { |
| | | this.draw = new Draw({ |
| | | source: this.DrawLayer.getSource(), |
| | | type: this.typeSelected, |
| | | style: new Style({ |
| | | stroke: new Stroke({ |
| | | color: "red", |
| | | width: 3, |
| | | }), |
| | | }), |
| | | coordinate: function (res) { |
| | | //画线中的点 |
| | | that.coordinates.push(res.coordinate_); |
| | | that.tipTitle = "可继续,或选择最终位置双击结束"; |
| | | }, |
| | | coordinateOver: function (res) { |
| | | // 结束绘画 处理数据 |
| | | let d = that.doData(that.coordinates); |
| | | that.addLinesDraw(d); |
| | | that.$store.commit("setRotesData", d); //用vuex传最终数据 |
| | | }, |
| | | }); |
| | | ol2d.addInteraction(this.draw); |
| | | } |
| | | }, |
| | | //处理数据 |
| | | doData(val) { |
| | | let str = "LINESTRING("; |
| | | for (let k = 0; k < val.length; k++) { |
| | | str += `${val[k][0]} ${val[k][1]}`; |
| | | if (k != val.length - 1) { |
| | | str += ","; |
| | | } |
| | | } |
| | | str += ")"; |
| | | return str; |
| | | }, |
| | | addLinesDraw(val) { |
| | | var that = this; |
| | | var entityData = ""; |
| | | var entityArr = []; |
| | | entityData = val.match(/\(([^)]*)\)/); |
| | | |
| | | // 此时result=["(dsfasjfj3124123)", "dsfasjfj3124123"]; |
| | | if (entityData && entityData != "") { |
| | | entityData = entityData[1].split(","); |
| | | |
| | | for (var j = 0; j < entityData.length; j++) { |
| | | entityArr.push([ |
| | | Number(entityData[j].split(" ")[0]), |
| | | Number(entityData[j].split(" ")[1]), |
| | | ]); |
| | | } |
| | | } |
| | | |
| | | var lineCoords = entityArr; // 线里点的集合 |
| | | //移动位置---暂不需要 |
| | | // var view = ol2d.getView(); |
| | | // view.setCenter([ |
| | | // lineCoords[Math.ceil(entityArr.length / 2)][0], |
| | | // lineCoords[Math.ceil(entityArr.length / 2)][1], |
| | | // ]); |
| | | // view.setZoom(14.5); |
| | | |
| | | // 要素 |
| | | var feature_LineString = new Feature({ |
| | | geometry: new LineString(lineCoords), |
| | | }); |
| | | |
| | | feature_LineString.setStyle( |
| | | new Style({ |
| | | //填充色 |
| | | fill: new Fill({ |
| | | color: "rgba(255, 255, 255, 0.2)", |
| | | }), |
| | | //边线颜色 |
| | | stroke: new Stroke({ |
| | | color: "red", |
| | | width: 5, |
| | | }), |
| | | }) |
| | | ); |
| | | that.peopleLineAddlayer.getSource().addFeature(feature_LineString); |
| | | that.butTitle = "重新绘画"; |
| | | // if (!this.fromView) { |
| | | $("#dataConfirm").show(100); |
| | | // } |
| | | if (that.draw != null) { |
| | | that.beginDraw = false; |
| | | that.draw.controlDrawing(true); |
| | | that.tipTitle = "已结束绘画,点击重新绘画清除上次内容并开始绘画"; |
| | | $("#map").unbind("mousemove"); |
| | | // setTimeout(() => { |
| | | this.tipTitle = ""; |
| | | this.showTip = false; |
| | | } |
| | | }, |
| | | //绘画路线------↑ |
| | | //绘画点-------↓ |
| | | getTypeSelectedPoint() { |
| | | this.tipTitle = "单击左键选择位置"; |
| | | let that = this; |
| | | let isHaveOne = false; |
| | | this.drawLayerRoom(); //重置绘画层 |
| | | $("#map") |
| | | .off("mousemove") |
| | | .mousemove(function (e) { |
| | | if (!that.showTip) { |
| | | that.showTip = true; |
| | | } |
| | | that.setTipPosition(e.offsetX, e.offsetY, 10, 10); |
| | | }); |
| | | |
| | | if (this.typeSelected !== "None") { |
| | | this.draw = new Draw({ |
| | | source: this.DrawLayer.getSource(), |
| | | type: this.typeSelected, |
| | | style: new Style({ |
| | | stroke: new Stroke({ |
| | | color: "red", |
| | | width: 3, |
| | | }), |
| | | }), |
| | | isPoint: true, |
| | | coordinate: function (res) {}, |
| | | coordinateOverPoint: function (res) { |
| | | if (isHaveOne) { |
| | | return; |
| | | computed: { |
| | | openDrawChiose () { |
| | | // console.log( |
| | | // "this.openDrawLine:", |
| | | // this.openDrawLine, |
| | | // "this.openDrawPoint:", |
| | | // this.openDrawPoint |
| | | // ); |
| | | if (this.openDrawLine) { |
| | | return "openDrawLine" |
| | | } else if (this.openDrawPoint) { |
| | | return "openDrawPoint" |
| | | } else { |
| | | return "notBut---" |
| | | } |
| | | that.$store.commit("setPointData", res.coordinate); //用vuex传最终数据 |
| | | that.addIconMarker(res.coordinate); |
| | | isHaveOne = true; |
| | | }, |
| | | }); |
| | | ol2d.addInteraction(this.draw); |
| | | } |
| | | }, |
| | | }, |
| | | addIconMarker(intlat) { |
| | | let that = this; |
| | | let iconFeature = new OlFeature({ |
| | | geometry: new OlGeomPoint(intlat), //绘制图形(点) |
| | | }); |
| | | iconFeature.setStyle( |
| | | new OlStyleStyle({ |
| | | image: new OlStyleIcon({ |
| | | scale: 0.5, |
| | | offset: [0, 5], |
| | | offsetOrigin: "bottom", |
| | | //透明度 |
| | | opacity: 1, |
| | | //图片路径 |
| | | src: "img/dingwei/dingwei6.png", |
| | | }), |
| | | // watch: { |
| | | // openDrawChiose() { |
| | | // console.log(this.openDrawChiose, "openDrawChiose"); |
| | | // }, |
| | | // }, |
| | | mounted () { |
| | | const ol2d = new OlMap({ |
| | | layers: [ |
| | | // new OlLayerTile({ |
| | | // zIndex: 4, |
| | | // title: "影像", |
| | | // source: new XYZ({ |
| | | // url: "https://webmap-tile.sf-express.com/MapTileService/rt?fetchtype=static&x={x}&y={y}&z={z}&project=sfmap&pic_size=256&pic_type=png8&data_name=361100&data_format=merged-dat&data_type=normal", // 行政区划 |
| | | // }), |
| | | // }), |
| | | // new OlLayerTile({ |
| | | // zIndex: 5, |
| | | // title: "道路+中文注记", |
| | | // source: new XYZ({ |
| | | // url: "http://t3.tianditu.com/DataServer?T=cva_w&x={x}&y={y}&l={z}&tk=e9533f5acb2ac470b07f406a4d24b4f0", // 注记 |
| | | // }), |
| | | // }), |
| | | |
| | | // new OlLayerTile({ |
| | | // zIndex: 4, |
| | | // title: "矢量", |
| | | // source: new XYZ({ |
| | | // url: "http://t3.tianditu.com/DataServer?T=vec_w&x={x}&y={y}&l={z}&tk=e9533f5acb2ac470b07f406a4d24b4f0", // 行政区划 |
| | | // // url: "/localData/sl/{z}/{x}/{y}.png", |
| | | // tileUrlFunction: function (tileCoord) { |
| | | // var z = tileCoord[0] |
| | | // var x = tileCoord[1] |
| | | // var y = Math.pow(2, z) + tileCoord[2] |
| | | // return "../assets/sl/" + z + "/" + x + "/" + y + ".png" |
| | | // }, |
| | | // }), |
| | | // }), |
| | | |
| | | // new OlLayerTile({ |
| | | // zIndex: 5, |
| | | // title: "中文注记", |
| | | // source: new XYZ({ |
| | | // url: "http://t3.tianditu.com/DataServer?T=cva_w&x={x}&y={y}&l={z}&tk=e9533f5acb2ac470b07f406a4d24b4f0", // 注记 |
| | | // }), |
| | | // }), |
| | | |
| | | new OlLayerTile({ |
| | | zIndex: 5, |
| | | title: "cesium切图", |
| | | source: new XYZ({ |
| | | url: "/wp/{z}/{x}/{y}.png", // 注记 |
| | | }), |
| | | }), |
| | | ], |
| | | |
| | | // 注意地图控件的写法 |
| | | controls: defaults().extend([ |
| | | // new FullScreen(), |
| | | // new ScaleLine(), |
| | | // new MousePosition(), |
| | | // new Rotate(), |
| | | // new Attribution() |
| | | ]), |
| | | target: "map", |
| | | view: new OlView({ |
| | | center: [116.026801, 28.683427], |
| | | zoom: 16, |
| | | projection: "EPSG:4326", |
| | | }), |
| | | }) |
| | | ); |
| | | that.peopleLineAddlayer.getSource().addFeature(iconFeature); |
| | | this.butTitlePoint = "重新标点"; |
| | | if (!this.fromView) { |
| | | $("#dataConfirm").show(100); |
| | | } |
| | | if (this.draw != null) { |
| | | this.draw.controlDrawing(true); |
| | | $("#map").unbind("mousemove"); |
| | | this.tipTitle = ""; |
| | | this.showTip = false; |
| | | } |
| | | window.ol2d = ol2d |
| | | |
| | | var view = ol2d.getView() |
| | | |
| | | // let provider = new Cesium.UrlTemplateImageryProvider({ |
| | | // url: "/wp/{z}/{x}/{y}.png", |
| | | // fileExtension: "png", |
| | | // }); |
| | | // view.imageryLayers.addImageryProvider(provider); |
| | | |
| | | // view.setCenter([115.85883507433789, 28.708432053474827]) |
| | | |
| | | // |
| | | this.view = view |
| | | const ol3d = new OLCesium({ map: window.ol2d }) |
| | | window.ol3d = ol3d |
| | | |
| | | // ol2d.addLayer(this.gunAddlayer); |
| | | // ol2d.addLayer(this.peopleAddlayer); |
| | | // ol2d.addLayer(this.carAddlayer); |
| | | // ol2d.addLayer(this.peopleLineAddlayer); |
| | | // ol2d.addLayer(this.beginsPoint); |
| | | }, |
| | | //绘制点------↑ |
| | | }, |
| | | methods: { |
| | | clearUseMapData () { |
| | | if (this.openDrawPoint) { |
| | | this.$store.commit("setPointData", "") //用vuex清空最终数据 |
| | | } else if (this.openDrawLine) { |
| | | this.$store.commit("setRotesData", "") //用vuex清空最终数据 |
| | | } |
| | | this.useMapData() |
| | | }, |
| | | onceOnlodad (ourDatas) { |
| | | this.ourDatas = ourDatas |
| | | this.Renders(ourDatas) |
| | | }, |
| | | //加载底层路线和图标 |
| | | Renders (ourDatas) { |
| | | // for (let i in ourDatas) { |
| | | // console.log(ourDatas[i].value, "------", i); |
| | | // } |
| | | this.deleteElement() |
| | | for (let k in ourDatas) { |
| | | if (ourDatas[k].isLine) { |
| | | if (!ourDatas[k].value) { |
| | | // this.deleteElement("line", ourDatas[k].id); |
| | | } else { |
| | | this.addLines(ourDatas[k], "line") |
| | | } |
| | | } else { |
| | | if (!ourDatas[k].value) { |
| | | // this.deleteElement("point", ourDatas[k].id); |
| | | } else { |
| | | this.addPoint(ourDatas[k], "point") |
| | | } |
| | | } |
| | | } |
| | | this.drawLayerRoom() //重置绘画层 |
| | | }, |
| | | // 若没有value数据,删除地图上的元素 |
| | | deleteElement (name, id) { |
| | | // console.log(name, id); |
| | | // this.ourLayer[name + id].getSource().clear(); |
| | | for (let k in this.ourLayer) { |
| | | this.ourLayer[k].getSource().clear() |
| | | } |
| | | }, |
| | | //加载点 |
| | | addPoint (data, name) { |
| | | //创建图层 |
| | | let layer = new VectorLayer({ |
| | | zIndex: 22, |
| | | source: new VectorSource(), |
| | | }), |
| | | iconFeature = new OlFeature({ |
| | | geometry: new OlGeomPoint(data.value), //绘制图形(点) |
| | | }), |
| | | iconFeatureTitle = new OlFeature({ |
| | | geometry: new OlGeomPoint(data.value), //绘制图形(点) |
| | | }), |
| | | that = this |
| | | iconFeature.setStyle( |
| | | new OlStyleStyle({ |
| | | image: new OlStyleIcon({ |
| | | scale: 0.5, |
| | | offset: [0, 5], |
| | | offsetOrigin: "bottom", |
| | | src: "img/dingwei/dingwei5.png", |
| | | }), |
| | | }) |
| | | ) |
| | | iconFeatureTitle.setStyle( |
| | | new OlStyleStyle({ |
| | | text: new OlStyleText({ |
| | | text: data.name, |
| | | font: "14px sans-serif", // CSS 字体设置 |
| | | scale: 1, //比例 |
| | | offsetY: -40, |
| | | fill: new OlStyleFill({ |
| | | color: "#1296DB", |
| | | }), |
| | | }), |
| | | }) |
| | | ) |
| | | layer.getSource().addFeature(iconFeature) |
| | | layer.getSource().addFeature(iconFeatureTitle) |
| | | //保存图层 |
| | | this.ourLayer[name + data.id] = layer |
| | | ol2d.addLayer(that.ourLayer[name + data.id]) |
| | | // console.log(this.ourLayer, 77777); |
| | | }, |
| | | addLines (data, name) { |
| | | //创建图层 |
| | | let layer = new VectorLayer({ |
| | | zIndex: 22, |
| | | source: new VectorSource(), |
| | | }), |
| | | that = this |
| | | //绘画线路 |
| | | var entityData = "" |
| | | var entityArr = [] |
| | | entityData = data.value.match(/\(([^)]*)\)/) |
| | | if (entityData && entityData != "") { |
| | | entityData = entityData[1].split(",") |
| | | for (var j = 0; j < entityData.length; j++) { |
| | | entityArr.push([ |
| | | Number(entityData[j].split(" ")[0]), |
| | | Number(entityData[j].split(" ")[1]), |
| | | ]) |
| | | } |
| | | } |
| | | var lineCoords = entityArr // 线里点的集合 |
| | | // console.log(lineCoords); |
| | | var feature_LineString = new Feature({ |
| | | //线面板 |
| | | geometry: new LineString(lineCoords), |
| | | }) |
| | | feature_LineString.setStyle( |
| | | //线样式 |
| | | new Style({ |
| | | //填充色 |
| | | fill: new Fill({ |
| | | color: "rgba(255, 255, 255, 0.2)", |
| | | }), |
| | | //边线颜色 |
| | | stroke: new Stroke({ |
| | | color: "rgb(18,150,219)", |
| | | width: 5, |
| | | }), |
| | | }) |
| | | ) |
| | | //线名称 |
| | | let lineFeatureTitle = new OlFeature({ |
| | | geometry: new OlGeomPoint(lineCoords[0]), //绘制图形(点) |
| | | }) |
| | | lineFeatureTitle.setStyle( |
| | | new OlStyleStyle({ |
| | | text: new OlStyleText({ |
| | | text: data.name, |
| | | font: "14px sans-serif", // CSS 字体设置 |
| | | scale: 1, //比例 |
| | | offsetY: -10, |
| | | fill: new OlStyleFill({ |
| | | color: "#1296DB", |
| | | }), |
| | | }), |
| | | }) |
| | | ) |
| | | layer.getSource().addFeature(lineFeatureTitle) |
| | | layer.getSource().addFeature(feature_LineString) |
| | | //保存图层 |
| | | this.ourLayer[name + data.id] = layer |
| | | ol2d.addLayer(that.ourLayer[name + data.id]) |
| | | // console.log(this.ourLayer, 88888); |
| | | }, |
| | | |
| | | //上面是初始化················· |
| | | |
| | | //下面是选择点或线路开始按钮 |
| | | init (val, num, value) { |
| | | this.openTitle = val |
| | | if (value) { |
| | | this.notNow = false |
| | | } else { |
| | | this.notNow = true |
| | | } |
| | | //notNow来确定是修改值还是增加值 是否显示$("#dataConfirm").show(100); |
| | | this.nowIndex = num |
| | | if (val.indexOf("路径") != -1) { |
| | | // console.log("加载路径按钮"); |
| | | this.controlBut("openDrawLine", this.notNow) |
| | | } else { |
| | | // console.log("加载标点按钮"); |
| | | this.controlBut("openDrawPoint", this.notNow) |
| | | } |
| | | }, |
| | | controlBut (openName, notNow) { |
| | | //判断哪个dom打开 |
| | | this.closeOurBut() |
| | | this[openName] = true |
| | | $("#" + openName).show() |
| | | $("#openTitle").show() |
| | | if (!notNow) { |
| | | $("#dataConfirm").show(100) |
| | | } |
| | | }, |
| | | closeOurBut (open) { |
| | | //整体关闭dom |
| | | $("#dataConfirm").hide() |
| | | $("#openDrawPoint").hide() |
| | | $("#openDrawLine").hide() |
| | | $("#openTitle").hide() |
| | | this.openDrawLine = false |
| | | this.openDrawPoint = false |
| | | if (open) { |
| | | this.openTitle = "" |
| | | this.$parent.closeOpenedMap() //开放按钮 |
| | | this.drawLayerRoom() |
| | | } |
| | | }, |
| | | //取消按钮 |
| | | stopDrawOur () { |
| | | this.closeOurBut(true) |
| | | }, |
| | | //确认数据 |
| | | useMapData () { |
| | | //返回用数据 |
| | | // console.log(this.openDrawChiose, this.nowIndex); |
| | | this.$parent.MapDataShow = false |
| | | let val = |
| | | this.openDrawChiose == "openDrawLine" |
| | | ? "line" |
| | | : this.openDrawChiose == "openDrawPoint" |
| | | ? "point" |
| | | : "notData" |
| | | // console.log(val); |
| | | this.$parent.backMapDataOurData(val, this.nowIndex) |
| | | // 返回后关闭操作按钮 |
| | | this.closeOurBut() |
| | | //清除绘画图层 |
| | | this.drawLayerRoom() |
| | | }, |
| | | //提示位置 |
| | | setTipPosition (x, y, n, m) { |
| | | this.position.w = x + n |
| | | this.position.h = y + m |
| | | }, |
| | | //实时添加最上图层,为了编辑或新建路径能在最上 |
| | | drawLayerRoom () { |
| | | let that = this |
| | | //添加绘画图层--为了在最上层--所以每次绘画要重新添加图层 |
| | | if (that.peopleLineAddlayer) { |
| | | that.peopleLineAddlayer.getSource().clear() |
| | | that.peopleLineAddlayer = null |
| | | that.peopleLineAddlayer = new VectorLayer({ |
| | | zIndex: 22, |
| | | source: new VectorSource(), |
| | | }) |
| | | } else { |
| | | that.peopleLineAddlayer = new VectorLayer({ |
| | | zIndex: 22, |
| | | source: new VectorSource(), |
| | | }) |
| | | } |
| | | ol2d.addLayer(this.peopleLineAddlayer) |
| | | }, |
| | | |
| | | //选择绘画路线------↓ |
| | | getTypeSelected () { |
| | | let that = this |
| | | this.beginDraw = true |
| | | this.draw && ol2d.removeInteraction(this.draw) |
| | | //再根据typeSelect的值绘制新的Interaction |
| | | this.drawLayerRoom() //重置绘画层 |
| | | this.addInteraction() |
| | | }, |
| | | addInteraction () { |
| | | let value = this.typeSelected, |
| | | that = this |
| | | this.tipTitle = "单击左键或右键开始绘画" |
| | | $("#map") //提示器 |
| | | .off("mousemove") |
| | | .mousemove(function (e) { |
| | | if (!that.showTip) { |
| | | that.showTip = true |
| | | } |
| | | that.setTipPosition(e.offsetX, e.offsetY, 10, 10) |
| | | }) |
| | | this.coordinates = [] |
| | | if (value !== "None") { |
| | | this.draw = new Draw({ |
| | | source: this.DrawLayer.getSource(), |
| | | type: this.typeSelected, |
| | | style: new Style({ |
| | | stroke: new Stroke({ |
| | | color: "red", |
| | | width: 3, |
| | | }), |
| | | }), |
| | | coordinate: function (res) { |
| | | //画线中的点 |
| | | that.coordinates.push(res.coordinate_) |
| | | that.tipTitle = "可继续,或选择最终位置双击结束" |
| | | }, |
| | | coordinateOver: function (res) { |
| | | // 结束绘画 处理数据 |
| | | let d = that.doData(that.coordinates) |
| | | that.addLinesDraw(d) |
| | | that.$store.commit("setRotesData", d) //用vuex传最终数据 |
| | | }, |
| | | }) |
| | | ol2d.addInteraction(this.draw) |
| | | } |
| | | }, |
| | | //处理数据 |
| | | doData (val) { |
| | | let str = "LINESTRING(" |
| | | for (let k = 0; k < val.length; k++) { |
| | | str += `${val[k][0]} ${val[k][1]}` |
| | | if (k != val.length - 1) { |
| | | str += "," |
| | | } |
| | | } |
| | | str += ")" |
| | | return str |
| | | }, |
| | | addLinesDraw (val) { |
| | | var that = this |
| | | var entityData = "" |
| | | var entityArr = [] |
| | | entityData = val.match(/\(([^)]*)\)/) |
| | | |
| | | // 此时result=["(dsfasjfj3124123)", "dsfasjfj3124123"]; |
| | | if (entityData && entityData != "") { |
| | | entityData = entityData[1].split(",") |
| | | |
| | | for (var j = 0; j < entityData.length; j++) { |
| | | entityArr.push([ |
| | | Number(entityData[j].split(" ")[0]), |
| | | Number(entityData[j].split(" ")[1]), |
| | | ]) |
| | | } |
| | | } |
| | | |
| | | var lineCoords = entityArr // 线里点的集合 |
| | | //移动位置---暂不需要 |
| | | // var view = ol2d.getView(); |
| | | // view.setCenter([ |
| | | // lineCoords[Math.ceil(entityArr.length / 2)][0], |
| | | // lineCoords[Math.ceil(entityArr.length / 2)][1], |
| | | // ]); |
| | | // view.setZoom(14.5); |
| | | |
| | | // 要素 |
| | | var feature_LineString = new Feature({ |
| | | geometry: new LineString(lineCoords), |
| | | }) |
| | | |
| | | feature_LineString.setStyle( |
| | | new Style({ |
| | | //填充色 |
| | | fill: new Fill({ |
| | | color: "rgba(255, 255, 255, 0.2)", |
| | | }), |
| | | //边线颜色 |
| | | stroke: new Stroke({ |
| | | color: "red", |
| | | width: 5, |
| | | }), |
| | | }) |
| | | ) |
| | | that.peopleLineAddlayer.getSource().addFeature(feature_LineString) |
| | | that.butTitle = "重新绘画" |
| | | // if (!this.fromView) { |
| | | $("#dataConfirm").show(100) |
| | | // } |
| | | if (that.draw != null) { |
| | | that.beginDraw = false |
| | | that.draw.controlDrawing(true) |
| | | that.tipTitle = "已结束绘画,点击重新绘画清除上次内容并开始绘画" |
| | | $("#map").unbind("mousemove") |
| | | // setTimeout(() => { |
| | | this.tipTitle = "" |
| | | this.showTip = false |
| | | } |
| | | }, |
| | | //绘画路线------↑ |
| | | //绘画点-------↓ |
| | | getTypeSelectedPoint () { |
| | | this.tipTitle = "单击左键选择位置" |
| | | let that = this |
| | | let isHaveOne = false |
| | | this.drawLayerRoom() //重置绘画层 |
| | | $("#map") |
| | | .off("mousemove") |
| | | .mousemove(function (e) { |
| | | if (!that.showTip) { |
| | | that.showTip = true |
| | | } |
| | | that.setTipPosition(e.offsetX, e.offsetY, 10, 10) |
| | | }) |
| | | |
| | | if (this.typeSelected !== "None") { |
| | | this.draw = new Draw({ |
| | | source: this.DrawLayer.getSource(), |
| | | type: this.typeSelected, |
| | | style: new Style({ |
| | | stroke: new Stroke({ |
| | | color: "red", |
| | | width: 3, |
| | | }), |
| | | }), |
| | | isPoint: true, |
| | | coordinate: function (res) { }, |
| | | coordinateOverPoint: function (res) { |
| | | if (isHaveOne) { |
| | | return |
| | | } |
| | | that.$store.commit("setPointData", res.coordinate) //用vuex传最终数据 |
| | | that.addIconMarker(res.coordinate) |
| | | isHaveOne = true |
| | | }, |
| | | }) |
| | | ol2d.addInteraction(this.draw) |
| | | } |
| | | }, |
| | | addIconMarker (intlat) { |
| | | let that = this |
| | | let iconFeature = new OlFeature({ |
| | | geometry: new OlGeomPoint(intlat), //绘制图形(点) |
| | | }) |
| | | iconFeature.setStyle( |
| | | new OlStyleStyle({ |
| | | image: new OlStyleIcon({ |
| | | scale: 0.5, |
| | | offset: [0, 5], |
| | | offsetOrigin: "bottom", |
| | | //透明度 |
| | | opacity: 1, |
| | | //图片路径 |
| | | src: "img/dingwei/dingwei6.png", |
| | | }), |
| | | }) |
| | | ) |
| | | that.peopleLineAddlayer.getSource().addFeature(iconFeature) |
| | | this.butTitlePoint = "重新标点" |
| | | if (!this.fromView) { |
| | | $("#dataConfirm").show(100) |
| | | } |
| | | if (this.draw != null) { |
| | | this.draw.controlDrawing(true) |
| | | $("#map").unbind("mousemove") |
| | | this.tipTitle = "" |
| | | this.showTip = false |
| | | } |
| | | }, |
| | | //绘制点------↑ |
| | | }, |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped lang="scss"> |
| | | #map { |
| | | position: relative; |
| | | width: 100%; |
| | | height: 100%; |
| | | .controlMap { |
| | | position: absolute; |
| | | top: 10px; |
| | | // left: calc(50% - 97px); |
| | | left: 390px; |
| | | z-index: 2 !important; |
| | | #openTitle { |
| | | background-color: #fff; |
| | | border-radius: 5px; |
| | | position: relative; |
| | | width: 100%; |
| | | height: 100%; |
| | | .controlMap { |
| | | position: absolute; |
| | | top: 10px; |
| | | // left: calc(50% - 97px); |
| | | left: 390px; |
| | | z-index: 2 !important; |
| | | #openTitle { |
| | | background-color: #fff; |
| | | border-radius: 5px; |
| | | } |
| | | #openDrawLine, |
| | | #openDrawPoiton { |
| | | width: 174px; |
| | | // position: relative; |
| | | // top: 43px; |
| | | // top: 10px; |
| | | // left: calc(50% - 96px); |
| | | // left: 20px; |
| | | } |
| | | .openDrawsb { |
| | | background-color: #fff; |
| | | color: black; |
| | | } |
| | | .activeDraw { |
| | | background-color: #409eff; |
| | | color: #fff; |
| | | } |
| | | } |
| | | #openDrawLine, |
| | | #openDrawPoiton { |
| | | width: 174px; |
| | | // position: relative; |
| | | // top: 43px; |
| | | // top: 10px; |
| | | // left: calc(50% - 96px); |
| | | // left: 20px; |
| | | #dataConfirm { |
| | | position: absolute; |
| | | top: 43px; |
| | | // left: calc(50% + 82px); |
| | | left: 564px; |
| | | z-index: 3 !important; |
| | | } |
| | | .openDrawsb { |
| | | background-color: #fff; |
| | | color: black; |
| | | } |
| | | .activeDraw { |
| | | background-color: #409eff; |
| | | color: #fff; |
| | | } |
| | | } |
| | | #dataConfirm { |
| | | position: absolute; |
| | | top: 43px; |
| | | // left: calc(50% + 82px); |
| | | left: 564px; |
| | | z-index: 3 !important; |
| | | } |
| | | } |
| | | </style> |