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;
|
that.beginCome();
|
},
|
beginCome() {
|
var data = [{
|
"id": '100000',
|
"place": '无数据',
|
"state": '0',
|
"dtype": '0',
|
"size": '300',
|
"jd": "115.822311",
|
"wd": "28.646341"
|
}]
|
//url解码
|
this.getdata = this.getQueryVariable('data') || data;
|
this.map = this.beginMap(this.map, this.getdata); //创建并接受map
|
this.move = new myDomMove('#seedata', '.title', '#map');
|
this.map.invalidateSize(true); //应用地图高度
|
this.move.followFinger(this.map, 'down');
|
},
|
//url解码
|
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 = `http://106.225.193.35:83/api/alarm/alarm/APP-getAlarm?id=${data[0].id}`;
|
// url = `http://localhost:89/alarm/alarm/APP-getAlarm?id=${data[0].id}`;
|
this.nowPosition = center;
|
axios.post(url).then((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];
|
}
|
})
|
|
var createMap = () => {
|
map = L.map('map', { //初始化地图
|
center: center,
|
zoom: 20,
|
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", { //顺丰地图
|
}
|
).addTo(map);
|
}
|
createMap();
|
var markers = L.markerClusterGroup();
|
|
var transportIcon = L.Icon.extend({ //图标初始化
|
options: {
|
iconSize: [30, 30], // 图标尺寸
|
}
|
});
|
var carIcon = new transportIcon({ //引入图标
|
iconUrl: './img/gray.png'
|
}),
|
planeIcon = new transportIcon({
|
iconUrl: './img/green.png'
|
}),
|
busIcon = new transportIcon({
|
iconUrl: './img/red.png'
|
});
|
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];
|
if (a.jd == '' || a.wd == '') {
|
console.log('没有坐标', i)
|
} else {
|
setData(a);
|
that.getDHLine(a.jd, a.wd);
|
}
|
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]
|
$('#seedata').css('top', '');
|
$('#map').css("height", (index, value) => { //改变地图高度
|
return '50%';
|
})
|
map.invalidateSize(true); //应用地图高度
|
that.move.destruction();
|
that.move.followFinger(map, 'down');
|
|
});
|
this.nowPosition = center;
|
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())
|
},
|
//定位警情位置
|
titleClick() {
|
this.map.setView(this.nowPosition, 20);
|
},
|
//定位当前位置
|
locationMap() {
|
this.map.setView([this.lat, this.lng], 20);
|
},
|
shipingClick(open) { //打开视频
|
if (open) {
|
this.openRealVideoBox(this.seedata.serialNumber, this.seedata.channelNumber, this.seedata.deviceNumber, this.seedata.manufacturer);
|
} else {
|
this.shipingPopupShow = false;
|
}
|
},
|
resultFeedbackClick() { //结果反馈跳转小程序
|
uni.webView.navigateTo({
|
url: `../poput/workbench/policeDetails/policeDetails?id=${this.seedata.id}`
|
});
|
},
|
openRealVideoBox(serialNumber, channelNumber, deviceNumber, manufacturer) { //获取视频地址
|
var that = this;
|
if (manufacturer == "HK") {
|
axios
|
.get(
|
`/api/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('上传信息成功')
|
},
|
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: {}
|
})
|