You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
CaiYuanYiTiHua/public/bigScreen/js/middleMap.js

1452 lines
50 KiB
JavaScript

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

// var BASE_URL = "http://192.168.10.102:9023";
var BASE_URL = window.BASE_URL;
var APP_URL = window.APP_URL;
for (var i = 0; i < xianjie.features.length; i++) {
xianjie.features[i].id = i + 1;
}
var present_Township = "";
// console.log(xianjie);
var townshipCaseCount = [];
var newsReportDataGeoJsonArr = []
var historyCaseGeoJsonArr = []
var townshipCaseCountArr = [];
var colorSelect = [];
function loadMainMap() {
$.ajax({
type: "GET",
url: BASE_URL + "/api/DroneScreenDisplay/GetDroneOrgCount",
dataType: "json",
headers: { "X-Token": localStorage.getItem("X-Token") },
async: false,
data: {},
beforeSend: function (xhr) { },
success: function (data) {
townshipCaseCount = data.result;
// console.log("townshipCaseCount",townshipCaseCount);
}
});
townshipCaseCount.forEach((item, index) => {
townshipCaseCountArr[index] = item.reportCount;
})
var bigCount = 0;
var smallCount = 9999;
for (var i = 0; i < townshipCaseCountArr.length; i++) {
if (townshipCaseCountArr[i] > bigCount) {
bigCount = townshipCaseCountArr[i]
}
if (townshipCaseCountArr[i] < smallCount) {
smallCount = townshipCaseCountArr[i]
}
}
let unit = (bigCount - smallCount) / 12;
colorSelect = ['interpolate', ['linear'], ['get', 'count'],
smallCount, '#43E1F8',
smallCount + unit * 2, '#49B0F9',
smallCount + unit * 3, '#3EABFA',
smallCount + unit * 4, '#27A2FB',
smallCount + unit * 5, '#34E6B1',
smallCount + unit * 6, '#1099FB',
smallCount + unit * 7, '#0695FB',
smallCount + unit * 8, '#058DEE',
smallCount + unit * 9, '#09C78E',
smallCount + unit * 10, '#047DD4',
smallCount + unit * 11, '#94D515',
smallCount + unit * 12, '#0568B0',
]
// console.log(colorSelect);
xianjie.features.forEach(function (item, index) {
var towninfo = townshipCaseCount.filter(function (it, idx) {
return it.name == item.properties.name
})
xianjie.features[index].properties.count = towninfo[0].reportCount;
xianjie.features[index].properties.newestCount = towninfo[0].todayCount;
})
}
// 获取乡镇等数据
loadMainMap();
//console.log("xianjie",xianjie);
var worldMapContainer1 = document.getElementById('distribution_map');
worldMapContainer1.style.height = "610px";
worldMapContainer1.style.width = "970px";
worldMapContainer1.style.position = "relative";
worldMapContainer1.style.left = "30px";
mapboxgl.accessToken = 'pk.eyJ1IjoibGllYmFvIiwiYSI6ImNsMXg1OHdtcTE3eDEza3FmODBmeXhldmIifQ.CYYMuikQnGHMtTNq60B_xA';
let map = new mapboxgl.Map({
container: 'distribution_map',
style: {
glyphs: "mapbox://fonts/mapbox/{fontstack}/{range}.pbf",
"version": 8,
"sources": {
// "raster-tiles": {
// "type": "raster",
// "tiles": ['http://t0.tianditu.gov.cn/DataServer?T=img_w&x={x}&y={y}&l={z}&tk=ed82a9d17a463c1c604f7e1f40293f25'],
// "tileSize": 256,
// }
},
"layers": [
// {
// "id": "tdt-img-tiles",
// "type": "raster",
// "source": "raster-tiles",
// "minzoom": 0,
// "maxzoom": 22
// },
]
},
zoom: 7.6,
center: [118.284576,35.199955],
});
var size = 200;
var pulsingDot = {
width: size,
height: size,
data: new Uint8Array(size * size * 4),
onAdd: function () {
var canvas = document.createElement('canvas');
canvas.width = this.width;
canvas.height = this.height;
this.context = canvas.getContext('2d');
},
render: function () {
var duration = 1000;
var t = (performance.now() % duration) / duration;
var radius = size / 2 * 0.3;
var outerRadius = size / 2 * 0.7 * t + radius;
var context = this.context;
context.clearRect(0, 0, this.width, this.height);
context.beginPath();
context.arc(this.width / 2, this.height / 2, outerRadius, 0, Math.PI * 2);
context.fillStyle = 'rgba(255, 200, 200,' + (1 - t) + ')';
context.fill();
context.beginPath();
context.arc(this.width / 2, this.height / 2, radius, 0, Math.PI * 2);
context.fillStyle = 'rgba(255, 100, 100, 1)';
context.strokeStyle = 'white';
context.lineWidth = 2 + 4 * (1 - t);
context.fill();
context.stroke();
this.data = context.getImageData(0, 0, this.width, this.height).data;
map.triggerRepaint();
return true;
}
};
var UAVMarkerArray = [];
var flvMarkerArray = []
var flvDataArray = []
var DroneMarkerArray = [];
var UAVInfo = [];
var getUAVMarkersTimer = null;
var newestCountMarkerArray = [];
var historyCountMarkerArray = [];
// 无人机
function loadUAVBox(data) {
// var data = {
// "account": "17853305026",
// "createtime": "2023-11-08 09:58:16",
// "height": 185,
// "ip": "192.168.10.101",
// "lat": 35.264007,
// "lng": 118.130002,
// "model": "airPlaneModel"
// }
if (flvMarkerArray.length > 0) {
$('#UAVView').attr("data-isActive", "true")
$('#UAVView').css("color", "#FFF726")
$("#UAVView").find(".centerimg").css('display', 'none')
$("#UAVView").find(".centerimgActive").css('display', 'inline-block')
for (var i = 0; i < window.flvMarkerArray.length; i++) {
window.flvMarkerArray[i].remove(map);
}
}
if (data && data.account) {
$('#UAVView').attr("data-isActive", "true")
$('#UAVView').css("color", "#FFF726")
$("#UAVView").find(".centerimg").css('display', 'none')
$("#UAVView").find(".centerimgActive").css('display', 'inline-block')
// console.log('loadUAVBox')
if (flvDataArray.find(info => info.account === data.account)) {
// console.log('已存在')
info = data
} else {
flvDataArray.push(data)
}
flvMarkerArray = []
flvDataArray.forEach(element => {
var arr = []
arr.push(element.lng)
arr.push(element.lat)
let coordinate = arr
let el = document.createElement('img')
el.id = 'markerId'
el.src = 'images/unmanned.png'
el.setAttribute("phone", element.account);
// console.log(coordinate)
let marker = new mapboxgl.Marker(el).setLngLat(coordinate).addTo(map) // 将标记添加到地图上
window.flvMarkerArray.push(marker);
el.addEventListener('click', (e) => {
$('.bgPop5,.pop5').show();
var phone = el.getAttribute("phone")
if(phone == '17853305026'){
vm.flvStr = "17853305026"
localStorage.setItem('flvStr', vm.flvStr)
childFlv.window.childFunction()
}else{
vm.flvStr = "http://live.hopetrytech.com/live/" + phone + ".flv"
// console.log(vm.flvStr)
// var player = TCPlayer('player-container-id', {}); // player-container-id 为播放器容器 ID必须与 html 中一致
// player.src(vm.flvStr); // url 播放地址
localStorage.setItem('flvStr', vm.flvStr)
myWebSocket.send(data.account)
childFlv.window.childFunction()
}
})
});
for (var i = 0; i < window.flvMarkerArray.length; i++) {
window.flvMarkerArray[i].addTo(map);
}
}
}
// 加载最新上报的数据点
function loadLastReportPoint(caseId, isFirst) {
if (UAVMarkerArray.length > 0) {
for (var i = 0; i < window.UAVMarkerArray.length; i++) {
window.UAVMarkerArray[i].remove(map);
}
}
UAVMarkerArray = [];
$.ajax({
type: "GET",
url: BASE_URL + "/api/DroneScreenDisplay/GetCaseInfo?id=" + caseId,
dataType: "json",
headers: { "X-Token": localStorage.getItem("X-Token") },
async: false,
data: {},
beforeSend: function (xhr) { },
success: function (data) {
UAVInfo[0] = data.result;
console.log(!isFirst)
if (!isFirst) {
if (audio != null) {
audio.pause();
audio = null;
}
audio = "./audio/" + data.result.info.streetname + ".mp3";
console.log(audio);
audio = new Audio(audio);
audio.play();
}
}
});
for (var i = 0; i < 1; i++) {
var el = document.createElement('div');
el.className = 'marker';
el.style.backgroundSize = '100%';
var point = document.createElement("div");
point.className = 'point';
el.appendChild(point);
el.setAttribute("data-caseId", UAVInfo[i].info.id);
var uavimg = document.createElement("div");
// uavimg.className="UAVImg";
var uavimgCon = document.createElement("div");
uavimgCon.className = "uavimgCon";
uavimgCon.appendChild(el);
uavimgCon.append(uavimg);
el.className = "uavmarker";
$(document).on("click", '.uavmarker', function (e) {
console.log($(this).attr("data-caseId"))
var caseid = $(this).attr("data-caseId")
var IMAGE_BASE_URL = "http://60.213.14.14:6070";
$.ajax({
type: "GET",
url: BASE_URL + "/api/DroneScreenDisplay/GetCaseInfo",
dataType: "json",
headers: { "X-Token": localStorage.getItem("X-Token") },
data: { id: caseid },
async: false,
beforeSend: function (xhr) { },
success: function (data) {
if (data.code == 200) {
$('.caseinfoNo').text(data.result.info.case_no);
$('.caseinfoDesc').text(data.result.info.case_description);
$('.caseinfoZoing').text(data.result.info.countyname + "/" + data.result.info.streetname + "/" + data.result.info.communityname);
$('.caseinfoType').text(data.result.info.typename);
$('.caseinfoMarker').text(data.result.info.remark);
$(".caseinfoAddress").text(data.result.info.address);
$(".caseinfoTime").text(data.result.info.createtime);
$(".caseinfoArea").text(data.result.info.area);
$(".caseinfoImages").empty();
for (var i = 0; i < data.result.pic_list.length; i++) {
var url = IMAGE_BASE_URL + "/" + data.result.pic_list[i];
var appendStr = "<img src='" + IMAGE_BASE_URL + "/S_" + data.result.pic_list[i] + "' class='caseInfoImg' data-imgSrc='" + url + "' style='width:230px;height:100px;margin-right:15px;'/>";
$(".caseinfoImages").append(appendStr);
}
getkmcamera(data.result)
}
$(".caseInfoImg").click(function () {
$(".imgContainers").empty();
$(".imgDetail").show()
$(".imgDetail").css({ "display": "flex" });
var imgPath = $(this).attr("data-imgSrc");
var appendStrPath = "<img src='" + imgPath + "' style='width:100%;height:100%;'/>";
$(".imgContainers").append(appendStrPath);
})
}
});
//console.log($(this).attr("data-caseId"));
$('.bgPop2,.pop2').show();
})
// document.getElementsByClassName('uavmarker').addEventListener('click', (e) => {
// // console.log(e.path[1].getAttribute("data-caseId"));
// console.log(e)
// console.log($(this))
// console.log($(this).getAttribute("data-caseId"))
// // window.alert(marker.properties.message);
// var IMAGE_BASE_URL = "http://60.213.14.14:6070";
// $.ajax({
// type: "GET",
// url: BASE_URL + "/api/DroneScreenDisplay/GetCaseInfo",
// dataType: "json",
// headers: { "X-Token": localStorage.getItem("X-Token") },
// data: { id: e.path[1].getAttribute("data-caseId") },
// async: false,
// beforeSend: function (xhr) { },
// success: function (data) {
// if (data.code == 200) {
// $('.caseinfoNo').text(data.result.info.case_no);
// $('.caseinfoDesc').text(data.result.info.case_description);
// $('.caseinfoZoing').text(data.result.info.countyname + "/" + data.result.info.streetname + "/" + data.result.info.communityname);
// $('.caseinfoType').text(data.result.info.typename);
// $('.caseinfoMarker').text(data.result.info.remark);
// $(".caseinfoAddress").text(data.result.info.address);
// $(".caseinfoTime").text(data.result.info.createtime);
// $(".caseinfoArea").text(data.result.info.area);
// $(".caseinfoImages").empty();
// for (var i = 0; i < data.result.pic_list.length; i++) {
// var url = IMAGE_BASE_URL + "/" + data.result.pic_list[i];
// var appendStr = "<img src='" + IMAGE_BASE_URL + "/S_" + data.result.pic_list[i] + "' class='caseInfoImg' data-imgSrc='" + url + "' style='width:230px;height:100px;margin-right:15px;'/>";
// $(".caseinfoImages").append(appendStr);
// }
// }
// $(".caseInfoImg").click(function () {
// $(".imgContainers").empty();
// $(".imgDetail").show()
// $(".imgDetail").css({ "display": "flex" });
// var imgPath = $(this).attr("data-imgSrc");
// var appendStrPath = "<img src='" + imgPath + "' style='width:100%;height:100%;'/>";
// $(".imgContainers").append(appendStrPath);
// })
// }
// });
// //console.log($(this).attr("data-caseId"));
// $('.bgPop2,.pop2').show();
// });
console.log(UAVInfo[i])
var coordinate = [UAVInfo[i].lng, UAVInfo[i].lat];
// var UAVmarker = new mapboxgl.Marker(uavimgCon).setLngLat(coordinate).addTo(map);
var UAVmarker = new mapboxgl.Marker(uavimgCon).setLngLat(coordinate);
// var UAVmarker2 = new mapboxgl.Marker(uavimgCon).setLngLat([117.72339712649222,35.05450202665419]).addTo(map);
window.UAVMarkerArray.push(UAVmarker);
for (var i = 0; i < window.UAVMarkerArray.length; i++) {
window.UAVMarkerArray[i].addTo(map);
}
// console.log(UAVMarkerArray);
}
}
function loadNewestReportPoint() {
// console.log("load++");
// 加载最新数据
loadMainMap();
if (newestCountMarkerArray.length > 0) {
for (var i = 0; i < newestCountMarkerArray.length; i++) {
newestCountMarkerArray[i].remove(map);
}
}
if (historyCountMarkerArray.length > 0) {
for (var i = 0; i < historyCountMarkerArray.length; i++) {
historyCountMarkerArray[i].remove(map);
}
}
newestCountMarkerArray = [];
historyCountMarkerArray = [];
// console.log("townshipCaseCount111",townshipCaseCount);
let townships = [
{
name: "临沭县",
coordinate: [118.648379,34.917062]
}, {
name: "郯城县",
coordinate: [118.342963,34.614741],
}, {
name: "费县",
coordinate: [117.968869,35.269174],
}, {
name: "河东区",
coordinate: [118.398296,35.085004],
}, {
name: "兰山区",
coordinate: [118.327667,35.061631],
}, {
name: "罗庄区",
coordinate: [118.284795,34.997204],
}, {
name: "沂南县",
coordinate: [118.455395,35.547002],
}, {
name: "沂水县",
coordinate: [118.634543,35.787029],
}, {
name: "兰陵县",
coordinate: [118.049968,34.855573],
}, {
name: "平邑县",
coordinate: [117.631884,35.511519],
}, {
name: "莒南县",
coordinate: [118.838322,35.175911],
}, {
name: "蒙阴县",
coordinate: [117.943271,35.712435],
}
];
for (var j = 0; j < townships.length; j++) {
var arr = townshipCaseCount.filter((item, index) => {
// console.log(item.name);
if (item.name == townships[j].name) {
townships[j].newestCount = item.todayCount;
townships[j].historyCount = item.historyCount;
}
return item.name == townships[j].name;
})
}
for (var t = 0; t < townships.length; t++) {
var townshipContainer = document.createElement('div');
townshipContainer.className = 'townshipParent';
var townshipChildren = document.createElement("div");
townshipChildren.className = 'townshipChildren';
var townshipName = document.createElement("div");
townshipName.className = 'townshipName';
var mytext = document.createTextNode("历史线索:" + townships[t].historyCount);
townshipName.appendChild(mytext);
townshipChildren.appendChild(townshipName);
townshipContainer.appendChild(townshipChildren);
var township = new mapboxgl.Marker(townshipContainer).setLngLat([townships[t].coordinate[0], townships[t].coordinate[1] - 0.001]);
historyCountMarkerArray.push(township);
}
for (var t = 0; t < townships.length; t++) {
var newestParent = document.createElement('div');
newestParent.className = 'newestParent';
var newestChildren = document.createElement("div");
newestChildren.className = 'newestChildren';
var newestName = document.createElement("div");
newestName.className = 'newestName';
var mytext = document.createTextNode("最新线索:" + townships[t].newestCount);
newestName.appendChild(mytext);
newestChildren.appendChild(newestName);
newestParent.appendChild(newestChildren);
var township = new mapboxgl.Marker(newestParent).setLngLat([townships[t].coordinate[0], townships[t].coordinate[1]]);
newestCountMarkerArray.push(township);
}
}
function loadDroneMarker() {
if (DroneMarkerArray.length > 0) {
for (var i = 0; i < DroneMarkerArray.length; i++) {
DroneMarkerArray[i].remove(map);
}
}
DroneMarkerArray = [];
$.ajax({
type: "GET",
url: BASE_URL + "/api/DroneScreenDisplay/GetDroneLocationPointsFalse",
dataType: "json",
headers: { "X-Token": localStorage.getItem("X-Token") },
async: false,
data: {},
beforeSend: function (xhr) { },
success: function (data) {
if (data.code == 200) {
let results = data.result;
for (var i = 0; i < results.length; i++) {
var el = document.createElement('div');
el.className = 'marker';
el.style.backgroundSize = '100%';
var point = document.createElement("div");
point.className = 'point';
el.appendChild(point);
// el.setAttribute("data-caseId",UAVInfo[i].info.id);
var uavimg = document.createElement("div");
// uavimg.className="UAVImg";
var uavimgCon = document.createElement("div");
uavimgCon.className = "uavimgCon";
uavimgCon.appendChild(el);
uavimgCon.append(uavimg);
el.className = "uavmarker";
var coordinate = results[i].point[0].point.split(",");
console.log("coordinate", coordinate);
var DroneMarker = new mapboxgl.Marker(uavimgCon).setLngLat(coordinate).addTo(map);
DroneMarkerArray.push(DroneMarkerArray);
// var DroneMarker = new mapboxgl.Marker(uavimgCon).setLngLat(coordinate);
// var UAVmarker2 = new mapboxgl.Marker(uavimgCon).setLngLat([117.72339712649222,35.05450202665419]).addTo(map);
// DroneMarkerArray.push(DroneMarker);
// for(var i=0;i<DroneMarkerArray.length;i++){
// DroneMarkerArray[i].addTo(map);
// }
}
}
}
});
}
map.on('load', function () {
// loadLastReportPoint(news_report[0].id, true);
loadNewestReportPoint();
// loadDroneMarker();
// 马庄镇
// var data = {
// "account": "17853305026",
// "createtime": "2023-11-08 09:58:16",
// "height": 185,
// "ip": "192.168.10.101",
// "lat": 35.104007,
// "lng": 118.01002,
// "model": "airPlaneModel"
// }
// loadUAVBox(data)
map.loadImage(
'images/position.png',
(error, image) => {
if (error) throw error;
// Add the image to the map style.
map.addImage('cat', image);
}
);
map.loadImage(
'images/history.png',
(error, image) => {
if (error) throw error;
// Add the image to the map style.
map.addImage('history-icon', image);
}
);
map.loadImage(
'images/unmanned.png',
(error, image) => {
if (error) throw error;
// Add the image to the map style.
map.addImage('uav-icon', image);
}
);
map.loadImage(
'images/camera.png',
(error, image) => {
if (error) throw error;
// Add the image to the map style.
map.addImage('monitor-icon', image);
}
);
// 背景图层
map.addLayer({
"id": "background-id", // 唯一 id (必填)
"type": "background", // 类型(必填)
"minzoom": 0, // 最小层级(可选,取值范围为 0 ~ 24。当 style 的 zoom 小于此 minzoom 时layer 将被隐藏)
"maxzoom": 24, // 最大层级(可选,取值范围为 0 ~ 24。当 style 的 zoom 大于此 maxzoom 时layer 将被隐藏)
"paint": { // 绘制类属性
"background-color": "#0B122E", // 背景颜色(可选,默认值为 #000000。如果设置了 background-pattern则 background-color 将无效)
"background-opacity": 1 // 背景不透明度(可选,取值范围为 0 ~ 1默认值为 1
}
}
);
map.addImage('pulsing-dot', pulsingDot, { pixelRatio: 4 });
//卫星地图
map.addLayer({
'id': 'weixingditu',
'type': 'raster',
'source': {
"type": "raster",
"tiles": ['https://t0.tianditu.gov.cn/DataServer?T=img_w&x={x}&y={y}&l={z}&tk=ff98577d147820843ec2d04da3c5bad4'],
"tileSize": 256,
},
'paint': {
},
'layout': {
"visibility": "none"
},
"metadata": {
"zIndex": 1
}
});
// 添加影像图
map.addLayer({
'id': 'yingxiang',
'type': 'raster',
'source': {
"type": "raster",
"tiles": ['https://t0.tianditu.gov.cn/DataServer?T=cia_w&x={x}&y={y}&l={z}&tk=ff98577d147820843ec2d04da3c5bad4'],
"tileSize": 256,
},
'paint': {
},
'layout': {
"visibility": "none"
},
"metadata": {
"zIndex": 2
}
});
// 县界图层
map.addLayer({
'id': 'countyLayer',
'type': 'fill',
'source': {
'type': 'geojson',
'data': countygeojson,
},
'layout': {
"visibility": "none"
},
'paint': {
'fill-color': "#1f3cb1",
'fill-opacity': 0.8,
},
"metadata": {
"zIndex": 3
}
});
// 镇界图层面
map.addSource("townshipSource", {
'type': 'geojson',
'data': xianjie
});
map.addSource("townshipSource1", {
'type': 'geojson',
'data': xianjie
});
map.addLayer({
'id': 'townshipLayer',
'type': 'fill',
'source': 'townshipSource',
'layout': {
"visibility": "none"
},
'paint': {
'fill-color': colorSelect,
'fill-opacity': 1,
}
});
// 镇界图层线
map.addLayer({
'id': 'townshipLayerLine',
'type': 'line',
'source': 'townshipSource',
'layout': {
"visibility": "none"
},
'paint': {
'line-color': "#3f52be",
'line-width': 1,
// 'line-pattern':1
}
});
map.addSource("states", {
"type": "geojson",
"data": xianjie
});
// The feature-state dependent fill-opacity expression will render the hover effect
// when a feature's hover state is set to true.
map.addLayer({
"id": "state-fills",
"type": "fill",
"source": "states",
"layout": {},
"paint": {
"fill-color": colorSelect,
"fill-opacity": ["case",
["boolean", ["feature-state", "hover"], false],
1,
0.6
]
}
});
// 村界
map.addLayer({
'id': 'villageLayer',
'type': 'fill',
'source': {
'type': 'geojson',
'data': villageGeoJson
},
'layout': {
"visibility": "none"
},
'paint': {
'fill-color': [
'interpolate',
['linear'],
['get', 'OBJECTID'],
0,
'#0234fb',
3,
'#0937ef',
6,
'#0f39e2',
9,
'#143ad4',
12,
'#1a3abd',
15,
'#1f3cb1',
18,
'#233b9e',
21,
'#364686',
24,
'#6e81ca',
27,
'#0234fb',
30,
'#0937ef',
33,
'#0f39e2',
36,
'#143ad4',
39,
'#1a3abd',
42,
'#1f3cb1',
45,
'#233b9e',
48,
'#364686',
51,
'#6e81ca'
],
'fill-opacity': 1,
}
});
// 历史线索数量
map.addLayer({
id: `historyCaseLayer`,
type: 'symbol',
source: 'townshipSource',
filter: ['!', ['has', 'point_count']],
layout: {
'icon-image': '',
visibility: 'none',
'text-field': '历史线索:{count}',//此属性为需要显示的字段
'text-size': 12,
'text-offset': [0, 1],
'text-allow-overlap': false, // 是否允许文本重叠(可选,默认值为 false。
'text-anchor': 'top',
},
paint: {
// 绘制类属性
// 文本类属性(需要设置 text-field样式才生效
'text-color': '#ffffff', // 文本的颜色
'text-translate': [0, 0], // 文本的平移(可选,通过平移 [x, y] 达到一定的偏移量。默认值为 [0, 0]
'text-translate-anchor': 'map', // 文本的平移锚点,即相对的参考物(可选,可选值为 map、viewport默认为 map
},
})
// 最新线索数量
map.addLayer({
id: `newCaseLayer`,
type: 'symbol',
source: 'townshipSource',
filter: ['!', ['has', 'point_count']],
layout: {
'icon-image': '',
visibility: 'none',
'text-field': '最新线索:{newestCount}',//此属性为需要显示的字段
'text-size': 12,
'text-offset': [0, -1],
'text-allow-overlap': false, // 是否允许文本重叠(可选,默认值为 false。
'text-anchor': 'top',
},
paint: {
// 绘制类属性
// 文本类属性(需要设置 text-field样式才生效
'text-color': '#ffffff', // 文本的颜色
'text-translate': [0, 0], // 文本的平移(可选,通过平移 [x, y] 达到一定的偏移量。默认值为 [0, 0]
'text-translate-anchor': 'map', // 文本的平移锚点,即相对的参考物(可选,可选值为 map、viewport默认为 map
},
})
// 监控图层
map.addLayer({
"id": "monitorLayer",
"type": "symbol",
"source": {
"type": "geojson",
"data": {
"type": "FeatureCollection",
"features": [{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [117.7917792737033, 35.13858050971585]
}
}, {
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [117.72339712649222, 35.05450202665419]
}
}, {
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [117.95926374172524, 35.08209724883]
}
}]
}
},
"layout": {
"visibility": "none",
"icon-image": "monitor-icon"
}
});
// 监控图层
map.addLayer({
"id": "monitorTwoLayer",
"type": "symbol",
"source": {
"type": "geojson",
// "data": shexiangtouJSON
"data": jiankongJson
},
"layout": {
"visibility": "none",
"icon-image": "monitor-icon"
}
});
// 无人机
map.addLayer({
"id": "UAVView",
"type": "symbol",
"source": {
"type": "geojson",
"data": {
"type": "FeatureCollection",
// "features": [{
// "type": "Feature",
// "geometry": {
// "type": "Point",
// "coordinates": [118.130002, 35.264007]
// }
// }, {
// "type": "Feature",
// "geometry": {
// "type": "Point",
// "coordinates": [118.01002, 35.104007]
// }
// }, {
// "type": "Feature",
// "geometry": {
// "type": "Point",
// "coordinates": [118.030002, 35.204007]
// }
// }]
features: []
}
},
"layout": {
"visibility": "none",
"icon-image": "monitor-icon"
}
});
// 无人机图层
// map.addLayer({
// "id": "uavLayer1",
// "type": "symbol",
// "source": {
// "type": "geojson",
// "data": {
// "type": "FeatureCollection",
// "features": [{
// "type": "Feature",
// "geometry": {
// "type": "Point",
// "coordinates": [118.130002, 35.264007]
// }
// },{
// "type": "Feature",
// "geometry": {
// "type": "Point",
// "coordinates": [118.01002, 35.104007]
// }
// },{
// "type": "Feature",
// "geometry": {
// "type": "Point",
// "coordinates": [118.030002, 35.204007]
// }
// }]
// }
// },
// "layout": {
// "visibility":"none",
// "icon-image": "pulsing-dot"
// }
// });
// $.ajax({
// type: "GET",
// url: BASE_URL + "/api/DroneScreenDisplay/GetDroneLocationPointsFalse",
// dataType: "json",
// async:false,
// data:{},
// beforeSend: function(xhr) {},
// success: function(data){
// let UAVArray = [];
// data.result.forEach(function(item,index){
// let UAVObj = {
// marker: new mapboxgl.Marker(),
// UAVFly:function(lng,lat){
// this.marker.setLngLat([lng,lat]).addTo(map)
// }
// }
// UAVArray[index] = marker;
// })
// }
// });
// 最新上报图层
//最新上报
var newsReportData = [];
var newsReportDataGeoJson = [];
$.ajax({
type: "GET",
url: BASE_URL + "/api/DroneScreenDisplay/LoadDroneCase",
dataType: "json",
headers: { "X-Token": localStorage.getItem("X-Token") },
async: false,
data: {},
beforeSend: function (xhr) { },
success: function (data) {
newsReportData = data.result;
newsReportData.forEach(function (item, index) {
if (item.lng && item.lat) {
var reportCase = {
"id": item.id,
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [item.lng, item.lat],
},
"properties": {
"id": item.id
},
}
// newsReportDataGeoJson.features.push(reportCase);
var uavimg = document.createElement("div");
uavimg.className = "POSIRIONImg";
var uavimgCon = document.createElement("div");
uavimgCon.className = "uavimgCon";
uavimgCon.append(uavimg);
var coordinate = [item.lng, item.lat];
// var UAVmarker = new mapboxgl.Marker(uavimgCon).setLngLat(coordinate).addTo(map);
var UAVmarker = new mapboxgl.Marker(uavimgCon).setLngLat(coordinate);
newsReportDataGeoJson.push(UAVmarker);
newsReportDataGeoJsonArr.push(UAVmarker)
}
if (index == newsReportData.length - 1) {
}
});
}
});
newsReportDataGeoJsonArr.forEach(item => {
// item.addTo(map);
})
// map.addLayer({
// "id": "newCaseLayer",
// "type": "symbol",
// "source": {
// "type":"geojson",
// "data":newsReportDataGeoJson
// },
// "layout": {
// "visibility":"none",
// "icon-image": "cat"
// }
// });
//历史线索
function getPolygonCenter(pList) { //获取多边形中心点
var area = 0;
var x = 0;
var y = 0;
for (var i = 1; i <= pList.length; i++) {
var lat = pList[i % pList.length][0];
var lng = pList[i % pList.length][1];
var nextLat = pList[i - 1][0];
var nextLng = pList[i - 1][1];
var temp = (lat * nextLng - lng * nextLat) / 2;
area += temp;
x += (temp * (lat + nextLat)) / 3;
y += (temp * (lng + nextLng)) / 3;
}
x = x / area;
y = y / area;
return [x, y];
};
var historyCaseGeoJson = {};
$.ajax({
type: "GET",
url: "http://175.27.168.120:8080/geoserver/hangfei/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=hangfei%3Aanjianjilu&maxFeatures=1000000000&outputFormat=application%2Fjson",
dataType: "json",
headers: { "X-Token": localStorage.getItem("X-Token") },
async: false,
data: {},
beforeSend: function (xhr) { },
success: function (data) {
data.features.forEach(function (item, index) {
// data.features[index].geometry.type="Point";
// data.features[index].geometry.coordinates=getPolygonCenter(item.geometry.coordinates[0][0]);
var uavimg = document.createElement("div");
uavimg.className = "HISTORyImg";
var uavimgCon = document.createElement("div");
uavimgCon.className = "uavimgCon";
uavimgCon.append(uavimg);
var coordinate = getPolygonCenter(item.geometry.coordinates[0][0])
var UAVmarker = new mapboxgl.Marker(uavimgCon).setLngLat(coordinate);
historyCaseGeoJsonArr.push(UAVmarker);
})
historyCaseGeoJson = data;
//console.log(data);
// getPolygonCenter(data.features.geometry.coordinates[0][0])
}
});
// map.addLayer({
// "id": "historyCaseLayer",
// "type": "symbol",
// "source": {
// "type": "geojson",
// "data": historyCaseGeoJson,
// },
// "layout": {
// "visibility":"none",
// "icon-image": "history-icon"
// }
// });
// map.addLayer({
// "id": "state-borders",
// "type": "line",
// "source": "states",
// "layout": {},
// "paint": {
// "line-color": "#627BC1",
// "line-width": 2
// }
// });
// map.addSource('wms-test-source', {
// 'type': 'raster',
// // use the tiles option to specify a WMS tile source URL
// // https://docs.mapbox.com/mapbox-gl-js/style-spec/sources/
// 'tiles': [
// 'http://175.27.168.120:8080/geoserver/feixian/wms?service=WMS&version=1.1.0&request=GetMap&layers=feixian%3Ayingxiang&bbox=581713.2990911475%2C3882682.1443521073%2C610409.5371911475%2C3916536.5138721075&width=650&height=768&srs=EPSG%3A4509&format=application/openlayers'
// ],
// 'tileSize': 256
// });
// map.addLayer(
// {
// 'id': 'wms-test-layer',
// 'type': 'raster',
// 'source': 'wms-test-source',
// 'paint': {}
// },
// // 'aeroway-line'
// );
var popup = new mapboxgl.Popup({
closeButton: false,
closeOnClick: false,
});
map.on('mousemove', 'townshipLayer', (e) => {
// e.preventDefault();
console.log(e)
map.getCanvas().style.cursor = 'pointer';
// var coordinates = e.features[0].geometry.coordinates.slice();
// const description = e.features[0].properties.description;
var townshipInfo = townshipCaseCount.filter(item => {
return item.name == e.features[0].properties.XZQMC;
})
var str = "乡镇名称:" + e.features[0].properties.XZQMC + "<br> &nbsp;<br>线索数量:" + townshipInfo[0].reportCount;
popup.setLngLat([e.lngLat.lng, e.lngLat.lat]).setHTML("<p style='color:#333;font-weight:bold;'>" + str + "</p>").addTo(map);
});
var hoveredStateId = null;
map.on("click", function (e) {
// console.log(e);
})
map.on("mousemove", "townshipLayer", function (e) {
if (e.features.length > 0) {
if (hoveredStateId) {
map.setFeatureState({ source: 'townshipSource', id: hoveredStateId }, { hover: false });
}
hoveredStateId = e.features[0].id;
map.setFeatureState({ source: 'townshipSource', id: hoveredStateId }, { hover: true });
}
});
// When the mouse leaves the state-fill layer, update the feature state of the
// previously hovered feature.
map.on("mouseleave", "townshipLayer", function () {
if (hoveredStateId) {
map.setFeatureState({ source: 'townshipSource', id: hoveredStateId }, { hover: false });
}
hoveredStateId = null;
});
map.on("click", "townshipLayer", (e) => {
//console.log(e.lngLat.lng,e.lngLat.lat);
})
map.on("click", "historyCaseLayer", (e) => {
var currentHistoryCaseId = e.features[0].properties.Id;
//console.log(currentHistoryCaseId);
})
map.on("mousemove", "state-fills", function (e) {
map.getCanvas().style.cursor = 'pointer';
var townshipInfo = townshipCaseCount.filter(item => {
return item.name == e.features[0].properties.name;
})
let jrajs = townshipInfo[0].todayCount || ''
let lsajs = townshipInfo[0].historyCount || ''
var str = "区域名称:" + e.features[0].properties.name + "<br> &nbsp;<br>线索数量:" + townshipInfo[0].reportCount;
popup.setLngLat([e.lngLat.lng, e.lngLat.lat]).setHTML("<p style='color:#333;font-weight:bold;'>" + str + "</p>").addTo(map);
if (e.features.length > 0) {
if (hoveredStateId) {
map.setFeatureState({ source: 'states', id: hoveredStateId }, { hover: false });
}
hoveredStateId = e.features[0].id;
map.setFeatureState({ source: 'states', id: hoveredStateId }, { hover: true });
}
});
// When the mouse leaves the state-fill layer, update the feature state of the
// previously hovered feature.
map.on("mouseleave", "state-fills", function () {
if (hoveredStateId) {
map.setFeatureState({ source: 'states', id: hoveredStateId }, { hover: false });
}
hoveredStateId = null;
popup.remove();
});
map.on("click", "newCaseLayer", (e) => {
// //console.log("helloVue",e.features[0]);
var currentHistoryCaseId = e.features[0].properties.id;
$.ajax({
type: "GET",
url: BASE_URL + "/api/DroneScreenDisplay/GetCaseInfo",
dataType: "json",
headers: { "X-Token": localStorage.getItem("X-Token") },
data: { id: currentHistoryCaseId },
async: false,
beforeSend: function (xhr) { },
success: function (data) {
if (data.code == 200) {
$('.caseinfoNo').text(data.result.info.case_no);
$('.caseinfoDesc').text(data.result.info.case_description);
$('.caseinfoZoing').text(data.result.info.countyname + "/" + data.result.info.streetname + "/" + data.result.info.communityname);
$('.caseinfoType').text(data.result.info.typename);
$('.caseinfoMarker').text(data.result.info.remark);
$(".caseinfoAddress").text(data.result.info.address);
$(".caseinfoTime").text(data.result.info.createtime);
$(".caseinfoArea").text(data.result.info.area);
$(".caseinfoImages").empty();
for (var i = 0; i < data.result.pic_list.length; i++) {
var appendStr = "<img src='" + IMAGE_BASE_URL + "/" + data.result.pic_list[i] + "' class='caseInfoImg' style='width:230px;height:100px;margin-right:15px;'/>";
$(".caseinfoImages").append(appendStr);
}
}
$(".caseInfoImg").click(function () {
$(".imgContainers").empty();
$(".imgDetail").show()
$(".imgDetail").css({ "display": "flex" });
var imgPath = $(this).context.currentSrc
var appendStrPath = "<img src='" + imgPath + "' style='width:100%;height:100%;'/>";
$(".imgContainers").append(appendStrPath);
})
}
});
$('.bgPop2,.pop2').show();
})
map.on("click", "monitorTwoLayer", (e) => {
// cameraindexcode 监控IDchannelno 设备通道;
console.log(e.features[0].properties)
$('.bgPop4,.pop4').show();
vm.iframeVisble = true
localStorage.setItem("monitorTwoLayerData", JSON.stringify(e.features[0].properties))
child.window.childFunction();
})
map.on('click', 'markerId', (e) => {
console.log(e.features[0].properties)
})
map.on("click", "UAVLayer", (e) => {
$('.bgPop5,.pop5').show();
})
});
var myWebSocket2 = null;
var lockReconnect2 = false
var myWebSocketTimer2 = null;
function websocketReconnect2() {
if (lockReconnect2) { // 是否已经执行重连
return;
};
lockReconnect2 = true;
// 没连接上会一直重连,设置延迟避免请求过多
var tt = null;
tt && clearTimeout(tt);
var _this = this;
tt = setTimeout(function () {
initWebSocket2();
lockReconnect2 = false;
// console.log("正在发起2次WebSocket重连")
}, 5000)
}
for (var i = 0; i < $(".center_top_con_but").length; i++) {
if ($(".center_top_con_but").eq(i).attr("data-isActive") == "true") {
$(".center_top_con_but").eq(i).css({ "color": "#FFF71E" });
}
}
$(".center_top_con_but").click(function () {
var layerName = $(this).attr("data-layerName");
var isActive = $(this).attr("data-isActive");
if (layerName == "uavLayer") {
if (isActive == 'true') {
for (var i = 0; i < window.UAVMarkerArray.length; i++) {
window.UAVMarkerArray[i].remove(map);
}
$(this).attr("data-isActive", "false");
$(this).css({ color: "#fff" });
$(this).find(".centerimg").show()
$(this).find(".centerimgActive").hide()
if (getUAVMarkersTimer) {
clearInterval(getUAVMarkersTimer);
getUAVMarkersTimer = null;
}
} else {
for (var i = 0; i < window.UAVMarkerArray.length; i++) {
window.UAVMarkerArray[i].addTo(map);
}
$(this).css({ "color": "#FFF71E" });
$(this).attr("data-isActive", "true");
$(this).find(".centerimg").hide()
$(this).find(".centerimgActive").show()
}
return;
}
if (layerName == "newCaseLayer") {
if (isActive == 'true') {
newestCountMarkerArray.forEach(item => {
item.remove(map);
})
$(this).attr("data-isActive", "false");
$(this).css({ color: "#fff" });
$(this).find(".centerimg").show()
$(this).find(".centerimgActive").hide()
} else {
if ($(".historyCaseLayer").attr("data-isActive") == "true") {
historyCountMarkerArray.forEach(item => {
item.remove(map);
})
$(".historyCaseLayer").attr("data-isActive", "false");
$(".historyCaseLayer").css({ color: "#fff" });
$(".historyCaseLayer").find(".centerimg").show()
$(".historyCaseLayer").find(".centerimgActive").hide()
}
loadNewestReportPoint();
newestCountMarkerArray.forEach(item => {
item.addTo(map);
})
$(this).css({ "color": "#FFF71E" });
$(this).attr("data-isActive", "true");
$(this).find(".centerimg").hide()
$(this).find(".centerimgActive").show()
}
return;
}
if (layerName == "historyCaseLayer") {
if (isActive == 'true') {
historyCountMarkerArray.forEach(item => {
item.remove(map);
})
$(this).attr("data-isActive", "false");
$(this).css({ color: "#fff" });
$(this).find(".centerimg").show()
$(this).find(".centerimgActive").hide()
} else {
loadNewestReportPoint();
if ($(".newCaseLayer").attr("data-isActive") == "true") {
newestCountMarkerArray.forEach(item => {
item.remove(map);
})
$(".newCaseLayer").attr("data-isActive", "false");
$(".newCaseLayer").css({ color: "#fff" });
$(".newCaseLayer").find(".centerimg").show()
$(".newCaseLayer").find(".centerimgActive").hide()
}
historyCountMarkerArray.forEach(item => {
item.addTo(map);
})
$(this).css({ "color": "#FFF71E" });
$(this).attr("data-isActive", "true");
$(this).find(".centerimg").hide()
$(this).find(".centerimgActive").show()
}
return;
}
var visibility = map.getLayoutProperty(layerName, "visibility");
if (visibility === "visible") {
map.setLayoutProperty(layerName, "visibility", "none");
$(this).css({ color: "#fff" });
$(this).find(".centerimg").show()
$(this).find(".centerimgActive").hide()
} else {
map.setLayoutProperty(layerName, "visibility", "visible");
$(this).css({ "color": "#FFF71E" });
$(this).find(".centerimg").hide()
$(this).find(".centerimgActive").show()
}
})
// })