var me = new Vue({ el: '#mapVue', data: { map: null,//map getdata: null, marker: null, layuiLayer: null, nowIndex: null, LXdhStart: null, LXdhEnd: null, LxdhLine: null, activeName: 'first', move: null,//存放移动实例 //存放实时坐标 lat: "", lng: "", seedata: '', nowPosition: '', shipingPopupShow: false, shipingM3u8Url: '', resultFeedbackPopupShow: false, popupDisplay: "none", }, methods: { getDataList() { var that = this; // var url = 'https://web.byisf.com/api/blade-jfpts/equipment/equipment/listAll'; // axios.get(url).then((res) => { // that.getdata = res.data.data; // console.log(that.getdata) that.beginCome(); // }) }, beginCome() { var data = [{ "id": '100000', "place": '无数据', "state": '0', "dtype": '0', "size": '300', "jd": "115.822311", "wd": "28.646341" }] this.getdata = this.getQueryVariable('data') || data;//url解码 console.log(this.getdata) // this.getdata = [{ // jd: 115.91042800000002, // wd: 28.68094757898212, // state: 0, // dtype: 0, // size: 300, // title: '第一个' // }];//url解码 this.map = this.beginMap(this.map, this.getdata);//创建并接受map this.move = new myDomMove('#seedata', '.title', '#map'); // var dy = document.documentElement.clientHeight - 50; // $('#seedata').animate({ top: dy + "px" }, 10); // $('#map').css("height", (index, value) => {//改变地图高度 // return '100%'; // // }) this.map.invalidateSize(true);//应用地图高度 this.move.followFinger(this.map, 'down'); }, getQueryVariable(variable) { var query = window.location.search.substring(1); var vars = query.split("&"); for (var i = 0; i < vars.length; i++) { var pair = vars[i].split("="); if (pair[0] == variable) { return JSON.parse(decodeURI(pair[1])); }//解码url 和 JSON } return (false); }, beginMap(map, data) { var that = this, center = [data[0].wd, data[0].jd], url = `/api/blade-jfpts/alarm/alarm/APP-getAlarm?id=${data[0].id}`; // console.log(center) this.nowPosition = center; axios.post(url).then((res) => { // console.log(res) if (res.data.data.length != 0) { var dat = res.data.data[0]; for (var key in dat) { if (dat[key] == null || dat[key] == '') { dat[key] = '暂无' } } this.seedata = dat; } else { this.seedata = data[0]; } // console.log(this.seedata, 1524545453) }) var createMap = () => { map = L.map('map', { //初始化地图 center: center, zoom: 12, minZoom: 2, maxZoom: 17, attributionControl: false, //去掉右下角 zoomControl: false, //去掉缩放 }); L.tileLayer( //添加切片图层 // "https://webmap-tile.sf-express.com/MapTileService/rt?x={x}&y={y}&z={z}", {//顺丰地图 "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", {//顺丰地图 // "http://webrd0{s}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}", { // subdomains: ["1", "2", "3", "4"], // attribution: "高德" } ).addTo(map); } createMap(); var markers = L.markerClusterGroup(); var transportIcon = L.Icon.extend({ //图标初始化 options: { iconSize: [30, 30], // 图标尺寸 // iconAnchor: [30, 30], // 图标偏移量 // popupAnchor: [-20, -20] // 弹出框偏移量 } }); var carIcon = new transportIcon({ //引入图标 iconUrl: './img/gray.png' }), planeIcon = new transportIcon({ iconUrl: './img/green.png' }), busIcon = new transportIcon({ iconUrl: './img/red.png' }); // console.log(data, 43545343) var setData = (a) => {//定义图标 marker = L.marker([a.wd, a.jd], { icon: planeIcon, // icon: a.dtype == 0 ? carIcon : a.dtype == 1 ? planeIcon : a.dtype == 2 ? busIcon : '', // title: title, myData: {//自定义数据 ...a } }); } for (var i = 0; i < data.length; i++) { var a = data[i]; // var title = a.title; // if (a.dtype == 0) { // setData(a); // } else if (a.dtype == 1) { // setData(a); // } else if (a.dtype == 2) { // setData(a); // } if (a.jd == '' || a.wd == '') { console.log('没有坐标', i) } else { setData(a); that.getDHLine(a.jd,a.wd); } // marker.bindPopup(title); markers.addLayer(marker); } map.addLayer(markers); markers.on('click', function (a) { // that.drawer = true; that.seedata = a.layer.options.myData; that.nowPosition = [that.seedata.wd,that.seedata.jd] console.log(that.seedata) $('#seedata').css('top', ''); $('#map').css("height", (index, value) => {//改变地图高度 return '50%'; }) map.invalidateSize(true);//应用地图高度 // console.log(a.layer.options.myData); that.move.destruction(); that.move.followFinger(map, 'down'); }); // that.seedata = data[0]; this.nowPosition = center; // map.on('mousemove', (e) => {//实时显示坐标 // let latlng = e.latlng; // console.log(latlng);// {lat: 30.59, lng: 114.32} // }); return map;//抛出map }, getDHLine(x, y) { var that = this; //获取导航信息 axios({ method: "get", url: `https://web.byisf.com/sf/rp/v2/api`, params: { ak: "1986afc8a5744263971b7f2482253dfc", x1: that.lng, y1: that.lat, x2: x, y2: y, type: "1", strategy: "0", opt: "sf2" }, }).then((res) => { var resdata = res.data.result.coords; var data = []; for (var i = 0; i < resdata.length; i++) { var xy = []; xy.push(resdata[i][1]); xy.push(resdata[i][0]); data.push(xy); } if (that.LXdhEnd != null) { that.map.removeLayer(that.LXdhEnd); } if (that.LxdhLine != null) { that.map.removeLayer(that.LxdhLine); } //绘制起点和终点 that.LXdhEnd = L.markerClusterGroup(); var transportIcon = L.Icon.extend({ //图标初始化 options: { iconSize: [56, 32], // 图标尺寸 } }); var zd = new transportIcon({ iconUrl: './img/zd.png' }); // var qd = new transportIcon({ // iconUrl: './img/qd.png' // }); var qdzb = res.data.result.query; var x = resdata[resdata.length - 1][0]; var y = resdata[resdata.length - 1][1]; that.LXdhEnd.addLayer(L.marker([y, x], { icon: zd, })); // markers.addLayer(L.marker([qdzb.start.y, qdzb.start.x], { // icon: qd, // })); that.map.addLayer(that.LXdhEnd); that.showPolyLine(data); }); }, showPolyLine(xy) { var that = this; that.LxdhLine = L.polyline(xy, { color: 'red' }).addTo(that.map); // zoom the map to the polyline that.map.fitBounds(that.LxdhLine.getBounds()) }, getLocation() { // if (navigator.geolocation) { // // console.log(navigator.geolocation) // navigator.geolocation.getCurrentPosition(onSuccess, onError); // } else { // alert("您的浏览器不支持使用HTML 5来获取地理位置服务"); // } // function onSuccess(position) { // console.log('纬度: ' + position.coords.latitude + '\n' + // '经度: ' + position.coords.longitude + '\n' + // '海拔: ' + position.coords.altitude + '\n' + // '水平精度: ' + position.coords.accuracy + '\n' + // '垂直精度: ' + position.coords.altitudeAccura) // } // function onError(error) { // switch (error.code) { // case error.PERMISSION_DENIED: // alert("您拒绝对获取地理位置的请求"); // break; // case error.POSITION_UNAVAILABLE: // alert("位置信息是不可用的"); // break; // case error.TIMEOUT: // alert("请求您的地理位置超时"); // break; // case error.UNKNOWN_ERROR: // alert("未知错误"); // break; // } // } // this.map.locate({ // setView: true, // maxZoom: 16 // }); // console.log(this.map) // this.map.on('locationfound', function (e) { // // var radius = e.accuracy / 2; // // L.marker(e.latlng).addTo(mapid).bindPopup("你就在这个圈内"); // // L.circle(e.latlng, radius).addTo(mapid); // console.log(e) // }); }, handleClick(tab, event) { // console.log(tab, event); }, titleClick(){ this.map.setView(this.nowPosition, 12); }, locationMap() {//定位 // this.map.setView(this.nowPosition, 12);//定警情位置 // this.getLocation(); // console.log(wx,12); // wx.miniProgram.navigateTo({url: 'pages/workbench/workbench'}) }, shipingClick(open) {//打开视频 if (open) { this.openRealVideoBox(this.seedata.serialNumber, this.seedata.channelNumber, this.seedata.deviceNumber, this.seedata.manufacturer); } else { this.shipingPopupShow = false; } }, resultFeedbackClick() {//结果反馈跳转小程序 this.gotoxcx('policeDetails'); }, openRealVideoBox(serialNumber, channelNumber, deviceNumber, manufacturer) {//获取视频地址 var that = this; if (manufacturer == "HK") { axios .get( `/api/blade-jfpts/equipment/equipment/selectEquimentPlayInfo?number=${deviceNumber}&bmp=m3u8&manufacturer=${manufacturer}` ) .then((result) => { that.videoSource = result.data.data.address; that.shipingM3u8Url = decodeURIComponent(that.videoSource); that.shipingPopupShow = true; }) .ce; } else { var newAxios = axios.create({ baseURL: "https://web.byisf.com:18000", withCredentials: false, headers: { "Content-type": "application/x-www-form-urlencoded", }, }); newAxios .post( "/api_control", {}, { params: { param: JSON.stringify({ PktType: "GetAccessToken" }), }, } ) .then((res) => { newAxios .get( `https://web.byisf.com:18000/GetPlayUrl?deviceCode=${serialNumber}&chl=${channelNumber}` ) .then((result) => { that.videoSource = result.data.data.m3u8; that.shipingM3u8Url = decodeURIComponent(that.videoSource); that.shipingPopupShow = true; }); }); } }, upData() { console.log('上传信息成功') }, gotoxcx(routs) { wx.miniProgram.navigateTo({ url: `../poput/workbench/policeDetails/${routs}?id=${this.seedata.id}`, //指定跳转至小程序页面的门路 success: function () { console.log('success'); //页面跳转胜利的回调函数 } }); }, getLocationData() { var that = this; var geolocation = new qq.maps.Geolocation("T7RBZ-62U3X-RSQ4P-ZZVCB-WE7JT-HRBOG", "mapqq"); var positionNum = 0; var options = { timeout: 8000 }; function showPosition(position) { var adCode = position.adCode; //邮政编码 var nation = position.nation; //中国 var city = position.city; //城市 var addr = position.addr; //详细地址 that.lat = position.lat; // that.lng = position.lng; //火星坐标 //TODO 实现业务代码逻辑 if (that.LXdhStart != null) { that.map.removeLayer(that.LXdhStart); } //绘制起点和终点 that.LXdhStart = L.markerClusterGroup(); var transportIcon = L.Icon.extend({ //图标初始化 options: { iconSize: [50, 50], // 图标尺寸 } }); var qd = new transportIcon({ iconUrl: './img/dingw.gif' }); that.LXdhStart.addLayer(L.marker([that.lat, that.lng], { icon: qd, })); that.map.addLayer(that.LXdhStart); }; function showErr() { //TODO 如果出错了调用此方法 }; geolocation.getLocation(showPosition, showErr, options); }, }, created() { }, mounted() { this.getDataList(); this.getLocationData(); }, wacth: { } })