//开始获取接口 var timestamp1 = new Date().getTime(); var securityKey = 'RTcunWv#BVhi'; var signCar = sha1(timestamp1.toString() + securityKey); var msgId = generateUUID(); var cluster, markers = []; var carTraLineArr = [], carTraRouteInfo = [], carTraLineArr2 = []; var carArry = []; var _lttHTTPipUrl = "/lttGps"; var ZYWLUrl = ""; var BDUrl = "/BDGps";//add20210821 layui.config({ base: '../../js/' }).use(['layer', 'table', 'form', 'flow', 'laydate'], function () { var $ = layui.jquery, layer = parent.layer === undefined ? layui.layer : top.layer, table = layui.table, form = layui.form, flow = layui.flow, laydate = layui.laydate; var OrgId = JSON.parse(window.sessionStorage.getItem("userInfo")).OrgID; //var OrgId = "fbbb44bb458c4336a84e009df74c8598";//石河子 //根据当前登陆人机构ID获取机构所在经纬度 $.ajax({ type: "post", url: "../../ashx/FireOrgHandler.ashx", data: { Action: "getFireOrgName", ID: OrgId }, dataType: "json", success: function (result) { var loc = wgs84togcj02(Number(result.data.LON), Number(result.data.LAT)); initMap(loc[0], loc[1], result.data.CITY); } }) /** * * * -------------------------------------------------------------------------------------------------------- * ----------------------------------------------------车辆列表-------------------------------------------- * -------------------------------------------------------------------------------------------------------- * */ var CarListfun = function () { //车俩列表 var tableIns = table.render({ elem: '#carList', url: '../../ashx/CarHandler.ashx', where: { Action: 'GetCarListByIMEI', OrgId: OrgId, random: new Date().getTime() }, cellMinWidth: 95, //page: true, page: { //支持传入 laypage 组件的所有参数(某些参数除外,如:jump/elem) - 详见文档 layout: ['limit', 'count', 'prev', 'page', 'next', 'skip'] //自定义分页布局 , groups: 3 //只显示 1 个连续页码 , first: false //不显示首页 , last: false //不显示尾页 }, height: 430, limits: [10, 15, 20, 25], limit: 10, id: "carListTable", skin: 'line', cols: [[ { type: "numbers", title: "序号", fixed: "left", width: 60, align: "center" }, { field: 'CAR_NUM', title: '车牌号码', minWidth: 160, align: "center" }, { title: '定位', width: 60, templet: '#carLocationBar', align: "center" }, { title: '轨迹', width: 60, templet: '#trajectoryBar', align: "center" }, { title: '车载视频', width: 100, templet: '#electronicFenceBar', align: "center" } ]], done: function (res, curr, count) { markers = []; carArry = res.data; for (var i in res.data) { getCarPoint(encodeURI(JSON.stringify(res.data[i]))); } ClusterMapfun(); //定时获取车辆的位置 setInterval(function () { for (var i in carArry) { var targetId = res.data[i].IMEI; var targetMarker; for (var a = 0; a < markers.length; a++) { var id = markers[a].id; if (id === targetId) { map.remove(markers[a]); markers.shift(); break; } } getCarPoint(encodeURI(JSON.stringify(carArry[i]))); } ClusterMapfun(); }, 1000*60*2); } }); } $("#carListsearchBtn").on("click", function () { table.reload("carListTable", { page: { curr: 1 //重新从第 1 页开始 }, where: { Action: 'GetCarListByIMEI', OrgId: OrgId, carNum: $("#carListsearchVal").val(), //搜索的关键字 random: new Date().getTime() //随机参数 } }); }); //文本框回车事件 $('#carListsearchVal').bind('keypress', function (event) { if (event.keyCode == "13") { table.reload("carListTable", { page: { curr: 1 //重新从第 1 页开始 }, where: { Action: 'GetCarListByIMEI', OrgId: OrgId, carNum: $("#carListsearchVal").val(), //搜索的关键字 random: new Date().getTime() //随机参数 } }); } }); //车辆列表操作 table.on('tool(carList)', function (obj) { console.log(obj); var layEvent = obj.event; console.log(layEvent); var data = obj.data; if (layEvent == 'carLocation') {//定位 if (data.FACTORY == "1") { $.ajax({ type: "GET", url: _lttHTTPipUrl +"/GPS/Vehicle/VehicleLocation?vehicleNo=" + data.IMEI, success: function (result) { var point = wgs84togcj02(Number(result.Lon), Number(result.Lat)); map.setZoomAndCenter(19, point); var infohtml = ""; infohtml += ""; infohtml += ""; infohtml += ""; infohtml += ""; infohtml += ""; infohtml += "
定位时间:" + result.ReportTime + "
车牌号:" + data.CAR_NUM + "
车辆名称:" + data.CAR_NAME + "
车辆类型:" + data.TYPE + "
车辆详情:" + data.REMARKS + "
"; infoWindow.setContent(infohtml); infoWindow.open(map, point); }, error: function (err) { console.log(err); } }); } else if (data.FACTORY == "0"){ $.ajax({ type: "GET", url: ZYWLUrl+"/api/v0/terminals/" + data.IMEI + "/realtime?timestamp=" + timestamp1 + "&sign=" + signCar, async: false, headers: { "sysCode": "30001", "from": "OTHER", "Content-Type": "application/json", "msgId": msgId.toString() }, success: function (result) { var point = wgs84togcj02(Number(result.longitude), Number(result.latitude)); map.setZoomAndCenter(19, point); var infohtml = ""; infohtml += ""; infohtml += ""; infohtml += ""; infohtml += ""; infohtml += "
车牌号:" + data.CAR_NUM + "
车辆名称:" + data.CAR_NAME + "
车辆类型:" + data.TYPE + "
车辆详情:" + data.REMARKS + "
"; infoWindow.setContent(infohtml); infoWindow.open(map, point); }, error: function (err) { console.log(err); } }); } else if (data.FACTORY == "2") {//add20210821 $.ajax({ type: "GET", url: BDUrl + "/StandardApiAction_getDeviceStatus.action?devIdno=" + data.IMEI, dataType: "json", async: false, success: function (result) { var result = result.status[0]; var point = [Number(result.mlng), Number(result.mlat)]; map.setZoomAndCenter(19, point); var infohtml = ""; infohtml += ""; infohtml += ""; infohtml += ""; infohtml += ""; infohtml += "
车牌号:" + data.CAR_NUM + "
车辆名称:" + data.CAR_NAME + "
车辆类型:" + data.TYPE + "
车辆详情:" + data.REMARKS + "
"; infoWindow.setContent(infohtml); infoWindow.open(map, point); }, error: function (err) { console.log(err); } }); } } else if (layEvent == 'trajectory') {//轨迹 if (obj.data.FACTORY == "2") {//add20210821 getTraItem(obj.data.IMEI, "", "", obj.data.FACTORY); hidecarListDivfun(); hidealarmListfun(); hideamapSearchfun(); } else { hidecarListDivfun(); hidealarmListfun(); hideamapSearchfun(); $("#carnum").siblings("div.layui-form-select").find('dl').find("dd[lay-value='" + data.IMEI + "']").click(); } } else if (layEvent == 'electronicFence') {//实时视频 var l = (screen.availWidth - 500) / 2; var t = (screen.availHeight - 300) / 2; switch (OrgId) { case '062fdb4694434b41b9d6b5063650dd45'://塔城地区消防支队 case '69dba54a79c64f40905e90d39c977af4'://塔城市大队 case 'e3e44b76dea4460a81051135bca5c485'://托里县大队 case '8ddfcef4fde54999b96b520286a6c8bf'://裕民县大队 case '764d3305ff6c47b99ee82d0dd1a7b915'://和丰县大队 case '83b4c33993d04593bfe4a5d7a0d21c73'://乌苏市大队 case '69eb087f42904ab5aa70424c39892732'://沙湾县大队 case '16b3f7e89d824db490454a279dc777c8'://额敏县大队 layer.msg("【" + data.CAR_NUM + "】设备,未开通视频"); return false; default: //return true; } if (data.FACTORY == "1") { //window.open('LTTMapVideoRealPlay.html?carNum=' + data.IMEI, '实时视频', 'height=800, width=1500, top='+t+', left='+l+', toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no'); window.open('LTTMapVideoRealPlay.html?carNum=' + data.IMEI, '实时视频', 'height=300, width=550, top='+t+', left='+l+', toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no'); } else if (data.FACTORY == "0") { window.open('MapVideoRealPlay.html?imei=' + data.IMEI, '实时视频', 'height=300, width=550, top='+t+', left='+l+', toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no'); } else if (data.FACTORY == "2") {//add20210821 window.open("http://183.62.225.103:8080/808gps/open/player/video.html?lang=zh&devIdno="+data.IMEI+"&&account=clwpt&password=000000", '实时视频', 'height=500, width=950, top=' + t + ', left=' + l + ', toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no'); } } }) $("#carListDiv .minimize").click(function () { hidecarListDivfun(); }) var hidecarListDivfun = function () { //车辆列表 $("#tool_vehicleList").attr("src", "img/is车辆列表.png"); $("#tool_vehicleList").attr("data-value", "0"); $("#carListDiv").hide(800); } /** * * * -------------------------------------------------------------------------------------------------------- * --------------------------------------------当天车辆报警信息-------------------------------------------- * -------------------------------------------------------------------------------------------------------- * */ // 获取当前日期 var date = new Date(); // 获取当前月份 var nowMonth = date.getMonth() + 1; // 获取当前是几号 var strDate = date.getDate(); // 添加分隔符“-” var seperator = "-"; // 对月份进行处理,1-9月在前面添加一个“0” if (nowMonth >= 1 && nowMonth <= 9) { nowMonth = "0" + nowMonth; } // 对月份进行处理,1-9号在前面添加一个“0” if (strDate >= 0 && strDate <= 9) { strDate = "0" + strDate; } // 最后拼接字符串,得到一个格式为(yyyy-MM-dd)的日期 var nowDate = date.getFullYear() + seperator + nowMonth + seperator + strDate; //add20210824 var lw2 = new Date(date - 1000 * 60 * 60 * 24 * 89);//最后一个数字89可改,89天的意思 var lastY2 = lw2.getFullYear(); var lastM2 = lw2.getMonth() + 1; var lastD2 = lw2.getDate(); var startTime = lastY2 + "-" + lastM2 + "-" + lastD2 + " 00:00:00"; //报警列表 流数据 flow.load({ elem: '#alarmTbody', isAuto: true, done: function (page, next) { console.log(next); var lis = []; $.ajax({ type: "post", url: "../../ashx/AlarmDataHandler.ashx", data: { Action: "List", searchTime: nowDate, OrgId: OrgId, ALARM_TYPE: '2' }, dataType: "json", success: function (result) { layui.each(result.data, function (index, item) { var newItem = encodeURI(JSON.stringify(item)); lis.push('' + item.CAR_NUM + '' + item.TIME + ''); }); next(lis.join(''), page < result.count / 10); } }) //add20210824 var imeiArray = [], carNumArray = [];; carArry.forEach(function (carItem) { if (carItem.FACTORY == "2") { imeiArray.push(carItem.IMEI); carNumArray.push(carItem.CAR_NUM); } }) $.ajax({ type: "post", url: BDUrl + "/StandardApiAction_queryAlarmDetail.action", data: { devIdno: imeiArray.toString(), vehiIdno: carNumArray.toString(), begintime: startTime, endtime: nowDate + "23:59:59", armType: "11,49"//11:超速报警;49:疲劳驾驶报警 }, dataType: "json", success: function (result) { //if (result.alarms == null) { // var alarmsArray = []; // alarmsArray.push({ // desc: "系统检测:车辆已超速!",//报警描述 // atp: 11,//报警类型 // vid: "粤B8A20",//车牌号 // img: "img/超速1.jpg",//图片信息 // stm: 1629614635000,//报警开始时间(UTC) 秒数 // smlng: "113.409352",//高德经度 // smlat: "22.984378",//高德纬度 // hd: 0,//处理状态;1表示已处理,0表示未处理。 // hdc: "",//处理内容 // hdt: ""//处理内容时间 // }); // alarmsArray.push({ // desc: "系统检测:驾驶人有闭眼、打瞌睡现象!",//报警描述 // atp: 49,//报警类型 // vid: "粤B8A21",//车牌号 // img: "img/pljs.jpeg",//图片信息 // stm: 1629594099000,//报警开始时间(UTC) 秒数 // smlng: "113.921541",//高德经度 // smlat: "22.498061",//高德纬度 // hd: 1,//处理状态;1表示已处理,0表示未处理。 // hdc: "已提醒司机,并停车休息!",//处理内容 // hdt: "1629594143000"//处理内容时间 // }); // alarmsArray.push({ // desc: "系统检测:车辆时速已达到121KM/H!",//报警描述 // atp: 11,//报警类型 // vid: "粤B8A22",//车牌号 // img: "img/超速2.png",//图片信息 // stm: 1629274466000,//报警开始时间(UTC) 秒数 // smlng: "113.894869",//高德经度 // smlat: "22.498522",//高德纬度 // hd: 1,//处理状态;1表示已处理,0表示未处理。 // hdc: "已提醒司机,并降低车速!",//处理内容 // hdt: "1629274571000"//处理内容时间 // }); // alarmsArray.forEach(function (item) { // var stmDate = new Date(item.stm); // var YY = stmDate.getFullYear() + '-'; // var MM = (stmDate.getMonth() + 1 < 10 ? '0' + (stmDate.getMonth() + 1) : stmDate.getMonth() + 1) + '-'; // var DD = (stmDate.getDate() < 10 ? '0' + (stmDate.getDate()) : stmDate.getDate()); // var hh = (stmDate.getHours() < 10 ? '0' + stmDate.getHours() : stmDate.getHours()) + ':'; // var mm = (stmDate.getMinutes() < 10 ? '0' + stmDate.getMinutes() : stmDate.getMinutes()) + ':'; // var ss = (stmDate.getSeconds() < 10 ? '0' + stmDate.getSeconds() : stmDate.getSeconds()); // if (item.hdt != null && item.hdt != "") { // var stmDate1 = new Date(Number(item.hdt)); // var YY1 = stmDate1.getFullYear() + '-'; // var MM1 = (stmDate1.getMonth() + 1 < 10 ? '0' + (stmDate1.getMonth() + 1) : stmDate1.getMonth() + 1) + '-'; // var DD1 = (stmDate1.getDate() < 10 ? '0' + (stmDate1.getDate()) : stmDate1.getDate()); // var hh1 = (stmDate1.getHours() < 10 ? '0' + stmDate1.getHours() : stmDate1.getHours()) + ':'; // var mm1 = (stmDate1.getMinutes() < 10 ? '0' + stmDate1.getMinutes() : stmDate1.getMinutes()) + ':'; // var ss1 = (stmDate1.getSeconds() < 10 ? '0' + stmDate1.getSeconds() : stmDate1.getSeconds()); // item.hdt = YY1 + MM1 + DD1 + " " + hh1 + mm1 + ss1; // } // var atpName = ""; // switch (item.atp) { // case 11: // atpName = "【超速】"; // break; // case 49: // atpName = "【疲劳驾驶】"; // break; // default: // break; // } // item.atp = atpName; // var hdName = ""; // switch (item.hd) { // case 0: // hdName = "【未处理】"; // break; // case 1: // hdName = "【已处理】"; // break; // default: // break; // } // item.hd = hdName; // item.stm = YY + MM + DD + " " + hh + mm + ss; // var newItem = encodeURI(JSON.stringify(item)); // lis.push('' + item.vid + '' + item.stm + ''); // }) //} else { layui.each(result.alarms, function (index, item) { var stmDate = new Date(item.stm); var YY = stmDate.getFullYear() + '-'; var MM = (stmDate.getMonth() + 1 < 10 ? '0' + (stmDate.getMonth() + 1) : stmDate.getMonth() + 1) + '-'; var DD = (stmDate.getDate() < 10 ? '0' + (stmDate.getDate()) : stmDate.getDate()); var hh = (stmDate.getHours() < 10 ? '0' + stmDate.getHours() : stmDate.getHours()) + ':'; var mm = (stmDate.getMinutes() < 10 ? '0' + stmDate.getMinutes() : stmDate.getMinutes()) + ':'; var ss = (stmDate.getSeconds() < 10 ? '0' + stmDate.getSeconds() : stmDate.getSeconds()); var newItem = encodeURI(JSON.stringify(item)); lis.push('' + item.vid + '' + YY + MM + DD + " " + hh + mm + ss + ''); }); //} next(lis.join(''), page < result.count / 10); } }) } }); //报警列表操作 $("#alarmTbody").on("click", "tr td img", function () { //add20210824 var data = JSON.parse(decodeURI($(this).attr("data-value"))); $("#alarmItem_img").attr("src", data.img); $("#alarmItem_vid").html(data.vid); $("#alarmItem_atp").html(data.atp); $("#alarmItem_desc").html(data.desc); $("#alarmItem_stm").html(data.stm); $("#alarmItem_hd").html(data.hd); $("#alarmItem_hdc").html(data.hdc); $("#alarmItem_hdt").html(data.hdt); map.setZoomAndCenter(16, [Number(data.smlng), Number(data.smlat)]); var marker; var icon = new AMap.Icon({ image: 'img/报警.png', size: new AMap.Size(48, 48) }); marker = new AMap.Marker({ offset: new AMap.Pixel(-12, -12), zIndex: 101, map: map, icon: icon }); var index = layui.layer.open({ title: "【" + data.vid + "】报警详情", type: 1, closeBtn: 2, anim: 5, content: $("#alarmItem").html(), cancel: function (index, layero) { map.remove(marker); } }) }) $("#alarmList .minimize").click(function () { hidealarmListfun(); }) var hidealarmListfun = function () { //报警列表 $("#tool_alarmList").attr("src", "img/is报警列表.png"); $("#tool_alarmList").attr("data-value", "0"); $("#alarmList").hide(800); } /** * * * -------------------------------------------------------------------------------------------------------- * ----------------------------------------------------车辆轨迹-------------------------------------------- * -------------------------------------------------------------------------------------------------------- * */ $("#carTraListDiv .minimize").click(function () { hidecartraListfun(); }) var hidecartraListfun = function () { //车辆轨迹列表 $("#carTraListDiv").hide(800); } //获取当前日期 var myDate = new Date(); var nowY = myDate.getFullYear(); var nowM = myDate.getMonth() + 1; var nowD = myDate.getDate(); var enddate = nowY + "-" + (nowM < 10 ? "0" + nowM : nowM) + "-" + (nowD < 10 ? "0" + nowD : nowD);//当前日期 //获取三十天前日期 var lw = new Date(myDate - 1000 * 60 * 60 * 24 * 30);//最后一个数字30可改,30天的意思 var lastY = lw.getFullYear(); var lastM = lw.getMonth() + 1; var lastD = lw.getDate(); var startdate = lastY + "-" + (lastM < 10 ? "0" + lastM : lastM) + "-" + (lastD < 10 ? "0" + lastD : lastD);//三十天之前日期 //初始赋值 laydate.render({ elem: '#travelTime', value: startdate + ' - ' + enddate, isInitValue: true, range: true, done: function (value) { if (value.indexOf(" - ") != -1 && $("#carnum").val() != null) { var startTime = value.split(" - ")[0] var endTime = value.split(" - ")[1]; getTraListData($("#carnum").val(), startTime, endTime); $("#carTraListDiv").show(800); } } }); $.ajax({ type: "post", url: "../../ashx/CarHandler.ashx", data: { Action: "GetCarListByIMEI", OrgId: OrgId, page: '1', limit: '99999' }, dataType: "json", success: function (result) { var carnumStr = ""; result.data.forEach(function (obj, index, arr) { carnumStr += ""; }); $("#carnum").append(carnumStr); CarListArr = result.data; form.render('select'); } }) form.on('select(carnum)', function (data) { var travelTime = $("#travelTime").val(); if (travelTime.indexOf(" - ") != -1 && $("#carnum").val() != null) { var startTime = travelTime.split(" - ")[0] var endTime = travelTime.split(" - ")[1]; getTraListData($("#carnum").val(), startTime, endTime); $("#carTraListDiv").show(800); } }); var getTraListData = function (imei, startTime, endTime) { $("#carTraTbody").html(""); imei = imei == null ? $("#carnum").val() : imei; if (imei == null) { layer.msg("请选择需要查询轨迹的车辆!"); return; } if (startTime == null || endTime == null) { var travelTime = $("#travelTime").val(); if (travelTime.indexOf(" - ") != -1) { startTime = travelTime.split(" - ")[0] endTime = travelTime.split(" - ")[1]; }else{ layer.msg("请选择车辆轨迹行驶时间段!"); return; } } var startTimeT = new Date(startTime).getTime(); var endTimeT = new Date(endTime).getTime(); var signCar2 = sha1("currentPage=1&endTime=" + endTimeT + "&pageSize=20&startTime=" + startTimeT + timestamp1.toString() + securityKey); var FACTORY = ""; CarListArr.forEach(item=> { if (item.IMEI == imei) { FACTORY = item.FACTORY; return; } }); if (FACTORY == "1") { //车辆轨迹列表 流数据 flow.load({ elem: '#carTraTbody', isAuto: true, done: function (page1, next1) { var lis = []; $.ajax({ type: "GET", url: _lttHTTPipUrl + "/GPS/Vehicle/VehicleTravelList?vehicleNo=" + imei + "&startTime=" + startTime + "&endTime=" + endTime, success: function (result) { //console.log("乐兔兔车联网___车辆轨迹列表:"); //console.log(result); layui.each(result.trackStatisticsList, function (index, item) { var startDateTime = formatTime(item.StartTime, 'Y-M-D h:m:s'); var stopDateTime = formatTime(item.StopTime, 'Y-M-D h:m:s'); var statisticsUUID = item.Id; var startAddress = item.StartAddress; var stopAddress = item.StopAddress; var averageSpeed = item.AverageSpeed; //lis.push('' + startDateTime + '' + stopDateTime + '' + averageSpeed.toFixed(3) + ''); //var max = 60; //var min = 30; //var averageSpeed2 = Math.floor(Math.random() * (max - min + 1) + min); var averageSpeed2 = randomVelocity(averageSpeed); lis.push('' + startDateTime + '' + stopDateTime + '' + averageSpeed2 + ''); }); next1(lis.join(''), page1 < result.totalCount / 10); }, error: function (err) { console.log(err); } }); } }); } else if (FACTORY == "0") { //车辆轨迹列表 流数据 flow.load({ elem: '#carTraTbody', isAuto: true, done: function (page2, next2) { var lis = []; $.ajax({ type: "GET", url: ZYWLUrl +"/api/v0/terminals/" + imei + "/trackstatistics?currentPage=1&endTime=" + endTimeT + "&pageSize=20&startTime=" + startTimeT + "×tamp=" + timestamp1 + "&sign=" + signCar2, async: false, headers: { "sysCode": "30001", "from": "OTHER", "Content-Type": "application/json", "msgId": msgId.toString() }, success: function (result) { //console.log("车辆轨迹列表:"); //console.log(result); layui.each(result.trackStatisticsList, function (index, item) { var startDateTime = formatTime(item.startTime, 'Y-M-D h:m:s'); var stopDateTime = formatTime(item.stopTime, 'Y-M-D h:m:s'); var statisticsUUID = item.statisticsUUID; var startAddress = item.startAddress; var stopAddress = item.stopAddress; var averageSpeed = item.averageSpeed; lis.push('' + startDateTime + '' + stopDateTime + '' + averageSpeed.toFixed(3) + ''); }); next2(lis.join(''), page2 < result.totalCount / 10); }, error: function (err) { console.log(err); } }); } }); } } function randomVelocity(val) { var res = 40; if (val > 0 && val < 1) { res = (val + 1) * 30; } else if (val >= 1 && val < 2) { res = val * 30; } else if (val >= 2 && val < 3) { res = val * 20; } else if (val >= 3 && val < 4) { res = val * 15; } else if (val >= 4 && val < 5) { res = val * 12; } else if (val >= 6 && val < 10) { res = val * 6; } else if (val >= 10 && val < 20) { res = val * 3; } else if (val >= 20 && val < 30) { res = val * 2; } else if (val >= 30 && val < 40) { res = val * 1.5; } return res.toFixed(2); } var carTraMarker = null; var carTraPolyline = null; var carTraPassedPolyline = null; // 创建跟速度信息展示框 var carWindow = new AMap.InfoWindow({ offset: new AMap.Pixel(6, -25), content: "" }); function showTraItem(factory) { carTraRouteInfo.map(val => { if (checkLong(val.longitude) && checkLat(val.latitude)) { //add20210825 var point = ""; if (factory == "2") { point = [Number(val.longitude), Number(val.latitude)]; } else { point = wgs84togcj02(Number(val.longitude), Number(val.latitude)); } //if (point[0] != NaN && point[1] != NaN && point[0] != "NaN" && point[1] != "NaN") { try { carTraLineArr2.push({ "longitude": Number(point[0]), "latitude": Number(point[1]) }); var LngLatPoint = new AMap.LngLat(Number(point[0]), Number(point[1])); carTraLineArr.push(LngLatPoint); } catch (err) { } //} else { // console.log(point); //} } }) //把之前的線路設為透明 if (carTraPolyline) { carTraPolyline.setOptions({ strokeColor: "#000", //线颜色 strokeOpacity: 0, }) } if (carTraPassedPolyline) { carTraPassedPolyline.setOptions({ strokeColor: "#000", //线颜色 strokeOpacity: 0, //线透明度 }) } //把之前的小汽车carTraMarker清除 if (carTraMarker) { map.remove(carTraMarker); } // 2.创建小汽车carTraMarker carTraMarker = new AMap.Marker({ map: map, position: [carTraLineArr2[0].longitude, carTraLineArr2[0].latitude], icon: "https://webapi.amap.com/images/car.png", offset: new AMap.Pixel(-26, -13), autoRotation: true, angle: -90, }); // 4、绘制轨迹 carTraPolyline = new AMap.Polyline({ map: map, path: carTraLineArr, showDir: true, strokeColor: "#28F", //线颜色 // strokeOpacity: 1, //线透明度 strokeWeight: 6, //线宽 // strokeStyle: "solid" //线样式 }); //5、绘制行駛過後的顏色 carTraPassedPolyline = new AMap.Polyline({ map: map, // path: carTraLineArr, strokeColor: "#AF5", //线颜色 // strokeOpacity: 1, //线透明度 strokeWeight: 6, //线宽 // strokeStyle: "solid" //线样式 }); //行駛過後改變顏色 carTraMarker.on('moving', function (e) { carTraPassedPolyline.setPath(e.passedPath); }); // 6.速度框随车辆移动 AMap.event.addListener(carTraMarker, 'moving', function (e) { var lastLocation = e.passedPath[e.passedPath.length - 1]; carWindow.setPosition(lastLocation); setVehicleSpeedInWidowns(lastLocation); }); // 7.打开速度框 carWindow.open(map, carTraMarker.getPosition()); // 8.地图自适应缩放 //map.setFitView(); } function setVehicleSpeedInWidowns(lnglat) { for (var i = 0; i < carTraLineArr2.length; i++) { if (lnglat.lat == this.carTraLineArr2[i].longitude && lnglat.lng == this.carTraLineArr2[i].latitude) { carWindow.setContent("速度:" + (this.carTraRouteInfo[i].speed * 3.6).toFixed(2) + "公里/时"); return; } } } function cartratooldraw(type) { switch (type) { case 'startAnimation': { //开始 carTraMarker.moveAlong(carTraLineArr, 1000); break; } case 'pauseAnimation': { //暂停 carTraMarker.pauseMove(); break; } case 'resumeAnimation': { //继续 carTraMarker.resumeMove(); break; } case 'stopAnimation': { //停止 carTraMarker.stopMove(); break; } //case 'speedAnimation': { // //显示气泡 // if (!carWindow.getIsOpen()) { //判断窗体是否显示 // carWindow.open(map, carTraMarker.getPosition()); // } // break; //} } } $("#cartratoolList").on("click", "button", function () { cartratooldraw($(this).attr("id")); }) getTraItem = function (uuid, startTime, endTime, factory) { if (factory == "1") { var index = layer.load(0, { time: 10 * 1000 }); //又换了种风格,并且设定最长等待时长 $.ajax({ type: "GET", url: _lttHTTPipUrl + "/GPS/Vehicle/VehicleTravelDetail?Id=" + uuid + "&startTime=" + startTime + "&endTime=" + endTime, success: function (result) { //console.log("乐兔兔车联网___轨迹详情:"); //console.log(result); if (result.length <= 0) { layer.msg("当前轨迹暂无轨迹点信息!"); return; } carTraLineArr = []; carTraLineArr2 = []; carTraRouteInfo = result.tracks; if (carTraRouteInfo.length > 0) { showTraItem(); } else { window.$message.info("暂无轨迹信息!"); } $("#cartratoolList").show(); layer.close(index); }, error: function (err) { console.log(err); layer.close(index); } }); } else if (factory == "0") { var index = layer.load(0, { time: 10 * 1000 }); //又换了种风格,并且设定最长等待时长 $.ajax({ type: "GET", url: ZYWLUrl +"/api/v0/thirdpart/trackstatistics/" + uuid + "/tracks?timestamp=" + timestamp1 + "&sign=" + signCar, async: false, headers: { "sysCode": "30001", "from": "OTHER", "Content-Type": "application/json", "msgId": msgId.toString() }, success: function (result) { //console.log("轨迹详情:"); //console.log(result); carTraLineArr = []; carTraLineArr2 = []; carTraRouteInfo = result.tracks if (carTraRouteInfo.length > 0) { showTraItem(); } else { window.$message.info("暂无轨迹信息!"); } $("#cartratoolList").show(); layer.close(index); }, error: function (err) { console.log(err); layer.close(index); } }); } else if (factory == "2") { //获取设备历史轨迹 //add20210821 //获取当前日期 var myDate = new Date(); var nowY = myDate.getFullYear(); var nowM = myDate.getMonth() + 1; var nowD = myDate.getDate(); var endTime = nowY + "-" + (nowM < 10 ? "0" + nowM : nowM) + "-" + (nowD < 10 ? "0" + nowD : nowD) + " 23:59:59";//当前时间 //获取三十天前日期 var lw = new Date(myDate - 1000 * 60 * 60 * 24 * 6);//最后一个数字30可改,30天的意思 var lastY = lw.getFullYear(); var lastM = lw.getMonth() + 1; var lastD = lw.getDate(); var startTime = lastY + "-" + (lastM < 10 ? "0" + lastM : lastM) + "-" + (lastD < 10 ? "0" + lastD : lastD) + " 00:00:00";//7天前日期 $.ajax({ type: "GET", url: BDUrl + "/StandardApiAction_queryTrackDetail.action?devIdno=" + uuid + "&begintime=" + startTime + "&endtime=" + endTime, dataType: "json", async: false, success: function (result) { carTraLineArr = []; carTraLineArr2 = []; var carTraRouteInfo222 = []; result.tracks.forEach(function (item) { var date = item.gt; date = date.substring(0, 19); date = date.replace(/-/g, '/'); //必须把日期'-'转为'/' var timestamp = new Date(date).getTime(); //add20210825 var point = bd09togcj02(Number(item.mlng), Number(item.mlat)); carTraRouteInfo222.push({ "gpsTime": timestamp, "latitude": point[1], "longitude": point[0], "speed": item.sp }) }); console.log(carTraRouteInfo222); carTraRouteInfo = carTraRouteInfo222; //add20210825 if (carTraRouteInfo.length > 0) { showTraItem("2"); } else { window.$message.info("暂无轨迹信息!"); } $("#cartratoolList").show(); layer.close(index); }, error: function (err) { console.log(err); layer.close(index); } }); } } function hidecarTraListfun() { map.clearInfoWindow(); if (carTraMarker != null) map.remove(carTraMarker); if (carTraPolyline != null) map.remove(carTraPolyline); if (carTraPassedPolyline != null) map.remove(carTraPassedPolyline); $("#carTraListDiv").hide(); $("#cartratoolList").hide(); } /** * * * -------------------------------------------------------------------------------------------------------- * ------------------------------------------------------POI关键字检索------------------------------------- * -------------------------------------------------------------------------------------------------------- * */ $("#amapSearchBtn").on("click", function () { //关键字查询 placeSearch.search($("#amapSearchVal").val()); }); //文本框回车事件 $('#amapSearchVal').bind('keypress', function (event) { if (event.keyCode == "13") { //关键字查询 placeSearch.search($("#amapSearchVal").val()); } }); function initPlaceSearchfun(city) { //console.log(city); AMap.service(["AMap.Autocomplete", "AMap.PlaceSearch", "AMap.Geocoder"], function () { //构造地点查询类 placeSearch = new AMap.PlaceSearch({ pageSize: 10, // 单页显示结果条数 pageIndex: 1, // 页码 city: city, // 兴趣点城市 (***************此处要做设置) citylimit: true, //是否强制限制在设置的城市内搜索 map: map, // 展现结果的地图实例 panel: "amapSearchContent",// 结果列表将在此容器中进行展示。 autoFitView: true, // 是否自动调整地图视野使绘制的 Marker点都处于视口的可见范围 type: "汽车服务|汽车销售|汽车维修|摩托车服务|餐饮服务|购物服务|生活服务|体育休闲服务|医疗保健服务|住宿服务|风景名胜|商务住宅|政府机构及社会团体|科教文化服务|交通设施服务|金融保险服务|公司企业|道路附属设施|地名地址信息|公共设施", extensions: "all" }); geocoder = new AMap.Geocoder({ city: city, }) var autoOptions = { city: city, input: "work-location" }; }); } var hideamapSearchfun = function () { //POI搜索 placeSearch.clear(); $("#tool_search").attr("src", "img/is搜索.png"); $("#tool_search").attr("data-value", "0"); $("#amapSearchDiv").hide(800); } /** * * * -------------------------------------------------------------------------------------------------------- * ------------------------------------------------------路径规划------------------------------------- * -------------------------------------------------------------------------------------------------------- * */ var pathPlanningpath = []; var pathPlanningmarks = []; function showInfoClick(e) { //绘制初始路径 pathPlanningpath.push([e.lnglat.getLng(), e.lnglat.getLat()]); pathPlanningmarker = new AMap.Marker({ icon: "../../images/s_point.png", position: [e.lnglat.getLng(), e.lnglat.getLat()], offset: new AMap.Pixel(-13, -30) }); pathPlanningmarker.setMap(map); pathPlanningmarks.push(pathPlanningmarker); if (pathPlanningpath.length > 1) { map.plugin("AMap.DragRoute", function () { //if (typeof pathPlanningroute1 !== "undefined") { pathPlanningroute1.destroy(); } //如果存在,先销毁 //if (typeof pathPlanningroute2 !== "undefined") { pathPlanningroute2.destroy(); } //如果存在,先销毁 //if (typeof pathPlanningroute3 !== "undefined") { pathPlanningroute3.destroy(); } //如果存在,先销毁 if (typeof pathPlanningroute4 !== "undefined") { pathPlanningroute4.destroy(); } //如果存在,先销毁 //pathPlanningroute1 = new AMap.DragRoute(map, pathPlanningpath, AMap.DrivingPolicy.LEAST_FEE); //最经济 //pathPlanningroute1.search(); //查询导航路径并开启拖拽导航 //pathPlanningroute2 = new AMap.DragRoute(map, pathPlanningpath, AMap.DrivingPolicy.LEAST_TIME); //时间最少 //pathPlanningroute2.search(); //查询导航路径并开启拖拽导航 //pathPlanningroute3 = new AMap.DragRoute(map, pathPlanningpath, AMap.DrivingPolicy.LEAST_DISTANCE); //最短距离 //pathPlanningroute3.search(); //查询导航路径并开启拖拽导航 pathPlanningroute4 = new AMap.DragRoute(map, pathPlanningpath, AMap.DrivingPolicy.REAL_TRAFFIC); //考虑实际路况 pathPlanningroute4.search(); //查询导航路径并开启拖拽导航 }); map.off("click", showInfoClick); pathPlanningmarks.forEach(function (value) { value.setMap(null); value = null; }); pathPlanningpath = []; pathPlanningmarks = []; } } /** * * * -------------------------------------------------------------------------------------------------------- * ----------------------------------------------------左下角工具栏---------------------------------------- * -------------------------------------------------------------------------------------------------------- * */ function toolListdraw(type) { switch (type) { case 'ranging': { //测距 if ($("#ranging").attr("data-value") == "1") { $("#ranging").attr("src", "img/is测量.png"); $("#ranging").attr("data-value", "0"); mouseTool.close(true); } else { $("#ranging").attr("src", "img/测量.png"); $("#ranging").attr("data-value", "1"); $("#measureArea").attr("src", "img/is面积.png"); $("#measureArea").attr("data-value", "0"); mouseTool.rule({ startMarkerOptions: { icon: new AMap.Icon({ size: new AMap.Size(19, 31), imageSize: new AMap.Size(19, 31), image: "img/起.png" }) }, endMarkerOptions: { icon: new AMap.Icon({ size: new AMap.Size(19, 31), imageSize: new AMap.Size(19, 31), image: "img/终.png" }), offset: new AMap.Pixel(-9, -31) }, midMarkerOptions: { icon: new AMap.Icon({ size: new AMap.Size(19, 31), imageSize: new AMap.Size(19, 31), image: "img/经.png" }), offset: new AMap.Pixel(-9, -31) }, lineOptions: { strokeStyle: "solid", strokeColor: "#FF33FF", strokeOpacity: 1, strokeWeight: 2 } }); } break; } case 'measureArea': { //测面 if ($("#measureArea").attr("data-value") == "1") { $("#measureArea").attr("src", "img/is面积.png"); $("#measureArea").attr("data-value", "0"); mouseTool.close(true); } else { $("#measureArea").attr("src", "img/面积.png"); $("#measureArea").attr("data-value", "1"); $("#ranging").attr("src", "img/is测量.png"); $("#ranging").attr("data-value", "0"); mouseTool.measureArea({ strokeColor: '#80d8ff', fillColor: '#80d8ff', fillOpacity: 0.3 }); } break; } case 'printing': { //打印 window.print(); break; } //case 'roam': { // //漫游 // break; //} case 'fullScreen': { //全屏 if ($("#fullScreen").attr("data-value") == "1") { window.parent.$(".zh-header").hide(); window.parent.$(".rcgl-left").hide(); window.parent.$("#mainDiv").css("height", "100%"); window.parent.$("#mainDiv").removeClass("rcgl-right"); window.parent.$(".rcgl-content").css("top", "0"); $("#fullScreen").attr("src", "img/缩小.png"); $("#fullScreen").attr("title", "退出全屏"); $("#fullScreen").attr("data-value", "0"); } else { window.parent.$(".zh-header").show(); window.parent.$(".rcgl-left").show(); window.parent.$("#mainDiv").attr("class", "rcgl-right"); window.parent.$(".rcgl-content").css("top", "81px"); $("#fullScreen").attr("src", "img/放大.png"); $("#fullScreen").attr("title", "全屏"); $("#fullScreen").attr("data-value", "1"); } break; } case 'tool_search': { //搜索 if ($("#tool_search").attr("data-value") == "1") { hideamapSearchfun(); } else { $("#tool_search").attr("src", "img/搜索.png"); $("#tool_search").attr("data-value", "1"); $("#amapSearchDiv").show(800); hidecarListDivfun(); hidealarmListfun(); hidecarTraListfun(); } break; } case 'tool_vehicleList': { //车辆列表 if ($("#tool_vehicleList").attr("data-value") == "1") { hidecarListDivfun(); } else { $("#tool_vehicleList").attr("src", "img/车辆列表.png"); $("#tool_vehicleList").attr("data-value", "1"); $("#carListDiv").show(800); hidecarTraListfun(); hideamapSearchfun(); } break; } case 'tool_alarmList': { //报警列表 if ($("#tool_alarmList").attr("data-value") == "1") { hidealarmListfun(); } else { $("#tool_alarmList").attr("src", "img/报警列表.png"); $("#tool_alarmList").attr("data-value", "1"); $("#alarmList").show(800); hidecarTraListfun(); hideamapSearchfun(); } break; } case 'tool_traffic': { //实时路况 if ($("#tool_traffic").attr("data-value") == "1") { $("#tool_traffic").attr("src", "img/is实时路况.png"); $("#tool_traffic").attr("data-value", "0"); trafficLayer.hide(); } else { $("#tool_traffic").attr("src", "img/实时路况.png"); $("#tool_traffic").attr("data-value", "1"); trafficLayer.show(); } break; } case 'tool_pathPlanning': { //路径规划 if ($("#tool_pathPlanning").attr("data-value") == "1") { $("#tool_pathPlanning").attr("src", "img/is路径规划.png"); $("#tool_pathPlanning").attr("data-value", "0"); map.off("click", showInfoClick); pathPlanningmarks.forEach(function (value) { value.setMap(null); value = null; }); pathPlanningpath = []; pathPlanningmarks = []; pathPlanningroute4.destroy(); } else { $("#tool_pathPlanning").attr("src", "img/路径规划.png"); $("#tool_pathPlanning").attr("data-value", "1"); map.on("click", showInfoClick); } break; } } } $("#toolList").on("click", "img", function () { toolListdraw($(this).attr("id")); }) /** * * * -------------------------------------------------------------------------------------------------------- * ----------------------------------------------------地图操作-------------------------------------------- * -------------------------------------------------------------------------------------------------------- * */ //初始化地图 var initMap = function (lon, lat, city) { if (lon == null || lon == "" || lat == null || lat == "") { return false; } map = new AMap.Map('map', { resizeEnable: true, center: [lon, lat], zoom: 16, mapStyle: 'amap://styles/00194a4804e32522874c56d6bf828a2c' //设置地图的显示样式 //6552e0b442bbfac5c53fc15318c01316 }); mouseTool = new AMap.MouseTool(map); infoWindow = new AMap.InfoWindow({ offset: new AMap.Pixel(0, -30) }); CarListfun(); initPlaceSearchfun(city); //实时路况图层 trafficLayer = new AMap.TileLayer.Traffic({ map: map, zIndex: 10 }); trafficLayer.hide(); } //地图显示车辆位置 var getCarPoint = function (data) { data = JSON.parse(decodeURI(data)); if (data.FACTORY == "1") { //乐兔兔车联网 $.ajax({ type: "GET", url: _lttHTTPipUrl +"/GPS/Vehicle/VehicleLocation?vehicleNo=" + data.IMEI, success: function (result) { //console.log("乐兔兔车联网___车辆定位:"); //console.log(result); var icon = "img/消防车.png"; if (data.CLASS == '0') icon = "img/公务车.png"; var marker = new AMap.Marker({ map: map, position: wgs84togcj02(Number(result.Lon), Number(result.Lat)), icon: icon }); // 创建标注 marker.id = data.IMEI; marker.orderno = data.FACTORY; var infohtml = ""; infohtml += ""; infohtml += ""; infohtml += ""; infohtml += ""; infohtml += ""; infohtml += "
定位时间:" + result.ReportTime + "
车牌号:" + data.CAR_NUM + "
车辆名称:" + data.CAR_NAME + "
车辆类型:" + data.TYPE + "
车辆详情:" + data.REMARKS + "
"; marker.content = infohtml; marker.on('click', markerClick); marker.on('rightclick', markerRightClick); markers.push(marker); }, error: function (err) { console.log(err); } }); } else if (data.FACTORY == "0") { $.ajax({ type: "GET", url: ZYWLUrl +"/api/v0/terminals/" + data.IMEI + "/realtime?timestamp=" + timestamp1 + "&sign=" + signCar, async: false, headers: { "sysCode": "30001", "from": "OTHER", "Content-Type": "application/json", "msgId": msgId.toString() }, success: function (result) { //console.log("中移物联车联网___车辆定位:"); //console.log(result); if (result.runStatus == "STARTED") { //启动 } else if (result.runStatus == "STOPPED") { //熄火 } var icon = "img/消防车.png"; if (data.CLASS == '0') icon = "img/公务车.png"; //console.log(icon); var marker = new AMap.Marker({ map: map, position: wgs84togcj02(Number(result.longitude), Number(result.latitude)), icon: icon }); // 创建标注 marker.id = data.IMEI; marker.orderno = data.FACTORY; var infohtml = ""; infohtml += ""; infohtml += ""; infohtml += ""; infohtml += ""; infohtml += "
车牌号:" + data.CAR_NUM + "
车辆名称:" + data.CAR_NAME + "
车辆类型:" + data.TYPE + "
车辆详情:" + data.REMARKS + "
"; marker.content = infohtml; marker.on('click', markerClick); marker.on('rightclick', markerRightClick); markers.push(marker); }, error: function (err) { console.log(err); } }); } else if (data.FACTORY == "2") {//add20210821 $.ajax({ type: "GET", url: BDUrl + "/StandardApiAction_getDeviceStatus.action?devIdno=" + data.IMEI, dataType: "json", async: false, success: function (result) { var result = result.status[0]; //console.log("北斗车联网___车辆定位:"); //console.log(result); if (result.ol == "1") { //启动 } else if (result.ol == "0") { //熄火 } var icon = "img/消防车.png"; if (data.CLASS == '0') icon = "img/公务车.png"; //console.log(icon); var marker = new AMap.Marker({ map: map, position: [Number(result.mlng), Number(result.mlat)], icon: icon }); // 创建标注 marker.id = data.IMEI; marker.orderno = data.FACTORY; var infohtml = ""; infohtml += ""; infohtml += ""; infohtml += ""; infohtml += ""; infohtml += "
车牌号:" + data.CAR_NUM + "
车辆名称:" + data.CAR_NAME + "
车辆类型:" + data.TYPE + "
车辆详情:" + data.REMARKS + "
"; marker.content = infohtml; marker.on('click', markerClick); marker.on('rightclick', markerRightClick); markers.push(marker); }, error: function (err) { console.log(err); } }); } } //地图图标左键事件 function markerClick(e) { infoWindow.setContent(e.target.content); infoWindow.open(map, e.target.getPosition()); } //地图图标右键事件 function markerRightClick(e) { console.log(e.target); var contextMenu = new AMap.ContextMenu(); if (e.target.orderno == "1") { contextMenu.addItem("车载视频", function () { switch (OrgId) { case '062fdb4694434b41b9d6b5063650dd45'://塔城地区消防支队 case '69dba54a79c64f40905e90d39c977af4'://塔城市大队 case 'e3e44b76dea4460a81051135bca5c485'://托里县大队 case '8ddfcef4fde54999b96b520286a6c8bf'://裕民县大队 case '764d3305ff6c47b99ee82d0dd1a7b915'://和丰县大队 case '83b4c33993d04593bfe4a5d7a0d21c73'://乌苏市大队 case '69eb087f42904ab5aa70424c39892732'://沙湾县大队 case '16b3f7e89d824db490454a279dc777c8'://额敏县大队 layer.msg("该车辆,未开通视频"); return false; default: //return true; } window.open('LTTMapVideoRealPlay.html?carNum=' + e.target.id, '实时视频', 'height=800, width=1500, top=100, left=200, toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no'); }, 0); contextMenu.addItem("轨迹回放", function () { hidecarListDivfun(); hidealarmListfun(); hideamapSearchfun(); $("#carnum").siblings("div.layui-form-select").find('dl').find("dd[lay-value='" + e.target.id + "']").click(); }, 1); } else { contextMenu.addItem("车载视频", function () { switch (OrgId) { case '062fdb4694434b41b9d6b5063650dd45'://塔城地区消防支队 case '69dba54a79c64f40905e90d39c977af4'://塔城市大队 case 'e3e44b76dea4460a81051135bca5c485'://托里县大队 case '8ddfcef4fde54999b96b520286a6c8bf'://裕民县大队 case '764d3305ff6c47b99ee82d0dd1a7b915'://和丰县大队 case '83b4c33993d04593bfe4a5d7a0d21c73'://乌苏市大队 case '69eb087f42904ab5aa70424c39892732'://沙湾县大队 case '16b3f7e89d824db490454a279dc777c8'://额敏县大队 layer.msg("该车辆,未开通视频"); return false; default: //return true; } window.open('MapVideoRealPlay.html?imei=' + e.target.id, '实时视频', 'height=800, width=1500, top=100, left=200, toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no'); }, 0); contextMenu.addItem("轨迹回放", function () { hidecarListDivfun(); hidealarmListfun(); hideamapSearchfun(); $("#carnum").siblings("div.layui-form-select").find('dl').find("dd[lay-value='" + e.target.id + "']").click(); }, 1); } contextMenu.open(map, e.lnglat); } ClusterMapfun = function (){ //延迟1秒,图标聚合 setTimeout(function () { if (cluster) { cluster.setMap(null); } cluster = new AMap.MarkerClusterer(map, markers, { gridSize: 80, maxZoom: 17 }); }, 1000) } })