| | |
| | | <meta charset="utf-8"> |
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge"> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, shrink-to-fit=no"> |
| | | <title>华星智控定位管理系统 </title> |
| | | <title>查询轨迹</title> |
| | | <link rel="icon" type="image/x-icon" href="/hxzkoa/hxzk/assets/img/favicon.ico" /> |
| | | <link href="/hxzkoa/hxzk/assets/css/loader.css" rel="stylesheet" type="text/css" /> |
| | | <script src="/hxzkoa/hxzk/assets/js/loader.js"></script> |
| | |
| | | <script src="/hxzkoa/hxzk/plugins/bootstrap-range-Slider/bootstrap-rangeSlider.js"></script> |
| | | <script src="/hxzkoa/hxzk/plugins/laydate/laydate.js"></script> |
| | | <style> |
| | | body { |
| | | margin: 0px; |
| | | width: 100%; |
| | | min-width: 1500px; |
| | | max-width: 100%; |
| | | height: 100%; |
| | | background-color: #F0F0F0; |
| | | } |
| | | |
| | | #head { |
| | | background-color: #FFFF00; |
| | | width: 100%; |
| | | height: 100px; |
| | | } |
| | | |
| | | #center { |
| | | background-color: #00FFFF; |
| | | width: 100%; |
| | | min-height: 100%; |
| | | } |
| | | |
| | | #foot { |
| | | background-color: #FF00FF; |
| | | width: 100%; |
| | | height: 100px; |
| | | } |
| | | |
| | | .panel-head { |
| | | font-size: 1rem; |
| | | color: rgba(255, 255, 255, .7); |
| | |
| | | </div> |
| | | <!-- END LOADER --> |
| | | <div class="border-left" |
| | | style="opacity:0.4;float:left;position:absolute;z-index:1;left:120px;height:20px;"><img alt="" |
| | | src="/hxzkoa/resources/images/border.png" class="img-left"></div> |
| | | <div class="border-right" style="opacity:0.4;float:right;position:absolute;z-index:2;right:120px;"><img |
| | | alt="" src="/hxzkoa/resources/images/border2.png" class="img-right"></div> |
| | | style="opacity: 0.4; float: left; position: absolute; z-index: 1; left: 120px; height: 20px;"> |
| | | <img alt="" src="/hxzkoa/resources/images/border.png" class="img-left"> |
| | | </div> |
| | | <div class="border-right" |
| | | style="opacity: 0.4; float: right; position: absolute; z-index: 2; right: 120px;"> |
| | | <img alt="" src="/hxzkoa/resources/images/border2.png" class="img-right"> |
| | | </div> |
| | | <!-- BEGIN NAVBAR --> |
| | | <div class="login-page"></div> |
| | | <!-- END NAVBAR --> |
| | |
| | | <div class="layout-px-spacing"> |
| | | <div class="row layout-top-spacing" id="cancel-row"> |
| | | <div class="col-xl-12 col-lg-12 col-sm-12 layout-spacing"> |
| | | <div class="widget-content widget-content-area br-6" style="padding:0 0 ;"> |
| | | <div class="widget-content widget-content-area br-6" style="padding: 0 0;"> |
| | | <div class="table-responsive mb-4 mt-4" |
| | | style="width:100%;height:600px;padding:0 0;"> |
| | | <div style="width:20%;height:600px;float:left;padding:20px 20px;"> |
| | | <div align="center"><label |
| | | for="exampleFormControlInput1">每次轨迹查询时间不要超过24小时</label></div> |
| | | <div style="margin-left:24px;padding:6px;width:100%;"> |
| | | <label for="exampleFormControlInput1">选择图层:</label> |
| | | <select id="chooselayer" onchange="floorChange()" |
| | | style="width: 100%; height: 600px; padding: 0 0;"> |
| | | <div style="width: 20%; height: 600px; float: left; padding: 20px 20px;"> |
| | | <div align="center"> |
| | | <label for="exampleFormControlInput1">每次轨迹查询时间不要超过24小时</label> |
| | | </div> |
| | | <div style="margin-left: 24px; padding: 6px; width: 100%;"> |
| | | <label for="exampleFormControlInput1">选择图层:</label> <select |
| | | id="chooselayer" onchange="floorChange()" |
| | | class="form-control form-control-lg" |
| | | style="width:60%;font-size: 12px;padding: 5px 5px"> |
| | | style="width: 60%; font-size: 12px; padding: 5px 5px"> |
| | | <c:forEach items="${floorList}" var="floor"> |
| | | <option value="${floor.floor}">${floor.floor}</option> |
| | | </c:forEach> |
| | | <option value="baidumap">百度地图</option> |
| | | </select> |
| | | </div> |
| | | <div style="margin-left:24px;padding:6px;width:100%;"><label |
| | | for="exampleFormControlInput1">选择开始时间:</label> |
| | | <input type="text" id="begin" class="form-control form-control-lg" |
| | | style="width:60%;height:40px;font-size:12px;padding:0 0;" /> |
| | | <div style="margin-left: 24px; padding: 6px; width: 100%;"> |
| | | <label for="exampleFormControlInput1">选择开始时间:</label> <input |
| | | type="text" id="begin" class="form-control form-control-lg" |
| | | style="width: 60%; height: 40px; font-size: 12px; padding: 0 0;" /> |
| | | <input type="button" style="font-size: 4px;width: 19%;background-color: #5c1ac3;color: #fff;border-color: #5c1ac3;" id="yixiaoshi" onclick="yushe(value)" value="一小时"/> |
| | | <input type="button" style="font-size: 4px;width: 19%;background-color: #5c1ac3;color: #fff;border-color: #5c1ac3;" id="banxiaoshi" onclick="yushe(value)" value="半小时"/> |
| | | <input type="button" style="font-size: 4px;width: 19%;background-color: #5c1ac3;color: #fff;border-color: #5c1ac3;" id="shifenzhong" onclick="yushe(value)" value="10分钟"/> |
| | | </div> |
| | | <div style="margin-left:24px;padding:6px;width:100%;"><label |
| | | for="exampleFormControlInput1">选择结束时间:</label> |
| | | <input type="text" id="end" class="form-control form-control-lg" |
| | | style="width:60%;height:40px;font-size:12px;padding:0 0;" /> |
| | | <div style="margin-left: 24px; padding: 6px; width: 100%;"> |
| | | <label for="exampleFormControlInput1">选择结束时间:</label> <input |
| | | type="text" id="end" class="form-control form-control-lg" |
| | | style="width: 60%; height: 40px; font-size: 12px; padding: 0 0;" /> |
| | | </div> |
| | | <div style="margin-left:24px;padding:6px;width:100%;"><label |
| | | for="exampleFormControlInput1">播放速度:</label> |
| | | <select id="bofangsudu" class="form-control form-control-lg" |
| | | style="width:60%;font-size: 12px;padding: 5px 5px"> |
| | | <div style="margin-left: 24px; padding: 6px; width: 100%;"> |
| | | <label for="exampleFormControlInput1">选择范围(围栏):</label> <select |
| | | id="fanwei" class="form-control form-control-lg" |
| | | style="width: 60%; font-size: 12px; padding: 5px 5px"> |
| | | <option value="空">不限范围</option> |
| | | <c:forEach items="${fenceList}" var="fence"> |
| | | <option value="${fence.name}">${fence.name}</option> |
| | | </c:forEach> |
| | | </select> |
| | | </div> |
| | | <div style="margin-left: 24px; padding: 6px; width: 100%;"> |
| | | <label for="exampleFormControlInput1">播放速度:</label> <select |
| | | id="bofangsudu" class="form-control form-control-lg" |
| | | style="width: 60%; font-size: 12px; padding: 5px 5px"> |
| | | <option value="1">X1</option> |
| | | <option value="2">X2</option> |
| | | <option value="4">X4</option> |
| | |
| | | <option value="16">X16</option> |
| | | </select> |
| | | </div> |
| | | <div style="margin-left:24px;padding:6px;width:100%;"> |
| | | <label for="exampleFormControlInput1">输入ID查询:</label> |
| | | <input type="text" class="form-control" id="tagid" |
| | | style="width:60%;font-size: 12px;padding: 5px 5px"> |
| | | <div style="margin-left: 24px; padding: 6px; width: 100%;"> |
| | | <label for="exampleFormControlInput1">输入ID查询:</label> <input |
| | | type="text" class="form-control" id="tagid" |
| | | style="width: 60%; font-size: 12px; padding: 5px 5px"> |
| | | </div> |
| | | <div style="margin-left:24px;padding:6px;width:100%;" id="shujutiao"> |
| | | |
| | | </div> |
| | | <div style="margin-left:24px;padding:6px;width:100%;"> |
| | | <div style="margin-left: 24px; padding: 6px; width: 100%;" |
| | | id="shujutiao"></div> |
| | | <div style="margin-left: 24px; padding: 6px; width: 100%;"> |
| | | <button type="button" class="btn btn-secondary" |
| | | id="search">搜索</button> |
| | | <button type="button" class="btn btn-secondary" |
| | |
| | | id="continue2">继续</button> |
| | | </div> |
| | | </div> |
| | | <div style="width:80%;height:600px;float:left;padding:0 0;" id="baidumap"> |
| | | </div> |
| | | <div style="width:80%;height:600px;float:left;padding:0 0;" id="wrap"> |
| | | <div style="width: 80%; height: 600px; float: left; padding: 0 0;" |
| | | id="baidumap"></div> |
| | | <div style="width: 80%; height: 600px; float: left; padding: 0 0;" |
| | | id="wrap"> |
| | | <canvas id="draw"></canvas> |
| | | </div> |
| | | </div> |
| | |
| | | |
| | | </div> |
| | | <!-- END MAIN CONTAINER --> |
| | | |
| | | <!-- BEGIN FUNCTION SCRIPTS --> |
| | | <script> |
| | | //执行一个laydate实例 |
| | | laydate.render({ |
| | | elem: '#begin' //指定元素' |
| | | , type: 'datetime' |
| | | , done: function (value, date) { |
| | | var end = document.getElementById("end").value; |
| | | if (end) { |
| | | if (end <= value) { |
| | | alert("结束时间必须大于开始时间"); |
| | | document.getElementById("end").value = ""; |
| | | <% String username=(String) session.getAttribute("username"); if (username==null || username.equals("")) |
| | | { request.getRequestDispatcher("/hxzk/login.jsp").forward(request, response); return; } %> |
| | | <!-- BEGIN FUNCTION SCRIPTS --> |
| | | <script> |
| | | //执行一个laydate实例 |
| | | laydate.render({ |
| | | elem: '#begin' //指定元素' |
| | | , type: 'datetime' |
| | | , done: function (value, date) { |
| | | var end = document.getElementById("end").value; |
| | | if (end) { |
| | | if (end <= value) { |
| | | alert("结束时间必须大于开始时间"); |
| | | document.getElementById("end").value = ""; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }); |
| | | }); |
| | | |
| | | //执行一个laydate实例 |
| | | laydate.render({ |
| | | elem: '#end' //指定元素' |
| | | , type: 'datetime' |
| | | , done: function (value, date) { |
| | | var begin = document.getElementById("begin").value; |
| | | if (begin) { |
| | | if (begin >= value) { |
| | | alert("结束时间必须大于开始时间"); |
| | | document.getElementById("begin").value = ""; |
| | | //执行一个laydate实例 |
| | | laydate.render({ |
| | | elem: '#end' //指定元素' |
| | | , type: 'datetime' |
| | | , done: function (value, date) { |
| | | var begin = document.getElementById("begin").value; |
| | | if (begin) { |
| | | if (begin >= value) { |
| | | alert("结束时间必须大于开始时间"); |
| | | document.getElementById("begin").value = ""; |
| | | } |
| | | } |
| | | |
| | | } |
| | | }); |
| | | |
| | | function yushe(value){ |
| | | var now = ""; |
| | | |
| | | if (value == "一小时") { |
| | | now = new Date(new Date().getTime() - 1 * 60 * 60 * 1000); |
| | | } else if (value == "半小时") { |
| | | now = new Date(new Date().getTime() - 0.5 * 60 * 60 * 1000); |
| | | } else if (value == "10分钟") { |
| | | now = new Date(new Date().getTime() - 0.166 * 60 * 60 * 1000); |
| | | } |
| | | |
| | | } |
| | | }); |
| | | var year = now.getFullYear(); //年 |
| | | var month = now.getMonth() + 1; //月 |
| | | var day = now.getDate(); //日 |
| | | |
| | | function floorChange() { |
| | | // when change floor num, the map will also change. |
| | | var select_layer = document.getElementById("chooselayer"); |
| | | var select_value = select_layer.value; |
| | | var select_layer = document.getElementById("chooselayer"); |
| | | var select_value = select_layer.value; |
| | | if (select_value == 'baidumap') { |
| | | document.getElementById("wrap").style.display = 'none'; |
| | | document.getElementById("draw").style.display = 'none'; |
| | | document.getElementById("baidumap").style.display = ''; |
| | | document.getElementById("search").style.display = 'none'; |
| | | document.getElementById("pause").style.display = 'none'; |
| | | document.getElementById("continue").style.display = 'none'; |
| | | document.getElementById("search2").style.display = ''; |
| | | document.getElementById("pause2").style.display = ''; |
| | | document.getElementById("continue2").style.display = ''; |
| | | document.getElementById("bofangsudu").options.remove(4); |
| | | diaoyongbaidumap(); |
| | | } else { |
| | | document.getElementById("baidumap").style.display = 'none'; |
| | | document.getElementById("wrap").style.display = ""; |
| | | document.getElementById("draw").style.display = ''; |
| | | document.getElementById("search").style.display = ''; |
| | | document.getElementById("pause").style.display = ''; |
| | | document.getElementById("continue").style.display = ''; |
| | | document.getElementById("search2").style.display = 'none'; |
| | | document.getElementById("pause2").style.display = 'none'; |
| | | document.getElementById("continue2").style.display = 'none'; |
| | | document.getElementById("bofangsudu").options.add(new Option("X16", "16")); |
| | | $.ajax({ |
| | | async: false, |
| | | type: 'POST', |
| | | url: "/hxzkoa/floornumTomap.do", |
| | | dataType: 'json', |
| | | data: { |
| | | value: select_value |
| | | }, |
| | | success: function (data) { |
| | | imgUrl = '/hxzkoa/hxzk/image/mapfile/' + data[0].mapname; |
| | | //imgUrl = '/hxzkoa/hxzk/image/mapfile/office.jpg'; |
| | | new MarkPoints(imgUrl); |
| | | } |
| | | }) |
| | | }; |
| | | }; |
| | | var hh = now.getHours(); //时 |
| | | var mm = now.getMinutes(); //分 |
| | | var ss = now.getSeconds(); //分 |
| | | |
| | | function getTruemap() { |
| | | var floor = document.getElementById("chooselayer").value; |
| | | var map_wl = []; |
| | | $.ajax({ |
| | | async: false, |
| | | type: "POST", |
| | | url: "/hxzkoa/floornumTomap.do", |
| | | dataType: 'json', |
| | | data: { |
| | | value: floor |
| | | }, |
| | | success: function (data) { |
| | | map_wl = [data[0].x_Truelength, data[0].y_Truewidth]; |
| | | }, |
| | | }); |
| | | return map_wl; |
| | | }; |
| | | var clock = year + "-"; |
| | | |
| | | function getYuandian() { |
| | | var floor = document.getElementById("chooselayer").value; |
| | | var map_wl = []; |
| | | $.ajax({ |
| | | async: false, |
| | | type: "POST", |
| | | url: "/hxzkoa/floornumTomap.do", |
| | | dataType: 'json', |
| | | data: { |
| | | value: floor |
| | | }, |
| | | success: function (data) { |
| | | yuandian = [data[0].x0_length, data[0].y0_width]; |
| | | }, |
| | | }); |
| | | return yuandian; |
| | | }; |
| | | if(month < 10) |
| | | clock += "0"; |
| | | |
| | | clock += month + "-"; |
| | | |
| | | function queryTagid() { |
| | | var tag = document.getElementById("tagid").value; |
| | | var begin = document.getElementById("begin").value; |
| | | var end = document.getElementById("end").value; |
| | | var floor = document.getElementById("chooselayer").value; |
| | | var tagTrack = []; |
| | | if (tag) { |
| | | if (begin && end) { |
| | | // query tag id from db |
| | | $.ajax({ |
| | | async: false, |
| | | type: "POST", |
| | | url: "/hxzkoa/trackTagid.do", |
| | | dataType: 'json', |
| | | data: { |
| | | tag_value: tag, |
| | | begin_value: begin, |
| | | end_value: end, |
| | | floor_value: floor, |
| | | }, |
| | | success: function (data) { |
| | | tagTrack = data; |
| | | }, |
| | | }); |
| | | return tagTrack; |
| | | } else { alert("请输入要查询的时间"); } |
| | | } else { alert("请输入要查询的ID"); } |
| | | }; |
| | | if(day < 10) |
| | | clock += "0"; |
| | | |
| | | //这是比较函数 |
| | | function compare(p) { |
| | | return function (m, n) { |
| | | var a = m[p]; |
| | | var b = n[p]; |
| | | return a - b; //升序 |
| | | } |
| | | }; |
| | | clock += day + " "; |
| | | |
| | | function ToDigital(strDu, strFen, strMiao, len) { |
| | | len = (len > 6 || typeof (len) == "undefined") ? 6 : len;//精确到小数点后最多六位 |
| | | strDu = (typeof (strDu) == "undefined" || strDu == "") ? 0 : parseFloat(strDu); |
| | | strFen = (typeof (strFen) == "undefined" || strFen == "") ? 0 : parseFloat(strFen) / 60; |
| | | strMiao = (typeof (strMiao) == "undefined" || strMiao == "") ? 0 : parseFloat(strMiao) / 60; //秒为分的格式 |
| | | var digital = strDu + strFen + strMiao; |
| | | if (digital == 0) { |
| | | return ""; |
| | | } else { |
| | | return digital.toFixed(len); |
| | | } |
| | | }; |
| | | if(hh < 10) |
| | | clock += "0"; |
| | | |
| | | function Queue() { |
| | | let items = []; |
| | | // 向队列添加元素(一个或多个) |
| | | this.enqueue = function (element) { |
| | | if (element instanceof Array) items = items.concat(element); |
| | | else items.push(element); |
| | | }; |
| | | // 从队列移除元素 |
| | | this.dequeue = function () { |
| | | return items.shift(); |
| | | }; |
| | | // 返回队列中的第一个元素 |
| | | this.front = function () { |
| | | return items[0]; |
| | | }; |
| | | // 返回队列的长度 |
| | | this.size = function () { |
| | | return items.length; |
| | | }; |
| | | // 清空队列 |
| | | this.clear = function () { |
| | | items = []; |
| | | }; |
| | | clock += hh + ":"; |
| | | if (mm < 10) |
| | | clock += '0'; |
| | | clock += mm + ":"; |
| | | |
| | | // 打印队列内的所有元素 |
| | | this.print = function () { |
| | | }; |
| | | }; |
| | | if (ss < 10) |
| | | clock += '0'; |
| | | clock += ss; |
| | | document.getElementById("begin").value = clock; |
| | | yushe2(); |
| | | } |
| | | function yushe2(){ |
| | | var now = new Date(); |
| | | |
| | | function getGPSTrack() { |
| | | var tag = document.getElementById("tagid").value; |
| | | var begin = document.getElementById("begin").value; |
| | | var end = document.getElementById("end").value; |
| | | var gpslist = []; |
| | | if (tag) { |
| | | if (begin && end) { |
| | | // query tag id from db |
| | | var year = now.getFullYear(); //年 |
| | | var month = now.getMonth() + 1; //月 |
| | | var day = now.getDate(); //日 |
| | | |
| | | var hh = now.getHours(); //时 |
| | | var mm = now.getMinutes(); //分 |
| | | var ss = now.getSeconds(); //分 |
| | | |
| | | var clock = year + "-"; |
| | | |
| | | if(month < 10) |
| | | clock += "0"; |
| | | |
| | | clock += month + "-"; |
| | | |
| | | if(day < 10) |
| | | clock += "0"; |
| | | |
| | | clock += day + " "; |
| | | |
| | | if(hh < 10) |
| | | clock += "0"; |
| | | |
| | | clock += hh + ":"; |
| | | if (mm < 10) |
| | | clock += '0'; |
| | | clock += mm + ":"; |
| | | |
| | | if (ss < 10) |
| | | clock += '0'; |
| | | clock += ss; |
| | | document.getElementById("end").value = clock; |
| | | } |
| | | |
| | | function floorChange() { |
| | | // when change floor num, the map will also change. |
| | | var select_layer = document.getElementById("chooselayer"); |
| | | var select_value = select_layer.value; |
| | | var select_layer = document.getElementById("chooselayer"); |
| | | var select_value = select_layer.value; |
| | | if (select_value == 'baidumap') { |
| | | document.getElementById("wrap").style.display = 'none'; |
| | | document.getElementById("draw").style.display = 'none'; |
| | | document.getElementById("baidumap").style.display = ''; |
| | | document.getElementById("search").style.display = 'none'; |
| | | document.getElementById("fanwei").style.display = 'none'; |
| | | document.getElementById("pause").style.display = 'none'; |
| | | document.getElementById("continue").style.display = 'none'; |
| | | document.getElementById("search2").style.display = ''; |
| | | document.getElementById("pause2").style.display = ''; |
| | | document.getElementById("continue2").style.display = ''; |
| | | document.getElementById("bofangsudu").options.remove(4); |
| | | diaoyongbaidumap(); |
| | | } else { |
| | | document.getElementById("baidumap").style.display = 'none'; |
| | | document.getElementById("wrap").style.display = ""; |
| | | document.getElementById("draw").style.display = ''; |
| | | document.getElementById("search").style.display = ''; |
| | | document.getElementById("fanwei").style.display = ''; |
| | | document.getElementById("pause").style.display = ''; |
| | | document.getElementById("continue").style.display = ''; |
| | | document.getElementById("search2").style.display = 'none'; |
| | | document.getElementById("pause2").style.display = 'none'; |
| | | document.getElementById("continue2").style.display = 'none'; |
| | | document.getElementById("bofangsudu").options.add(new Option("X16", "16")); |
| | | $.ajax({ |
| | | async: false, |
| | | type: 'POST', |
| | | traditional: true, |
| | | url: "/hxzkoa/getGPSTrack.do", |
| | | url: "/hxzkoa/floornumTomap.do", |
| | | dataType: 'json', |
| | | data: { |
| | | tag_value: tag, |
| | | begin_value: begin, |
| | | end_value: end, |
| | | value: select_value |
| | | }, |
| | | success: function (data) { |
| | | //经纬度从度分秒转成度 |
| | | for (var i = 0; i < data.length; i++) { |
| | | if (data[i].gps_weidu != "" && data[i].gsp_jingdu != "") { |
| | | var weidu = ToDigital(data[i].gps_weidu.substring(0, 2), data[i].gps_weidu.substring(2, 4), data[i].gps_weidu.substring(4)); |
| | | if (data[i].gps_NS == "S") { |
| | | weidu = String(0 - weidu); |
| | | }; |
| | | var jingdu = ToDigital(data[i].gsp_jingdu.substring(0, 3), data[i].gsp_jingdu.substring(3, 5), data[i].gsp_jingdu.substring(5)); |
| | | if (data[i].gps_EW == "W") { |
| | | jingdu = String(0 - jingdu); |
| | | }; |
| | | gpslist.push([data[i].tagid, jingdu, weidu, data[i].gps_power, data[i].addtime, data[i].name]); |
| | | } |
| | | }; |
| | | }, |
| | | }); |
| | | return gpslist; |
| | | } else { alert("请输入要查询的时间"); } |
| | | } else { alert("请输入要查询的ID"); } |
| | | }; |
| | | </script> |
| | | |
| | | <!-- 百度地图功能 --> |
| | | <script type="text/javascript"> |
| | | |
| | | var playFlag; |
| | | var playTrack; |
| | | var playIndex = 0; |
| | | var zhuanhuanindex = 0; |
| | | var search_count = 0; |
| | | var search_again = false; |
| | | var current_node_list = []; |
| | | var current_point_list = []; |
| | | var old_index = 0; |
| | | var timer_g; |
| | | var tagid; |
| | | var zuobiao; |
| | | var i = 0; |
| | | |
| | | function diaoyongbaidumap() { |
| | | // this.playFlag; //当前是否在播放 |
| | | // this.playTrack; //当前需要播放的总node |
| | | // this.playIndex = 0;//当前播放坐标顺序 |
| | | //var current_node_list = new Queue(); |
| | | current_node_list = []; |
| | | current_point_list = []; |
| | | old_index = 0; |
| | | // 百度地图API功能 |
| | | var bm = new BMap.Map("baidumap"); // 创建Map实例 |
| | | |
| | | bm.centerAndZoom(new BMap.Point(116.404, 39.915), 12); // 初始化地图,设置中心点坐标和地图级别 |
| | | //添加地图类型控件 |
| | | var opts = { type: BMAP_NAVIGATION_CONTROL_ZOOM }; //仅保留控件缩放部分 |
| | | bm.addControl(new BMap.NavigationControl(opts)); //添加导航控件 |
| | | bm.setCurrentCity("北京"); // 设置地图显示的城市 此项是必须设置的 |
| | | bm.enableScrollWheelZoom(true); //开启鼠标滚轮缩放 |
| | | bm.addControl(new BMap.MapTypeControl({ |
| | | mapTypes: [ |
| | | BMAP_NORMAL_MAP, |
| | | BMAP_SATELLITE_MAP, |
| | | BMAP_HYBRID_MAP |
| | | ] |
| | | })); |
| | | |
| | | var myIcon = new BMap.Icon("/hxzkoa/hxzk/image/targeticon/default.png", new BMap.Size(40, 40), { |
| | | //使用自定义标注时,指向的地理位置位于图片的中心点 |
| | | //anchor为图片左上角相对于地理位置的偏移量,此时指向的地理位置位于图标中心最下方 |
| | | anchor: new BMap.Size(20, 40) |
| | | } |
| | | ); |
| | | |
| | | var convertor = new BMap.Convertor(); |
| | | function gpsplay() { |
| | | |
| | | //坐标转换完之后的回调函数 |
| | | translateCallback = function (data) { |
| | | if (search_again == true) { |
| | | return null |
| | | } |
| | | if (data.status == 0) {//已执行完坐标转换 |
| | | for (var k = 0; k < data.points.length; k++) { |
| | | current_node_list.push(new BMap.Marker(data.points[k], { icon: myIcon })); |
| | | current_point_list.push(data.points[k]); |
| | | imgUrl = '/hxzkoa/hxzk/image/mapfile/' + data[0].mapname; |
| | | //imgUrl = '/hxzkoa/hxzk/image/mapfile/office.jpg'; |
| | | new MarkPoints(imgUrl); |
| | | } |
| | | }) |
| | | }; |
| | | }; |
| | | |
| | | zhuanhuanindex += data.points.length; |
| | | if (zhuanhuanindex < playTrack.length) { |
| | | function getTruemap() { |
| | | var floor = document.getElementById("chooselayer").value; |
| | | var map_wl = []; |
| | | $.ajax({ |
| | | async: false, |
| | | type: "POST", |
| | | url: "/hxzkoa/floornumTomap.do", |
| | | dataType: 'json', |
| | | data: { |
| | | value: floor |
| | | }, |
| | | success: function (data) { |
| | | map_wl = [data[0].x_Truelength, data[0].y_Truewidth]; |
| | | }, |
| | | }); |
| | | return map_wl; |
| | | }; |
| | | |
| | | function getYuandian() { |
| | | var floor = document.getElementById("chooselayer").value; |
| | | var map_wl = []; |
| | | $.ajax({ |
| | | async: false, |
| | | type: "POST", |
| | | url: "/hxzkoa/floornumTomap.do", |
| | | dataType: 'json', |
| | | data: { |
| | | value: floor |
| | | }, |
| | | success: function (data) { |
| | | yuandian = [data[0].x0_length, data[0].y0_width]; |
| | | }, |
| | | }); |
| | | return yuandian; |
| | | }; |
| | | |
| | | |
| | | function queryTagid() { |
| | | var tag = document.getElementById("tagid").value; |
| | | var begin = document.getElementById("begin").value; |
| | | var end = document.getElementById("end").value; |
| | | var floor = document.getElementById("chooselayer").value; |
| | | var fence = document.getElementById("fanwei").value; |
| | | var tagTrack = []; |
| | | if (tag) { |
| | | if (begin && end) { |
| | | // query tag id from db |
| | | $.ajax({ |
| | | async: false, |
| | | type: "POST", |
| | | url: "/hxzkoa/trackTagid.do", |
| | | dataType: 'json', |
| | | data: { |
| | | tag_value: tag, |
| | | begin_value: begin, |
| | | end_value: end, |
| | | floor_value: floor, |
| | | fence: fence, |
| | | }, |
| | | success: function (data) { |
| | | tagTrack = data; |
| | | }, |
| | | }); |
| | | return tagTrack; |
| | | } else { alert("请输入要查询的时间"); } |
| | | } else { alert("请输入要查询的ID"); } |
| | | }; |
| | | |
| | | //这是比较函数 |
| | | function compare(p) { |
| | | return function (m, n) { |
| | | var a = m[p]; |
| | | var b = n[p]; |
| | | return a - b; //升序 |
| | | } |
| | | }; |
| | | |
| | | function ToDigital(strDu, strFen, strMiao, len) { |
| | | len = (len > 6 || typeof (len) == "undefined") ? 6 : len;//精确到小数点后最多六位 |
| | | strDu = (typeof (strDu) == "undefined" || strDu == "") ? 0 : parseFloat(strDu); |
| | | strFen = (typeof (strFen) == "undefined" || strFen == "") ? 0 : parseFloat(strFen) / 60; |
| | | strMiao = (typeof (strMiao) == "undefined" || strMiao == "") ? 0 : parseFloat(strMiao) / 60; //秒为分的格式 |
| | | var digital = strDu + strFen + strMiao; |
| | | if (digital == 0) { |
| | | return ""; |
| | | } else { |
| | | return digital.toFixed(len); |
| | | } |
| | | }; |
| | | |
| | | function Queue() { |
| | | let items = []; |
| | | // 向队列添加元素(一个或多个) |
| | | this.enqueue = function (element) { |
| | | if (element instanceof Array) items = items.concat(element); |
| | | else items.push(element); |
| | | }; |
| | | // 从队列移除元素 |
| | | this.dequeue = function () { |
| | | return items.shift(); |
| | | }; |
| | | // 返回队列中的第一个元素 |
| | | this.front = function () { |
| | | return items[0]; |
| | | }; |
| | | // 返回队列的长度 |
| | | this.size = function () { |
| | | return items.length; |
| | | }; |
| | | // 清空队列 |
| | | this.clear = function () { |
| | | items = []; |
| | | }; |
| | | |
| | | // 打印队列内的所有元素 |
| | | this.print = function () { |
| | | }; |
| | | }; |
| | | |
| | | function getGPSTrack() { |
| | | var tag = document.getElementById("tagid").value; |
| | | var begin = document.getElementById("begin").value; |
| | | var end = document.getElementById("end").value; |
| | | var gpslist = []; |
| | | if (tag) { |
| | | if (begin && end) { |
| | | // query tag id from db |
| | | $.ajax({ |
| | | async: false, |
| | | type: 'POST', |
| | | traditional: true, |
| | | url: "/hxzkoa/getGPSTrack.do", |
| | | dataType: 'json', |
| | | data: { |
| | | tag_value: tag, |
| | | begin_value: begin, |
| | | end_value: end, |
| | | }, |
| | | success: function (data) { |
| | | //经纬度从度分秒转成度 |
| | | for (var i = 0; i < data.length; i++) { |
| | | if (data[i].gps_weidu != "" && data[i].gsp_jingdu != "") { |
| | | var weidu = ToDigital(data[i].gps_weidu.substring(0, 2), data[i].gps_weidu.substring(2, 4), data[i].gps_weidu.substring(4)); |
| | | if (data[i].gps_NS == "S") { |
| | | weidu = String(0 - weidu); |
| | | }; |
| | | var jingdu = ToDigital(data[i].gsp_jingdu.substring(0, 3), data[i].gsp_jingdu.substring(3, 5), data[i].gsp_jingdu.substring(5)); |
| | | if (data[i].gps_EW == "W") { |
| | | jingdu = String(0 - jingdu); |
| | | }; |
| | | gpslist.push([data[i].tagid, jingdu, weidu, data[i].gps_power, data[i].addtime, data[i].name]); |
| | | } |
| | | }; |
| | | }, |
| | | }); |
| | | return gpslist; |
| | | } else { alert("请输入要查询的时间"); } |
| | | } else { alert("请输入要查询的ID"); } |
| | | }; |
| | | </script> |
| | | |
| | | <!-- 百度地图功能 --> |
| | | <script type="text/javascript"> |
| | | |
| | | var baitiao; |
| | | var baizongtiao; |
| | | var playFlag; |
| | | var playTrack; |
| | | var playIndex = 0; |
| | | var zhuanhuanindex = 0; |
| | | var search_count = 0; |
| | | var search_again = false; |
| | | var current_node_list = []; |
| | | var current_point_list = []; |
| | | var old_index = 0; |
| | | var timer_g; |
| | | var tagid; |
| | | var zuobiao; |
| | | var i = 0; |
| | | |
| | | function diaoyongbaidumap() { |
| | | // this.playFlag; //当前是否在播放 |
| | | // this.playTrack; //当前需要播放的总node |
| | | // this.playIndex = 0;//当前播放坐标顺序 |
| | | //var current_node_list = new Queue(); |
| | | current_node_list = []; |
| | | current_point_list = []; |
| | | old_index = 0; |
| | | // 百度地图API功能 |
| | | var bm = new BMap.Map("baidumap"); // 创建Map实例 |
| | | |
| | | bm.centerAndZoom(new BMap.Point(116.404, 39.915), 12); // 初始化地图,设置中心点坐标和地图级别 |
| | | //添加地图类型控件 |
| | | var opts = { type: BMAP_NAVIGATION_CONTROL_ZOOM }; //仅保留控件缩放部分 |
| | | bm.addControl(new BMap.NavigationControl(opts)); //添加导航控件 |
| | | bm.setCurrentCity("北京"); // 设置地图显示的城市 此项是必须设置的 |
| | | bm.enableScrollWheelZoom(true); //开启鼠标滚轮缩放 |
| | | bm.addControl(new BMap.MapTypeControl({ |
| | | mapTypes: [ |
| | | BMAP_NORMAL_MAP, |
| | | BMAP_SATELLITE_MAP, |
| | | BMAP_HYBRID_MAP |
| | | ] |
| | | })); |
| | | |
| | | var myIcon = new BMap.Icon("/hxzkoa/hxzk/image/targeticon/default.png", new BMap.Size(40, 40), { |
| | | //使用自定义标注时,指向的地理位置位于图片的中心点 |
| | | //anchor为图片左上角相对于地理位置的偏移量,此时指向的地理位置位于图标中心最下方 |
| | | anchor: new BMap.Size(20, 40) |
| | | } |
| | | ); |
| | | |
| | | var convertor = new BMap.Convertor(); |
| | | function gpsplay() { |
| | | |
| | | //坐标转换完之后的回调函数 |
| | | translateCallback = function (data) { |
| | | if (search_again == true) { |
| | | return null |
| | | } |
| | | if (data.status == 0) {//已执行完坐标转换 |
| | | for (var k = 0; k < data.points.length; k++) { |
| | | current_node_list.push(new BMap.Marker(data.points[k], { icon: myIcon })); |
| | | current_point_list.push(data.points[k]); |
| | | } |
| | | |
| | | zhuanhuanindex += data.points.length; |
| | | if (zhuanhuanindex < playTrack.length) { |
| | | var j = 0; |
| | | var pointArr = []; |
| | | while (j < 10 && zhuanhuanindex + j < playTrack.length) { |
| | | var point = new BMap.Point(new Number(playTrack[zhuanhuanindex + j][1]), new Number(playTrack[zhuanhuanindex + j][2])); |
| | | pointArr.push(point); |
| | | j++; |
| | | } |
| | | // pointArr = []; |
| | | // point = new BMap.Point(new Number(playTrack[zhuanhuanindex][1]), new Number(playTrack[zhuanhuanindex][2])); |
| | | // pointArr.push(point); |
| | | convertor.translate(pointArr, 1, 5, translateCallback); |
| | | } |
| | | }; |
| | | if (search_again == true) { |
| | | current_node_list = []; |
| | | current_point_list = []; |
| | | }; |
| | | }; |
| | | |
| | | |
| | | if (playTrack.length != 0) { |
| | | if (playIndex == 0) { |
| | | current_node_list = []; |
| | | current_point_list = []; |
| | | } |
| | | if (playFlag && zhuanhuanindex < playTrack.length) { |
| | | var j = 0; |
| | | var pointArr = []; |
| | | while (j < 10 && zhuanhuanindex + j < playTrack.length) { |
| | |
| | | pointArr.push(point); |
| | | j++; |
| | | } |
| | | // pointArr = []; |
| | | // point = new BMap.Point(new Number(playTrack[zhuanhuanindex][1]), new Number(playTrack[zhuanhuanindex][2])); |
| | | // pointArr.push(point); |
| | | search_again = false; |
| | | convertor.translate(pointArr, 1, 5, translateCallback); |
| | | |
| | | } |
| | | }; |
| | | if (search_again == true) { |
| | | current_node_list = []; |
| | | current_point_list = []; |
| | | }; |
| | | |
| | | if (playFlag && zhuanhuanindex >= playIndex) { |
| | | t = 1000; |
| | | var gpss_list = getGPSTrack(); |
| | | timer_g = setInterval(fn, t); |
| | | function fn() { |
| | | var speed = document.getElementById("bofangsudu").value; |
| | | if (playFlag && playIndex < playTrack.length && zhuanhuanindex > playIndex) { |
| | | for (j = 0; j < playIndex; j++) { |
| | | old_mark = current_node_list[j]; |
| | | bm.removeOverlay(old_mark);//清除上一个 |
| | | } |
| | | marker = current_node_list[playIndex]; |
| | | bm.addOverlay(marker); |
| | | str = '<input type="text" class="form-control" id="tagid" style="width:60%;font-size: 12px;padding: 5px 5px" placeholder="剩余' + baizongtiao + '/' + baitiao + '条数据">' |
| | | $("#shujutiao").html(str); |
| | | if (baitiao > 0) { |
| | | baitiao -= 1; |
| | | } |
| | | zuobiao = new BMap.Label(gpss_list[playIndex][4], { offset: new BMap.Size(20, -60) }); |
| | | zuobiao.setStyle({ |
| | | color: "#090909", |
| | | fontSize: "14px", |
| | | borderRadius: "5px", |
| | | padding: "5px 5px", |
| | | border: "0", |
| | | backgroundColor: "#32CD32", |
| | | transform: 'translateX(-50%)', |
| | | }); |
| | | i++; |
| | | marker.setLabel(zuobiao); |
| | | marker.setLabel(tagid); //添加label-tagid |
| | | |
| | | |
| | | if (old_index > 1 && old_index < playIndex) { |
| | | var poly_line = [current_point_list[old_index], current_point_list[playIndex]] |
| | | var polyline = new BMap.Polyline(poly_line, { strokeColor: "red", strokeWeight: 2, strokeOpacity: 0.5 }); |
| | | bm.addOverlay(polyline) |
| | | } |
| | | old_index = playIndex; |
| | | |
| | | if (playIndex == 0) { |
| | | bm.setCenter(current_point_list[playIndex]) |
| | | } |
| | | playIndex += 1; |
| | | |
| | | clearInterval(timer_g); |
| | | if (playIndex >= playTrack.length - 1) { |
| | | clearInterval(timer_g); |
| | | playIndex = 0; |
| | | i = 0; |
| | | } else { |
| | | var stime = new Date(playTrack[playIndex][4]).getTime(); |
| | | var etime = new Date(playTrack[playIndex + 1][4]).getTime(); |
| | | var t = etime - stime; |
| | | |
| | | while (t == 0 && playIndex < playTrack.length - 1) { |
| | | stime = new Date(playTrack[playIndex][4]).getTime(); |
| | | etime = new Date(playTrack[playIndex + 1][4]).getTime(); |
| | | t = etime - stime; |
| | | playIndex += 1; |
| | | } |
| | | if (playIndex != playTrack.length - 1) { |
| | | var t_v = t / speed; |
| | | console.log(playIndex+"---"+i); |
| | | timer_g = setInterval(fn, t_v); |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | } |
| | | }; |
| | | |
| | | document.getElementById('search2').onclick = function () { |
| | | bm.clearOverlays(); |
| | | clearInterval(timer_g); |
| | | baizongtiao = getGPSTrack().length - 2; |
| | | baitiao = baizongtiao; |
| | | setTimeout(fnc(), 200); |
| | | |
| | | if (playTrack.length != 0) { |
| | | if (playIndex == 0) { |
| | | function fnc() { |
| | | current_node_list = []; |
| | | current_point_list = []; |
| | | } |
| | | if (playFlag && zhuanhuanindex < playTrack.length) { |
| | | var j = 0; |
| | | var pointArr = []; |
| | | while (j < 10 && zhuanhuanindex + j < playTrack.length) { |
| | | var point = new BMap.Point(new Number(playTrack[zhuanhuanindex + j][1]), new Number(playTrack[zhuanhuanindex + j][2])); |
| | | pointArr.push(point); |
| | | j++; |
| | | } |
| | | search_again = false; |
| | | convertor.translate(pointArr, 1, 5, translateCallback); |
| | | |
| | | } |
| | | |
| | | if (playFlag && zhuanhuanindex >= playIndex) { |
| | | t = 1000; |
| | | timer_g = setInterval(fn, t); |
| | | var tiao = getGPSTrack().length; |
| | | |
| | | function fn() { |
| | | var speed = document.getElementById("bofangsudu").value; |
| | | if (playFlag && playIndex < playTrack.length && zhuanhuanindex > playIndex) { |
| | | for (j = 0; j < playIndex; j++) { |
| | | old_mark = current_node_list[j]; |
| | | bm.removeOverlay(old_mark);//清除上一个 |
| | | } |
| | | marker = current_node_list[playIndex]; |
| | | bm.addOverlay(marker); |
| | | var gpss_list = getGPSTrack(); |
| | | str = '<input type="text" class="form-control" id="tagid" style="width:60%;font-size: 12px;padding: 5px 5px" placeholder="已加载' + tiao + '条数据">' |
| | | $("#shujutiao").html(str); |
| | | tiao -= 1; |
| | | zuobiao = new BMap.Label(gpss_list[i][4], { offset: new BMap.Size(20, -60) }); |
| | | zuobiao.setStyle({ |
| | | playIndex = 0; |
| | | old_index = 0; |
| | | search_count += 1; |
| | | if (search_count >= 2) { |
| | | search_again = true; |
| | | current_node_list = []; |
| | | current_point_list = []; |
| | | playIndex = 0; |
| | | old_index = 0; |
| | | zhuanhuanindex = 0; |
| | | playTrack = []; |
| | | playFlag = true; |
| | | var gps_node_list = getGPSTrack(); |
| | | if (gps_node_list.length == 0) { |
| | | alert("搜索的ID在当前时间段不存在!"); |
| | | document.getElementById("tagid").value = ""; |
| | | } else { |
| | | playTrack = gps_node_list; |
| | | tagid = new BMap.Label(playTrack[0][5], { offset: new BMap.Size(20, -30) }); |
| | | tagid.setStyle({ |
| | | color: "#090909", |
| | | fontSize: "14px", |
| | | borderRadius: "5px", |
| | |
| | | backgroundColor: "#32CD32", |
| | | transform: 'translateX(-50%)', |
| | | }); |
| | | i++; |
| | | marker.setLabel(zuobiao); |
| | | marker.setLabel(tagid); //添加label-tagid |
| | | |
| | | |
| | | if (old_index > 1 && old_index < playIndex) { |
| | | var poly_line = [current_point_list[old_index], current_point_list[playIndex]] |
| | | var polyline = new BMap.Polyline(poly_line, { strokeColor: "red", strokeWeight: 2, strokeOpacity: 0.5 }); |
| | | bm.addOverlay(polyline) |
| | | } |
| | | old_index = playIndex; |
| | | |
| | | if (playIndex == 0) { |
| | | bm.setCenter(current_point_list[playIndex]) |
| | | } |
| | | playIndex += 1; |
| | | |
| | | clearInterval(timer_g); |
| | | if (playIndex >= playTrack.length - 1) { |
| | | clearInterval(timer_g); |
| | | } else { |
| | | var stime = new Date(playTrack[playIndex][4]).getTime(); |
| | | var etime = new Date(playTrack[playIndex + 1][4]).getTime(); |
| | | var t = etime - stime; |
| | | |
| | | while (t == 0 && playIndex < playTrack.length - 1) { |
| | | stime = new Date(playTrack[playIndex][4]).getTime(); |
| | | etime = new Date(playTrack[playIndex + 1][4]).getTime(); |
| | | t = etime - stime; |
| | | playIndex += 1; |
| | | } |
| | | if (playIndex != playTrack.length - 1) { |
| | | var t_v = t / speed; |
| | | timer_g = setInterval(fn, t_v); |
| | | } |
| | | } |
| | | // zuobiao = new BMap.Label(playTrack[0][4], { offset: new BMap.Size(20, -60) }); |
| | | // zuobiao.setStyle({ |
| | | // color : "#090909", |
| | | // fontSize : "14px", |
| | | // borderRadius: "5px", |
| | | // padding:"5px 5px", |
| | | // border :"0", |
| | | // backgroundColor :"#32CD32", |
| | | // transform: 'translateX(-50%)', |
| | | // }); |
| | | search_again = false; |
| | | gpsplay(); |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | } |
| | | }; |
| | | |
| | | document.getElementById('search2').onclick = function () { |
| | | bm.clearOverlays(); |
| | | clearInterval(timer_g); |
| | | setTimeout(fnc(), 200); |
| | | |
| | | function fnc() { |
| | | current_node_list = []; |
| | | current_point_list = []; |
| | | playIndex = 0; |
| | | old_index = 0; |
| | | search_count += 1; |
| | | if (search_count >= 2) { |
| | | search_again = true; |
| | | current_node_list = []; |
| | | current_point_list = []; |
| | | playIndex = 0; |
| | | old_index = 0; |
| | | zhuanhuanindex = 0; |
| | | playTrack = []; |
| | | playFlag = true; |
| | | var gps_node_list = getGPSTrack(); |
| | | if (gps_node_list.length == 0) { |
| | | alert("搜索的ID在当前时间段不存在!"); |
| | | document.getElementById("tagid").value = ""; |
| | | } else { |
| | | playTrack = gps_node_list; |
| | | tagid = new BMap.Label(playTrack[0][5], { offset: new BMap.Size(20, -30) }); |
| | | tagid.setStyle({ |
| | | color: "#090909", |
| | | fontSize: "14px", |
| | | borderRadius: "5px", |
| | | padding: "5px 5px", |
| | | border: "0", |
| | | backgroundColor: "#32CD32", |
| | | transform: 'translateX(-50%)', |
| | | }); |
| | | // zuobiao = new BMap.Label(playTrack[0][4], { offset: new BMap.Size(20, -60) }); |
| | | // zuobiao.setStyle({ |
| | | // color : "#090909", |
| | | // fontSize : "14px", |
| | | // borderRadius: "5px", |
| | | // padding:"5px 5px", |
| | | // border :"0", |
| | | // backgroundColor :"#32CD32", |
| | | // transform: 'translateX(-50%)', |
| | | // }); |
| | | search_again = false; |
| | | gpsplay(); |
| | | } |
| | | } else { |
| | | current_node_list = []; |
| | | current_point_list = []; |
| | | playIndex = 0; |
| | | old_index = 0; |
| | | zhuanhuanindex = 0; |
| | | playTrack = []; |
| | | playFlag = true; |
| | | var gps_node_list = getGPSTrack(); |
| | | if (gps_node_list.length == 0) { |
| | | alert("搜索的ID在当前时间段不存在!"); |
| | | document.getElementById("tagid").value = ""; |
| | | } else { |
| | | playTrack = gps_node_list; |
| | | tagid = new BMap.Label(playTrack[0][5], { offset: new BMap.Size(20, -30) }); |
| | | tagid.setStyle({ |
| | | color: "#090909", |
| | | fontSize: "14px", |
| | | borderRadius: "5px", |
| | | padding: "5px 5px", |
| | | border: "0", |
| | | backgroundColor: "#32CD32", |
| | | transform: 'translateX(-50%)', |
| | | }); |
| | | // zuobiao = new BMap.Label(playTrack[0][4], { offset: new BMap.Size(20, -60) }); |
| | | // zuobiao.setStyle({ |
| | | // color : "#090909", |
| | | // fontSize : "14px", |
| | | // borderRadius: "5px", |
| | | // padding:"5px 5px", |
| | | // border :"0", |
| | | // backgroundColor :"#32CD32", |
| | | // transform: 'translateX(-50%)', |
| | | // }); |
| | | search_again = false; |
| | | gpsplay(); |
| | | current_node_list = []; |
| | | current_point_list = []; |
| | | playIndex = 0; |
| | | old_index = 0; |
| | | zhuanhuanindex = 0; |
| | | playTrack = []; |
| | | playFlag = true; |
| | | var gps_node_list = getGPSTrack(); |
| | | if (gps_node_list.length == 0) { |
| | | alert("搜索的ID在当前时间段不存在!"); |
| | | document.getElementById("tagid").value = ""; |
| | | } else { |
| | | playTrack = gps_node_list; |
| | | tagid = new BMap.Label(playTrack[0][5], { offset: new BMap.Size(20, -30) }); |
| | | tagid.setStyle({ |
| | | color: "#090909", |
| | | fontSize: "14px", |
| | | borderRadius: "5px", |
| | | padding: "5px 5px", |
| | | border: "0", |
| | | backgroundColor: "#32CD32", |
| | | transform: 'translateX(-50%)', |
| | | }); |
| | | // zuobiao = new BMap.Label(playTrack[0][4], { offset: new BMap.Size(20, -60) }); |
| | | // zuobiao.setStyle({ |
| | | // color : "#090909", |
| | | // fontSize : "14px", |
| | | // borderRadius: "5px", |
| | | // padding:"5px 5px", |
| | | // border :"0", |
| | | // backgroundColor :"#32CD32", |
| | | // transform: 'translateX(-50%)', |
| | | // }); |
| | | search_again = false; |
| | | gpsplay(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | }; |
| | | document.getElementById("pause2").onclick = function () { |
| | | playFlag = false; |
| | | search_again = true; |
| | | clearInterval(timer_g); |
| | | }; |
| | | document.getElementById("continue2").onclick = function () { |
| | | playFlag = true; |
| | | search_again = false; |
| | | gpsplay(); |
| | | }; |
| | | |
| | | |
| | | /** |
| | | * 坐标常量说明: |
| | | * COORDINATES_WGS84 = 1, WGS84坐标 |
| | | * COORDINATES_WGS84_MC = 2, WGS84的平面墨卡托坐标 |
| | | * COORDINATES_GCJ02 = 3,GCJ02坐标 |
| | | * COORDINATES_GCJ02_MC = 4, GCJ02的平面墨卡托坐标 |
| | | * COORDINATES_BD09 = 5, 百度bd09经纬度坐标 |
| | | * COORDINATES_BD09_MC = 6,百度bd09墨卡托坐标 |
| | | * COORDINATES_MAPBAR = 7,mapbar地图坐标 |
| | | * COORDINATES_51 = 8,51地图坐标 |
| | | */ |
| | | |
| | | }; |
| | | </script> |
| | | <!-- 百度地图功能结束 --> |
| | | |
| | | <script> |
| | | |
| | | var timer; |
| | | |
| | | function MarkPoints(Imgurl) { |
| | | this.imgX = 0;//在画布上图片的X偏移量 |
| | | this.imgY = 0;//在画布上图片的Y偏移量 |
| | | this.imgScale = 1;//图片的缩放比例 |
| | | this.rateNum;//图片高度自适应比例,图片等比居中展示在canvas |
| | | this.scaleFlag = 0;//缩放因子,最大缩放9,最小缩放-9 |
| | | this.context; |
| | | this.img; |
| | | this.playIndex = 0; |
| | | this.pos = {};//每次拖拽前坐标保存 |
| | | this.playFlag = false;//是否播放 |
| | | this.playTrack = []; |
| | | this.dragFlag = false;//是否可拖拽当前img,默认不能 |
| | | this.markFlag = false;//标记区域开启关闭flag |
| | | this.CreatLinepoints = [];//每次创建新区域的坐标集合 |
| | | this.playMark = []; //正在展示的标记 |
| | | this.allMarkLins = [];//已创建的区域集合,例如[[{x,y},{x,y},{x,y}],[{n,m},{n,m},{n,m}]]目前只需要一个区域,所以数组内部只有一项 |
| | | this.allFenceColor = [];//已创建的区域颜色 |
| | | this.getImgLoad(Imgurl); |
| | | this.init(); |
| | | document.oncontextmenu = new Function("event.returnValue=false;"); |
| | | document.onselectstart = new Function("event.returnValue=false;"); |
| | | |
| | | } |
| | | MarkPoints.prototype = { |
| | | getImgLoad: function (Imgurl) { |
| | | var _this = this; |
| | | var wrap = document.getElementById('wrap'); |
| | | _this.canvas = document.getElementById('draw'); |
| | | _this.context = draw.getContext('2d'); |
| | | _this.canvas.height = wrap.offsetHeight; |
| | | _this.canvas.width = wrap.offsetWidth; |
| | | _this.img = new Image(); |
| | | _this.img.onload = function () { |
| | | _this.imgX = 0; |
| | | _this.imgY = 0; |
| | | _this.imgScale = 1; |
| | | _this.rateNum = _this.canvas.height / _this.img.naturalHeight; |
| | | _this.imgX = (_this.canvas.width - _this.img.naturalWidth * _this.imgScale * _this.rateNum) / 2;//默认进来当前图像居中显示 |
| | | /*画出当前图片*/ |
| | | _this.drawImg(); |
| | | } |
| | | _this.img.src = imgUrl; |
| | | |
| | | }, |
| | | getNewPoints: function (points) { |
| | | var _this = this; |
| | | var newPointAry = []; |
| | | for (var i = 0; i < points.length; i++) { |
| | | var obj = {}; |
| | | obj.x = points[i].x * _this.imgScale + _this.imgX; |
| | | obj.y = points[i].y * _this.imgScale + _this.imgY; |
| | | if (points[i].hasOwnProperty('mac')) { |
| | | obj.mac = points[i].mac; |
| | | obj.name = points[i].name || ''; |
| | | } |
| | | |
| | | newPointAry.push(obj); |
| | | } |
| | | return newPointAry; |
| | | }, |
| | | drawImg: function () { |
| | | var _this = this; |
| | | _this.context.clearRect(0, 0, _this.canvas.width, _this.canvas.height); |
| | | _this.context.drawImage(_this.img, 0, 0, _this.img.naturalWidth, _this.img.naturalHeight, _this.imgX, _this.imgY, _this.img.naturalWidth * _this.imgScale * _this.rateNum, _this.img.naturalHeight * _this.imgScale * _this.rateNum); |
| | | var trueMeasure = getTruemap(); |
| | | var trueLength = new Number(trueMeasure[0]); |
| | | var trueWidth = new Number(trueMeasure[1]); |
| | | var x_ratio = new Number(_this.img.naturalWidth / trueLength); |
| | | var y_ratio = new Number(_this.img.naturalHeight / trueWidth); |
| | | var can = _this.context; |
| | | var x_x0 = new Number(getYuandian()[0]); |
| | | var y_y0 = new Number(getYuandian()[1]); |
| | | |
| | | //轨迹拖尾 |
| | | can.beginPath(); |
| | | can.fillStyle = "red"; |
| | | can.strokeStyle = "red"; |
| | | for (var i = 0; i < _this.playIndex - 1; i++) { |
| | | var cor_x = new Number(_this.playTrack[i].x); |
| | | var cor_y = new Number(_this.playTrack[i].y); |
| | | var x_cor = new Number(_this.imgX + _this.imgScale * _this.rateNum * x_ratio * (cor_x - x_x0)); |
| | | var y_cor = new Number(_this.imgY + _this.imgScale * _this.rateNum * y_ratio * (cor_y - y_y0)); |
| | | |
| | | var cor_x2 = new Number(_this.playTrack[i + 1].x); |
| | | var cor_y2 = new Number(_this.playTrack[i + 1].y); |
| | | var x_cor2 = new Number(_this.imgX + _this.imgScale * _this.rateNum * x_ratio * (cor_x2 - x_x0)); |
| | | var y_cor2 = new Number(_this.imgY + _this.imgScale * _this.rateNum * y_ratio * (cor_y2 - y_y0)); |
| | | |
| | | can.moveTo(x_cor, y_cor); |
| | | can.lineTo(x_cor2, y_cor2); |
| | | } |
| | | can.closePath(); |
| | | can.stroke(); |
| | | |
| | | //实时轨迹点 |
| | | if (_this.playMark) { |
| | | var can = _this.context; |
| | | var cor_x = new Number(_this.playMark.x); |
| | | var cor_y = new Number(_this.playMark.y); |
| | | var zuobiao = _this.playMark.x + "," + _this.playMark.y; |
| | | |
| | | var x_cor = new Number(_this.imgX + _this.imgScale * _this.rateNum * x_ratio * (cor_x - x_x0)); |
| | | var y_cor = new Number(_this.imgY + _this.imgScale * _this.rateNum * y_ratio * (cor_y - y_y0)); |
| | | can.beginPath(); //画坐标点 |
| | | can.arc(x_cor, y_cor, 6, 0, Math.PI * 2, true); |
| | | can.fillStyle = "#FF423E"; |
| | | can.fill(); |
| | | can.strokeStyle = "#FFF"; |
| | | can.stroke();//画空心圆 |
| | | can.closePath(); |
| | | |
| | | can.fillText(_this.playMark.tagid, x_cor - 25, y_cor - 10);//标明tagid |
| | | can.fillText(zuobiao, x_cor + 10, y_cor - 10);//标明坐标信息 |
| | | can.fillText(_this.playMark.time, x_cor - 30, y_cor + 15);//标明时间戳 |
| | | |
| | | // str = '<input type="text" class="form-control" id="tagid" style="width:60%;font-size: 12px;padding: 5px 5px" placeholder="已加载' + tiao + '条数据">' |
| | | // $("#shujutiao").html(str); |
| | | // tiao -= 1 |
| | | |
| | | }; |
| | | if (_this.allMarkLins.length) { |
| | | for (var m = 0; m < _this.allMarkLins.length; m++) { |
| | | var points = _this.allMarkLins[m]; |
| | | var newPoints = _this.getNewPoints(points); |
| | | for (var i = 0; i < newPoints.length; i++) { |
| | | var can = _this.context; |
| | | can.beginPath(); |
| | | can.arc(newPoints[i].x, newPoints[i].y, 6, 0, Math.PI * 2, true); |
| | | can.fillStyle = "#FF423E"; |
| | | can.fill(); |
| | | can.strokeStyle = "#FFF"; |
| | | can.stroke();//画空心圆 |
| | | can.closePath(); |
| | | document.getElementById("pause2").onclick = function () { |
| | | playFlag = false; |
| | | search_again = true; |
| | | clearInterval(timer_g); |
| | | }; |
| | | document.getElementById("continue2").onclick = function () { |
| | | playFlag = true; |
| | | search_again = false; |
| | | gpsplay(); |
| | | }; |
| | | |
| | | if (points.length >= 2 && i >= 1) { |
| | | |
| | | /** |
| | | * 坐标常量说明: |
| | | * COORDINATES_WGS84 = 1, WGS84坐标 |
| | | * COORDINATES_WGS84_MC = 2, WGS84的平面墨卡托坐标 |
| | | * COORDINATES_GCJ02 = 3,GCJ02坐标 |
| | | * COORDINATES_GCJ02_MC = 4, GCJ02的平面墨卡托坐标 |
| | | * COORDINATES_BD09 = 5, 百度bd09经纬度坐标 |
| | | * COORDINATES_BD09_MC = 6,百度bd09墨卡托坐标 |
| | | * COORDINATES_MAPBAR = 7,mapbar地图坐标 |
| | | * COORDINATES_51 = 8,51地图坐标 |
| | | */ |
| | | |
| | | }; |
| | | </script> |
| | | <!-- 百度地图功能结束 --> |
| | | |
| | | <script> |
| | | |
| | | var zongtiao; |
| | | var tiao |
| | | var timer; |
| | | |
| | | function MarkPoints(Imgurl) { |
| | | this.imgX = 0;//在画布上图片的X偏移量 |
| | | this.imgY = 0;//在画布上图片的Y偏移量 |
| | | this.imgScale = 1;//图片的缩放比例 |
| | | this.rateNum;//图片高度自适应比例,图片等比居中展示在canvas |
| | | this.scaleFlag = 0;//缩放因子,最大缩放9,最小缩放-9 |
| | | this.context; |
| | | this.img; |
| | | this.playIndex = 0; |
| | | this.pos = {};//每次拖拽前坐标保存 |
| | | this.playFlag = false;//是否播放 |
| | | this.playTrack = []; |
| | | this.dragFlag = false;//是否可拖拽当前img,默认不能 |
| | | this.markFlag = false;//标记区域开启关闭flag |
| | | this.CreatLinepoints = [];//每次创建新区域的坐标集合 |
| | | this.playMark = []; //正在展示的标记 |
| | | this.allMarkLins = [];//已创建的区域集合,例如[[{x,y},{x,y},{x,y}],[{n,m},{n,m},{n,m}]]目前只需要一个区域,所以数组内部只有一项 |
| | | this.allFenceColor = [];//已创建的区域颜色 |
| | | this.getImgLoad(Imgurl); |
| | | this.init(); |
| | | document.oncontextmenu = new Function("event.returnValue=false;"); |
| | | document.onselectstart = new Function("event.returnValue=false;"); |
| | | |
| | | } |
| | | MarkPoints.prototype = { |
| | | getImgLoad: function (Imgurl) { |
| | | var _this = this; |
| | | var wrap = document.getElementById('wrap'); |
| | | _this.canvas = document.getElementById('draw'); |
| | | _this.context = draw.getContext('2d'); |
| | | _this.canvas.height = wrap.offsetHeight; |
| | | _this.canvas.width = wrap.offsetWidth; |
| | | _this.img = new Image(); |
| | | _this.img.onload = function () { |
| | | _this.imgX = 0; |
| | | _this.imgY = 0; |
| | | _this.imgScale = 1; |
| | | _this.rateNum = _this.canvas.height / _this.img.naturalHeight; |
| | | _this.imgX = (_this.canvas.width - _this.img.naturalWidth * _this.imgScale * _this.rateNum) / 2;//默认进来当前图像居中显示 |
| | | /*画出当前图片*/ |
| | | _this.drawImg(); |
| | | } |
| | | _this.img.src = imgUrl; |
| | | |
| | | }, |
| | | getNewPoints: function (points) { |
| | | var _this = this; |
| | | var newPointAry = []; |
| | | for (var i = 0; i < points.length; i++) { |
| | | var obj = {}; |
| | | obj.x = points[i].x * _this.imgScale + _this.imgX; |
| | | obj.y = points[i].y * _this.imgScale + _this.imgY; |
| | | if (points[i].hasOwnProperty('mac')) { |
| | | obj.mac = points[i].mac; |
| | | obj.name = points[i].name || ''; |
| | | } |
| | | |
| | | newPointAry.push(obj); |
| | | } |
| | | return newPointAry; |
| | | }, |
| | | drawImg: function () { |
| | | var _this = this; |
| | | _this.context.clearRect(0, 0, _this.canvas.width, _this.canvas.height); |
| | | _this.context.drawImage(_this.img, 0, 0, _this.img.naturalWidth, _this.img.naturalHeight, _this.imgX, _this.imgY, _this.img.naturalWidth * _this.imgScale * _this.rateNum, _this.img.naturalHeight * _this.imgScale * _this.rateNum); |
| | | var trueMeasure = getTruemap(); |
| | | var trueLength = new Number(trueMeasure[0]); |
| | | var trueWidth = new Number(trueMeasure[1]); |
| | | var x_ratio = new Number(_this.img.naturalWidth / trueLength); |
| | | var y_ratio = new Number(_this.img.naturalHeight / trueWidth); |
| | | var can = _this.context; |
| | | var x_x0 = new Number(getYuandian()[0]); |
| | | var y_y0 = new Number(getYuandian()[1]); |
| | | |
| | | //轨迹拖尾 |
| | | can.beginPath(); |
| | | can.fillStyle = "red"; |
| | | can.strokeStyle = "red"; |
| | | for (var i = 0; i < _this.playIndex - 1; i++) { |
| | | var cor_x = new Number(_this.playTrack[i].x); |
| | | var cor_y = new Number(_this.playTrack[i].y); |
| | | var x_cor = new Number(_this.imgX + _this.imgScale * _this.rateNum * x_ratio * (cor_x - x_x0)); |
| | | var y_cor = new Number(_this.imgY + _this.imgScale * _this.rateNum * y_ratio * (cor_y - y_y0)); |
| | | |
| | | var cor_x2 = new Number(_this.playTrack[i + 1].x); |
| | | var cor_y2 = new Number(_this.playTrack[i + 1].y); |
| | | var x_cor2 = new Number(_this.imgX + _this.imgScale * _this.rateNum * x_ratio * (cor_x2 - x_x0)); |
| | | var y_cor2 = new Number(_this.imgY + _this.imgScale * _this.rateNum * y_ratio * (cor_y2 - y_y0)); |
| | | |
| | | can.moveTo(x_cor, y_cor); |
| | | can.lineTo(x_cor2, y_cor2); |
| | | } |
| | | can.closePath(); |
| | | can.stroke(); |
| | | |
| | | //实时轨迹点 |
| | | if (_this.playMark) { |
| | | var can = _this.context; |
| | | var cor_x = new Number(_this.playMark.x); |
| | | var cor_y = new Number(_this.playMark.y); |
| | | var zuobiao = _this.playMark.x + "," + _this.playMark.y; |
| | | |
| | | var x_cor = new Number(_this.imgX + _this.imgScale * _this.rateNum * x_ratio * (cor_x - x_x0)); |
| | | var y_cor = new Number(_this.imgY + _this.imgScale * _this.rateNum * y_ratio * (cor_y - y_y0)); |
| | | can.beginPath(); //画坐标点 |
| | | can.arc(x_cor, y_cor, 6, 0, Math.PI * 2, true); |
| | | can.fillStyle = "#FF423E"; |
| | | can.fill(); |
| | | can.strokeStyle = "#FFF"; |
| | | can.stroke();//画空心圆 |
| | | can.closePath(); |
| | | |
| | | can.fillText(_this.playMark.tagid, x_cor - 25, y_cor - 10);//标明tagid |
| | | can.fillText(zuobiao, x_cor + 10, y_cor - 10);//标明坐标信息 |
| | | can.fillText(_this.playMark.time, x_cor - 30, y_cor + 15);//标明时间戳 |
| | | |
| | | |
| | | }; |
| | | if (_this.allMarkLins.length) { |
| | | for (var m = 0; m < _this.allMarkLins.length; m++) { |
| | | var points = _this.allMarkLins[m]; |
| | | var newPoints = _this.getNewPoints(points); |
| | | for (var i = 0; i < newPoints.length; i++) { |
| | | var can = _this.context; |
| | | can.beginPath(); |
| | | can.arc(newPoints[i].x, newPoints[i].y, 6, 0, Math.PI * 2, true); |
| | | can.fillStyle = "#FF423E"; |
| | | can.fill(); |
| | | can.strokeStyle = "#FFF"; |
| | | can.stroke();//画空心圆 |
| | | can.closePath(); |
| | | |
| | | if (points.length >= 2 && i >= 1) { |
| | | can.strokeStyle = "#FF423E"; |
| | | can.lineWidth = 2; |
| | | can.beginPath(); |
| | | can.moveTo(newPoints[i - 1].x, newPoints[i - 1].y); |
| | | can.lineTo(newPoints[i].x, newPoints[i].y); |
| | | can.fillStyle = "#ff0000"; |
| | | can.fill(); |
| | | can.stroke(); |
| | | can.closePath(); |
| | | } |
| | | } |
| | | if (points.length >= 3) { |
| | | can.strokeStyle = "#FF423E"; |
| | | can.lineWidth = 2; |
| | | can.beginPath(); |
| | | can.moveTo(newPoints[i - 1].x, newPoints[i - 1].y); |
| | | can.lineTo(newPoints[i].x, newPoints[i].y); |
| | | can.fillStyle = "#ff0000"; |
| | | can.fill(); |
| | | can.moveTo(newPoints[newPoints.length - 1].x, newPoints[newPoints.length - 1].y); |
| | | can.lineTo(newPoints[0].x, newPoints[0].y); |
| | | can.stroke(); |
| | | can.closePath(); |
| | | } |
| | | } |
| | | if (points.length >= 3) { |
| | | can.strokeStyle = "#FF423E"; |
| | | can.lineWidth = 2; |
| | | can.beginPath(); |
| | | can.moveTo(newPoints[newPoints.length - 1].x, newPoints[newPoints.length - 1].y); |
| | | can.lineTo(newPoints[0].x, newPoints[0].y); |
| | | can.stroke(); |
| | | can.closePath(); |
| | | } |
| | | ; |
| | | } |
| | | ; |
| | | } |
| | | |
| | | }, |
| | | init: function () { |
| | | var _this = this; |
| | | _this.canvas.onmousedown = function (event) { |
| | | _this.clickDown(event); |
| | | }; |
| | | _this.canvas.onmousemove = function (event) { |
| | | _this.mouseMove(event) |
| | | }; |
| | | _this.canvas.onmouseup = function (event) { |
| | | _this.mouseUp(event); |
| | | }; |
| | | _this.canvas.onmousewheel = function (event) { |
| | | _this.onmouseWheel(event); |
| | | }; |
| | | document.getElementById('search').onclick = function () { |
| | | var tagTrack = queryTagid(); |
| | | if (tagTrack.length == 0) { |
| | | alert("搜索的ID在当前时间段不存在!"); |
| | | document.getElementById("tagid").value = ""; |
| | | } else { |
| | | // shuju(); |
| | | // setInterval(shuju, 1000) |
| | | // function shuju() { |
| | | // str = '<input type="text" class="form-control" id="tagid" style="width:60%;font-size: 12px;padding: 5px 5px" placeholder="已加载' + tiao + '条数据">' |
| | | // $("#shujutiao").html(str); |
| | | // tiao -= 1 |
| | | // } |
| | | _this.playTrack = tagTrack; |
| | | _this.TrackPlay(); |
| | | //_this.MarkBorderline(); |
| | | }, |
| | | init: function () { |
| | | var _this = this; |
| | | _this.canvas.onmousedown = function (event) { |
| | | _this.clickDown(event); |
| | | }; |
| | | }; |
| | | document.getElementById("pause").onclick = function () { |
| | | _this.playFlag = false; |
| | | window.clearInterval(timer); |
| | | }; |
| | | document.getElementById("continue").onclick = function () { |
| | | _this.playFlag = true; |
| | | _this.TrackPlay(); |
| | | }; |
| | | }, |
| | | /*计算当前鼠标位置距离canvas的偏移量*/ |
| | | xyToCanvas: function (ele, x, y) { |
| | | var _this = this; |
| | | var obj = _this.canvas.getBoundingClientRect(); |
| | | return { |
| | | x: x - obj.left, |
| | | y: y - obj.top |
| | | }; |
| | | }, |
| | | /*鼠标单击事件*/ |
| | | clickDown: function (event) { |
| | | var _this = this; |
| | | if (_this.markFlag) { |
| | | _this.canvas.style.cursor = "none"; |
| | | if (event.button == 2) { |
| | | _this.markFlag = false; |
| | | _this.dragFlag = true; |
| | | _this.canvas.style.cursor = "normal"; |
| | | _this.drawImg(); |
| | | _this.canvas.onmousemove = function (event) { |
| | | _this.mouseMove(event) |
| | | }; |
| | | _this.canvas.onmouseup = function (event) { |
| | | _this.mouseUp(event); |
| | | }; |
| | | _this.canvas.onmousewheel = function (event) { |
| | | _this.onmouseWheel(event); |
| | | }; |
| | | document.getElementById('search').onclick = function () { |
| | | var tagTrack = queryTagid(); |
| | | zongtiao = queryTagid().length - 2; |
| | | tiao = zongtiao; |
| | | if (tagTrack.length == 0) { |
| | | alert("搜索的ID在当前时间段不存在!"); |
| | | document.getElementById("tagid").value = ""; |
| | | } else { |
| | | _this.playTrack = tagTrack; |
| | | _this.TrackPlay(); |
| | | //_this.MarkBorderline(); |
| | | }; |
| | | }; |
| | | document.getElementById("pause").onclick = function () { |
| | | _this.playFlag = false; |
| | | window.clearInterval(timer); |
| | | }; |
| | | document.getElementById("continue").onclick = function () { |
| | | _this.playFlag = true; |
| | | _this.TrackPlay(); |
| | | }; |
| | | }, |
| | | /*计算当前鼠标位置距离canvas的偏移量*/ |
| | | xyToCanvas: function (ele, x, y) { |
| | | var _this = this; |
| | | var obj = _this.canvas.getBoundingClientRect(); |
| | | return { |
| | | x: x - obj.left, |
| | | y: y - obj.top |
| | | }; |
| | | }, |
| | | /*鼠标单击事件*/ |
| | | clickDown: function (event) { |
| | | var _this = this; |
| | | if (_this.markFlag) { |
| | | _this.canvas.style.cursor = "none"; |
| | | if (event.button == 2) { |
| | | _this.markFlag = false; |
| | | _this.dragFlag = true; |
| | | _this.canvas.style.cursor = "normal"; |
| | | _this.drawImg(); |
| | | return; |
| | | } else { |
| | | var posXY = _this.xyToCanvas(_this.canvas, event.clientX, event.clientY); |
| | | posXY.x = (posXY.x - _this.imgX) / _this.imgScale; |
| | | posXY.y = (posXY.y - _this.imgY) / _this.imgScale; |
| | | _this.CreatLinepoints.push(posXY); |
| | | _this.allMarkLins.pop(); |
| | | _this.allMarkLins.push(_this.CreatLinepoints); |
| | | _this.drawImg(); |
| | | } |
| | | return; |
| | | } else { |
| | | var posXY = _this.xyToCanvas(_this.canvas, event.clientX, event.clientY); |
| | | posXY.x = (posXY.x - _this.imgX) / _this.imgScale; |
| | | posXY.y = (posXY.y - _this.imgY) / _this.imgScale; |
| | | _this.CreatLinepoints.push(posXY); |
| | | _this.allMarkLins.pop(); |
| | | _this.allMarkLins.push(_this.CreatLinepoints); |
| | | } |
| | | if (event.button == 0) {//点击鼠标左键 |
| | | _this.dragFlag = true; |
| | | _this.canvas.style.cursor = "move"; |
| | | _this.pos = _this.xyToCanvas(_this.canvas, event.clientX, event.clientY); |
| | | } |
| | | }, |
| | | /*鼠标移动事件*/ |
| | | mouseMove: function (event) { |
| | | var _this = this; |
| | | /*拖拽*/ |
| | | if (_this.dragFlag) { |
| | | _this.canvas.style.cursor = "move"; |
| | | var pos1 = _this.xyToCanvas(_this.canvas, event.clientX, event.clientY); |
| | | var x = pos1.x - _this.pos.x; |
| | | var y = pos1.y - _this.pos.y; |
| | | _this.pos = pos1; |
| | | _this.imgX += x; |
| | | _this.imgY += y; |
| | | _this.drawImg(); |
| | | } |
| | | return; |
| | | } |
| | | if (event.button == 0) {//点击鼠标左键 |
| | | _this.dragFlag = true; |
| | | _this.canvas.style.cursor = "move"; |
| | | _this.pos = _this.xyToCanvas(_this.canvas, event.clientX, event.clientY); |
| | | } |
| | | }, |
| | | /*鼠标移动事件*/ |
| | | mouseMove: function (event) { |
| | | var _this = this; |
| | | /*拖拽*/ |
| | | if (_this.dragFlag) { |
| | | _this.canvas.style.cursor = "move"; |
| | | var pos1 = _this.xyToCanvas(_this.canvas, event.clientX, event.clientY); |
| | | var x = pos1.x - _this.pos.x; |
| | | var y = pos1.y - _this.pos.y; |
| | | _this.pos = pos1; |
| | | _this.imgX += x; |
| | | _this.imgY += y; |
| | | _this.drawImg(); |
| | | } |
| | | /*边界标记*/ |
| | | if (!_this.dragFlag && _this.markFlag) { |
| | | var pos1 = _this.xyToCanvas(_this.canvas, event.clientX, event.clientY); |
| | | /*边界标记*/ |
| | | if (!_this.dragFlag && _this.markFlag) { |
| | | var pos1 = _this.xyToCanvas(_this.canvas, event.clientX, event.clientY); |
| | | |
| | | var can = _this.context; |
| | | can.clearRect(0, 0, _this.canvas.width, _this.canvas.height); |
| | | _this.drawImg(); |
| | | /*画跟随圆点*/ |
| | | can.beginPath(); |
| | | // can.fillText('[' + point.x + ', ' + point.y + ']', 15, 25 * (points.length + 1)) |
| | | can.arc(pos1.x, pos1.y, 6, 0, Math.PI * 2, true); |
| | | can.fillStyle = "#FF423E"; |
| | | can.fill(); |
| | | can.strokeStyle = "#FFF"; |
| | | can.stroke();//画空心圆 |
| | | can.closePath(); |
| | | |
| | | /*当前的坐标未结束那么继续 跟随直线*/ |
| | | if (!_this.CreatLinepoints.length) return; |
| | | can.strokeStyle = "red"; |
| | | can.beginPath(); |
| | | can.moveTo(_this.CreatLinepoints[_this.CreatLinepoints.length - 1].x * _this.imgScale + _this.imgX, _this.CreatLinepoints[_this.CreatLinepoints.length - 1].y * _this.imgScale + _this.imgY); |
| | | can.lineTo(pos1.x, pos1.y); |
| | | can.stroke(); |
| | | can.closePath(); |
| | | } |
| | | }, |
| | | /*鼠标放开事件*/ |
| | | mouseUp: function (event) { |
| | | var _this = this; |
| | | _this.dragFlag = false; |
| | | if (_this.markFlag) { |
| | | _this.canvas.style.cursor = "none"; |
| | | return; |
| | | } |
| | | _this.canvas.style.cursor = 'default'; |
| | | |
| | | }, |
| | | /*鼠标滚轮事件*/ |
| | | onmouseWheel: function (event) { |
| | | var _this = this; |
| | | var pos = _this.xyToCanvas(_this.canvas, event.clientX, event.clientY); |
| | | event.wheelDelta = event.wheelDelta ? event.wheelDelta : (event.deltaY * (-40)); |
| | | if (event.wheelDelta > 0 && _this.scaleFlag < 9) { |
| | | _this.imgScale *= 1.25; |
| | | _this.imgX = _this.imgX * 1.25 - 0.25 * pos.x; |
| | | _this.imgY = _this.imgY * 1.25 - 0.25 * pos.y; |
| | | _this.scaleFlag += 1; |
| | | } |
| | | if (event.wheelDelta < 0 && _this.scaleFlag > -9) {//缩小 |
| | | _this.imgScale *= 0.8; |
| | | _this.imgX = _this.imgX * 0.8 + pos.x * 0.2; |
| | | _this.imgY = _this.imgY * 0.8 + pos.y * 0.2; |
| | | _this.scaleFlag -= 1; |
| | | } |
| | | _this.drawImg(); |
| | | }, |
| | | /*边界标记*/ |
| | | MarkBorderline: function () { |
| | | var _this = this; |
| | | _this.markFlag = true;//切换为true,禁止拖拽,只能标记 |
| | | _this.canvas.style.cursor = "none"; |
| | | _this.CreatLinepoints = []; |
| | | _this.allMarkLins.push([]); |
| | | }, |
| | | /*顺序播放坐标*/ |
| | | TrackPlay: function () { |
| | | var _this = this; |
| | | _this.playFlag = true; |
| | | if (_this.playFlag) { |
| | | var t = 1000; |
| | | timer = setInterval(fn, t); |
| | | function fn() { |
| | | var speed = document.getElementById("bofangsudu").value; |
| | | if (_this.playFlag && _this.playIndex < _this.playTrack.length) { |
| | | _this.ShowNode(_this.playTrack[_this.playIndex]); |
| | | _this.playIndex += 1; |
| | | }; |
| | | str = '<input type="text" class="form-control" id="tagid" style="width:60%;font-size: 12px;padding: 5px 5px" placeholder="剩余' + zongtiao + '/' + tiao + '条数据">' |
| | | $("#shujutiao").html(str); |
| | | if (tiao > 0) { |
| | | tiao -= 1 |
| | | } |
| | | clearInterval(timer); |
| | | if (_this.playIndex == _this.playTrack.length - 1) { |
| | | clearInterval(timer); |
| | | _this.playIndex = 0; |
| | | } else { |
| | | var stime = new Date(_this.playTrack[_this.playIndex].time).getTime(); |
| | | var etime = new Date(_this.playTrack[_this.playIndex + 1].time).getTime(); |
| | | var t = etime - stime; |
| | | var t_v = t / speed; |
| | | timer = setInterval(fn, t_v); |
| | | } |
| | | }; |
| | | } else { clearInterval(timer); } |
| | | }, |
| | | /*画点*/ |
| | | ShowNode: function (node_list) { |
| | | var _this = this; |
| | | var can = _this.context; |
| | | can.clearRect(0, 0, _this.canvas.width, _this.canvas.height); |
| | | |
| | | _this.playMark = node_list; |
| | | _this.drawImg(); |
| | | /*画跟随圆点*/ |
| | | can.beginPath(); |
| | | // can.fillText('[' + point.x + ', ' + point.y + ']', 15, 25 * (points.length + 1)) |
| | | can.arc(pos1.x, pos1.y, 6, 0, Math.PI * 2, true); |
| | | can.fillStyle = "#FF423E"; |
| | | can.fill(); |
| | | can.strokeStyle = "#FFF"; |
| | | can.stroke();//画空心圆 |
| | | can.closePath(); |
| | | |
| | | /*当前的坐标未结束那么继续 跟随直线*/ |
| | | if (!_this.CreatLinepoints.length) return; |
| | | can.strokeStyle = "red"; |
| | | can.beginPath(); |
| | | can.moveTo(_this.CreatLinepoints[_this.CreatLinepoints.length - 1].x * _this.imgScale + _this.imgX, _this.CreatLinepoints[_this.CreatLinepoints.length - 1].y * _this.imgScale + _this.imgY); |
| | | can.lineTo(pos1.x, pos1.y); |
| | | can.stroke(); |
| | | can.closePath(); |
| | | } |
| | | }, |
| | | /*鼠标放开事件*/ |
| | | mouseUp: function (event) { |
| | | var _this = this; |
| | | _this.dragFlag = false; |
| | | if (_this.markFlag) { |
| | | _this.canvas.style.cursor = "none"; |
| | | return; |
| | | } |
| | | _this.canvas.style.cursor = 'default'; |
| | | |
| | | }, |
| | | /*鼠标滚轮事件*/ |
| | | onmouseWheel: function (event) { |
| | | var _this = this; |
| | | var pos = _this.xyToCanvas(_this.canvas, event.clientX, event.clientY); |
| | | event.wheelDelta = event.wheelDelta ? event.wheelDelta : (event.deltaY * (-40)); |
| | | if (event.wheelDelta > 0 && _this.scaleFlag < 9) { |
| | | _this.imgScale *= 1.25; |
| | | _this.imgX = _this.imgX * 1.25 - 0.25 * pos.x; |
| | | _this.imgY = _this.imgY * 1.25 - 0.25 * pos.y; |
| | | _this.scaleFlag += 1; |
| | | } |
| | | if (event.wheelDelta < 0 && _this.scaleFlag > -9) {//缩小 |
| | | _this.imgScale *= 0.8; |
| | | _this.imgX = _this.imgX * 0.8 + pos.x * 0.2; |
| | | _this.imgY = _this.imgY * 0.8 + pos.y * 0.2; |
| | | _this.scaleFlag -= 1; |
| | | } |
| | | _this.drawImg(); |
| | | }, |
| | | /*边界标记*/ |
| | | MarkBorderline: function () { |
| | | var _this = this; |
| | | _this.markFlag = true;//切换为true,禁止拖拽,只能标记 |
| | | _this.canvas.style.cursor = "none"; |
| | | _this.CreatLinepoints = []; |
| | | _this.allMarkLins.push([]); |
| | | }, |
| | | /*顺序播放坐标*/ |
| | | TrackPlay: function () { |
| | | var _this = this; |
| | | _this.playFlag = true; |
| | | if (_this.playFlag) { |
| | | var t = 1000; |
| | | timer = setInterval(fn, t); |
| | | var tiao = queryTagid().length; |
| | | function fn() { |
| | | var speed = document.getElementById("bofangsudu").value; |
| | | if (_this.playFlag && _this.playIndex < _this.playTrack.length) { |
| | | _this.ShowNode(_this.playTrack[_this.playIndex]); |
| | | _this.playIndex += 1; |
| | | }; |
| | | str = '<input type="text" class="form-control" id="tagid" style="width:60%;font-size: 12px;padding: 5px 5px" placeholder="已加载' + tiao + '条数据">' |
| | | $("#shujutiao").html(str); |
| | | tiao -= 1 |
| | | clearInterval(timer); |
| | | if (_this.playIndex == _this.playTrack.length - 1) { |
| | | clearInterval(timer); |
| | | } else { |
| | | var stime = new Date(_this.playTrack[_this.playIndex].time).getTime(); |
| | | var etime = new Date(_this.playTrack[_this.playIndex + 1].time).getTime(); |
| | | var t = etime - stime; |
| | | var t_v = t / speed; |
| | | timer = setInterval(fn, t_v); |
| | | } |
| | | }; |
| | | } else { clearInterval(timer); } |
| | | }, |
| | | /*画点*/ |
| | | ShowNode: function (node_list) { |
| | | var _this = this; |
| | | var can = _this.context; |
| | | can.clearRect(0, 0, _this.canvas.width, _this.canvas.height); |
| | | |
| | | _this.playMark = node_list; |
| | | _this.drawImg(); |
| | | }, |
| | | } |
| | | }, |
| | | } |
| | | //var imgUrl = '../image/mapfile/led.png';//图片路径 |
| | | //new MarkPoints(imgUrl); |
| | | </script> |
| | | </script> |
| | | |
| | | <!-- END FUNCTION SCRIPTS --> |
| | | <!-- END FUNCTION SCRIPTS --> |
| | | |
| | | <!-- BEGIN GLOBAL MANDATORY SCRIPTS --> |
| | | <script src="/hxzkoa/hxzk/assets/js/libs/jquery-3.1.1.min.js"></script> |
| | | <script src="/hxzkoa/hxzk/bootstrap/js/popper.min.js"></script> |
| | | <script src="/hxzkoa/hxzk/bootstrap/js/bootstrap.min.js"></script> |
| | | <script src="/hxzkoa/hxzk/plugins/perfect-scrollbar/perfect-scrollbar.min.js"></script> |
| | | <script src="/hxzkoa/hxzk/assets/js/app.js"></script> |
| | | <script src="/hxzkoa/hxzk/plugins/table/datatable/button-ext/dataTables.buttons.min.js"></script> |
| | | <script src="/hxzkoa/hxzk/plugins/table/datatable/button-ext/jszip.min.js"></script> |
| | | <script src="/hxzkoa/hxzk/plugins/table/datatable/button-ext/buttons.html5.min.js"></script> |
| | | <script src="/hxzkoa/hxzk/plugins/table/datatable/button-ext/buttons.print.min.js"></script> |
| | | <script> |
| | | $(document).ready(function () { |
| | | App.init(); $.ajax({ async: false, type: "POST", url: "/hxzkoa/getSysSetting_list.do", data: {}, dataType: "json", success: function (data) { title = data[0].title; document.title = title; }, }); |
| | | var select_layer = document.getElementById("chooselayer"); |
| | | var select_value = select_layer.value; |
| | | if (select_value == 'baidumap') { |
| | | document.getElementById("wrap").style.display = 'none'; |
| | | document.getElementById("draw").style.display = 'none'; |
| | | document.getElementById("baidumap").style.display = ''; |
| | | document.getElementById("search").style.display = 'none'; |
| | | document.getElementById("pause").style.display = 'none'; |
| | | document.getElementById("continue").style.display = 'none'; |
| | | document.getElementById("search2").style.display = ''; |
| | | document.getElementById("pause2").style.display = ''; |
| | | document.getElementById("continue2").style.display = ''; |
| | | document.getElementById("bofangsudu").options.remove(4); |
| | | diaoyongbaidumap(); |
| | | } else { |
| | | document.getElementById("wrap").style.display = ''; |
| | | document.getElementById("draw").style.display = ''; |
| | | document.getElementById("baidumap").style.display = 'none'; |
| | | document.getElementById("search").style.display = ''; |
| | | document.getElementById("pause").style.display = ''; |
| | | document.getElementById("continue").style.display = ''; |
| | | document.getElementById("search2").style.display = 'none'; |
| | | document.getElementById("pause2").style.display = 'none'; |
| | | document.getElementById("continue2").style.display = 'none'; |
| | | $.ajax({ |
| | | async: false, |
| | | type: 'POST', |
| | | url: "/hxzkoa/floornumTomap.do", |
| | | dataType: 'json', |
| | | data: { |
| | | value: select_value |
| | | }, |
| | | success: function (data) { |
| | | //imgUrl = '/hxzkoa/hxzk/image/mapfile/'+data[0].mapname; |
| | | imgUrl = '/hxzkoa/hxzk/image/mapfile/京辰瑞达.jpg'; |
| | | new MarkPoints(imgUrl); |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | $('.header-page').load('/hxzkoa/hxzk/top.html'); $('.login-page').load('/hxzkoa/hxzk/head.html'); |
| | | <!-- BEGIN GLOBAL MANDATORY SCRIPTS --> |
| | | <script src="/hxzkoa/hxzk/assets/js/libs/jquery-3.1.1.min.js"></script> |
| | | <script src="/hxzkoa/hxzk/bootstrap/js/popper.min.js"></script> |
| | | <script src="/hxzkoa/hxzk/bootstrap/js/bootstrap.min.js"></script> |
| | | <script src="/hxzkoa/hxzk/plugins/perfect-scrollbar/perfect-scrollbar.min.js"></script> |
| | | <script src="/hxzkoa/hxzk/assets/js/app.js"></script> |
| | | <script src="/hxzkoa/hxzk/plugins/table/datatable/button-ext/dataTables.buttons.min.js"></script> |
| | | <script src="/hxzkoa/hxzk/plugins/table/datatable/button-ext/jszip.min.js"></script> |
| | | <script src="/hxzkoa/hxzk/plugins/table/datatable/button-ext/buttons.html5.min.js"></script> |
| | | <script src="/hxzkoa/hxzk/plugins/table/datatable/button-ext/buttons.print.min.js"></script> |
| | | <script> |
| | | $(document).ready(function () { |
| | | App.init(); $.ajax({ async: false, type: "POST", url: "/hxzkoa/getSysSetting_list.do", data: {}, dataType: "json", success: function (data) { /* title = data[0].title; document.title = title; */ }, }); |
| | | var select_layer = document.getElementById("chooselayer"); |
| | | var select_value = select_layer.value; |
| | | if (select_value == 'baidumap') { |
| | | document.getElementById("wrap").style.display = 'none'; |
| | | document.getElementById("draw").style.display = 'none'; |
| | | document.getElementById("baidumap").style.display = ''; |
| | | document.getElementById("search").style.display = 'none'; |
| | | document.getElementById("pause").style.display = 'none'; |
| | | document.getElementById("continue").style.display = 'none'; |
| | | document.getElementById("search2").style.display = ''; |
| | | document.getElementById("pause2").style.display = ''; |
| | | document.getElementById("continue2").style.display = ''; |
| | | document.getElementById("bofangsudu").options.remove(4); |
| | | diaoyongbaidumap(); |
| | | } else { |
| | | document.getElementById("wrap").style.display = ''; |
| | | document.getElementById("draw").style.display = ''; |
| | | document.getElementById("baidumap").style.display = 'none'; |
| | | document.getElementById("search").style.display = ''; |
| | | document.getElementById("pause").style.display = ''; |
| | | document.getElementById("continue").style.display = ''; |
| | | document.getElementById("search2").style.display = 'none'; |
| | | document.getElementById("pause2").style.display = 'none'; |
| | | document.getElementById("continue2").style.display = 'none'; |
| | | $.ajax({ |
| | | async: false, |
| | | type: 'POST', |
| | | url: "/hxzkoa/floornumTomap.do", |
| | | dataType: 'json', |
| | | data: { |
| | | value: select_value |
| | | }, |
| | | success: function (data) { |
| | | imgUrl = '/hxzkoa/hxzk/image/mapfile/' + data[0].mapname; |
| | | //imgUrl = '/hxzkoa/hxzk/image/mapfile/京辰瑞达.jpg'; |
| | | new MarkPoints(imgUrl); |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | $('.header-page').load('/hxzkoa/hxzk/top.html'); $('.login-page').load('/hxzkoa/hxzk/head.html'); |
| | | |
| | | </script> |
| | | <script src="/hxzkoa/hxzk/assets/js/custom.js"></script> |
| | | <!-- END GLOBAL MANDATORY SCRIPTS --> |
| | | </script> |
| | | <script src="/hxzkoa/hxzk/assets/js/custom.js"></script> |
| | | <!-- END GLOBAL MANDATORY SCRIPTS --> |
| | | |
| | | <!-- BEGIN PAGE LEVEL PLUGINS/CUSTOM SCRIPTS --> |
| | | <script src="/hxzkoa/hxzk/plugins/apex/apexcharts.min.js"></script> |
| | | <script src="/hxzkoa/hxzk/assets/js/dashboard/dash_2.js"></script> |
| | | <!-- BEGIN PAGE LEVEL PLUGINS/CUSTOM SCRIPTS --> |
| | | <!-- BEGIN PAGE LEVEL PLUGINS/CUSTOM SCRIPTS --> |
| | | <script src="/hxzkoa/hxzk/plugins/apex/apexcharts.min.js"></script> |
| | | <script src="/hxzkoa/hxzk/assets/js/dashboard/dash_2.js"></script> |
| | | <!-- BEGIN PAGE LEVEL PLUGINS/CUSTOM SCRIPTS --> |
| | | |
| | | </body> |
| | | |