Commit 69382307ff94fb2e8f271ae5ae3a9a9c69e319ec

Authored by 潘钊
1 parent 2df0767e

实时监控接入线路GPS数据

src/main/resources/static/pages/mapmonitor/real/css/real.css
... ... @@ -53,6 +53,28 @@ label.BMapLabel{
53 53  
54 54 }
55 55  
  56 +.mapRightWrap.vehicle .slimScrollBar{
  57 + width: 6px !important;
  58 + opacity: 0.5 !important;
  59 + background: #e7ecf1 !important;
  60 + border-radius: 5px !important;
  61 +}
  62 +
  63 +.mapRightWrap.vehicle a.fixed-line{
  64 + text-decoration: none;
  65 + position: fixed;
  66 + top: 218.5px;
  67 + width: 318px;
  68 + left: 1586px;
  69 + background-color: red;
  70 + z-index: 2;
  71 +}
  72 +
  73 +.mapRightWrap.vehicle a.fixed-line .head{
  74 + border-bottom: none;
  75 + margin: 15px 15px 10px 15px;
  76 +}
  77 +
56 78 .mapRightWrap.to_searchPanel{
57 79 transform:rotateY(180deg);
58 80 height: 200px;
... ... @@ -313,34 +335,35 @@ html{
313 335 }
314 336  
315 337 .mapRightWrap.vehicle p.head{
316   - color: #C0BDBD;
317   - font-size: 21px;
318   - border-bottom: 1px solid gray;
319   - padding-left: 15px;
320   - position: relative;
  338 + color: #B7B7B7;
  339 + font-size: 18px;
  340 + border-bottom: 1px dashed #556471;
  341 + position: relative;
  342 + margin: 15px;
  343 + padding-bottom: 10px;
  344 + font-family: 微软;
321 345 }
322 346  
323 347 /* .mapRightWrap.vehicle p.head:hover{
324 348 box-shadow: 0 8px 17px 0 rgba(128, 123, 123, 0.2),0 6px 20px 0 rgba(86, 67, 67, 0.19);
325 349 }
326 350 */
327   -.mapRightWrap.vehicle p.head>span.icon>a{
328   - position: absolute;
329   - right: 15px;
330   - top: -2px;
331   - font-size: 24px;
332   - color: #B9B9B9;
333   -
334   - transition: all .5s ease;
  351 +.mapRightWrap.vehicle p.head>span.icon{
  352 + position: absolute;
  353 + right: 10px;
  354 + top: -6px;
  355 + font-size: 24px;
  356 + color: #7C8994;
  357 + transition: all .5s ease;
335 358  
336 359 }
337 360  
338   -.mapRightWrap.vehicle p.head>span.icon>a.rotate{
  361 +.mapRightWrap.vehicle p.head>span.icon.rotate{
339 362 transform:rotate(180deg);
340 363 }
341 364  
342 365  
343   -.mapRightWrap.vehicle p.head>span.icon>a:hover{
  366 +.mapRightWrap.vehicle p.head>span.icon:hover{
344 367 color: #D8D5D5;
345 368 }
346 369  
... ... @@ -489,7 +512,7 @@ html{
489 512 }
490 513  
491 514 .mapRightWrap.gaode.vehicle p.head{
492   - border-bottom: 1px solid #e5e5e5;
  515 + border-bottom: 1px dashed #E2DFDF;
493 516 color: #7D7777;
494 517 }
495 518  
... ...
src/main/resources/static/pages/mapmonitor/real/js/map_platform.js
... ... @@ -132,20 +132,24 @@ var realMap = (function() {
132 132  
133 133 local.search(val);
134 134 },
135   - drawLine: function(lineName, gpsList){
136   - var drawCar = this.drawGpsMarker;
  135 + drawLine: function(lineName, cb){
137 136 //画线路
138 137 var busline = new BMap.BusLineSearch(currentMap.map,{
139 138 renderOptions: {map: currentMap.map},
140 139 onGetBusListComplete: function(result){
141   - if(result) {
142   - var fstLine = result.getBusListItem(0);
143   - busline.getBusLine(fstLine);
144   - //画车
145   - setTimeout(function(){
146   - drawCar(gpsList);
147   - }, 500);
148   - }
  140 + if(result)
  141 + busline.getBusLine(result.getBusListItem(0));
  142 + else
  143 + cb && cb();
  144 + },
  145 + onPolylinesSet: function(pline){
  146 + //pline.setStrokeColor('#333');
  147 + //console.log(pline.getStrokeColor());
  148 + console.log(pline);
  149 + cb && cb();
  150 + },
  151 + onGetBusLineComplete: function(line){
  152 + line.getPolyline().setStrokeColor('#333');
149 153 }
150 154 });
151 155 busline.getBusList(lineName);
... ... @@ -166,6 +170,9 @@ var realMap = (function() {
166 170 });
167 171 },
168 172 coordsConvert: function(list, cb){
  173 + if(list.length > 100)
  174 + list = list.slice(0, 100);
  175 +
169 176 var coords = '';
170 177 //拼接GPS坐标,一次性转换
171 178 for (var i = 0, item; item = list[i++];)
... ... @@ -313,10 +320,33 @@ var realMap = (function() {
313 320 function createLabel(gpsData){
314 321 var point = new BMap.Point(gpsData.bd_coord.x, gpsData.bd_coord.y)
315 322 //label
316   - ,label = new BMap.Label(gpsData.nbbm, {position: point, offset: new BMap.Size(-25,-5)});
317   - label.setStyle({borderColor: '#36C6D3',borderRadius: '5px', padding: '5px 9px 5px 9px', color: '#fff', backgroundColor: '#36C6D3'});
  323 + ,label = new BMap.Label(gpsData.nbbm.replace('-',''), {position: point, offset: new BMap.Size(-28,-10)});
  324 + label.setStyle({borderColor: bgColor(gpsData),borderRadius: '5px', padding: '3px 5px', color: tColor(gpsData), backgroundColor: bgColor(gpsData)});
318 325 return label;
319 326 }
320 327  
  328 + /**
  329 + * 颜色
  330 + */
  331 + var bgColor = function(g){
  332 + if(g.state == 0){
  333 + if(g.upDown == 0)
  334 + return '#5E96D2';
  335 + else if(g.upDown == 1)
  336 + return '#C92121';
  337 + else
  338 + return 'red';
  339 + }
  340 + else
  341 + return "rgb(171, 171, 171)";
  342 + }
  343 +
  344 + var tColor = function(g){
  345 + if(g.state == 0)
  346 + return "#fff";
  347 + else
  348 + return "rgb(229, 229, 229)";
  349 + }
  350 +
321 351 return real_map;
322 352 })();
323 353 \ No newline at end of file
... ...
src/main/resources/static/pages/mapmonitor/real/js/real.js
... ... @@ -87,15 +87,15 @@
87 87 $('#mapContainer').height($(pjaxContainer).height() + 49);
88 88  
89 89 mrw.html(spinnerLoad);
90   - init();
  90 + realMap.init();
  91 + vehiclePanel.showDataLazy();
91 92  
92   - function init(){
93   - //初始化地图
  93 + //function init(){
  94 + /*//初始化地图
94 95 (function(){
95 96 var f = arguments.callee;
96 97 try {
97 98 realMap.init();
98   - console.log('realMap');
99 99 } catch (e) {
100 100 setTimeout(f , 100);
101 101 }
... ... @@ -108,6 +108,6 @@
108 108 } catch (e) {
109 109 setTimeout(f , 100);
110 110 }
111   - })();
112   - }
  111 + })();*/
  112 + //}
113 113 }();
114 114 \ No newline at end of file
... ...
src/main/resources/static/pages/mapmonitor/real/js/vehicle.js
... ... @@ -3,24 +3,83 @@
3 3 */
4 4  
5 5 var vehiclePanel = (function() {
  6 +
6 7 function getCurr(){
7 8 return realMap[realMap.getMap().fName];
8 9 }
  10 + var storage = window.localStorage;
  11 +
  12 + function closeAll(){
  13 + $('a[data-toggle=collapse]').collapse('hide');
  14 + }
  15 +
9 16  
10 17 // 手风琴收拢
11 18 $('.mapRightWrap').on('hide.bs.collapse', '.panel-collapse', function() {
12   - $(this).prev().find('span.icon a').addClass('rotate');
  19 + $(this).prev().find('span.icon').addClass('rotate');
13 20 });
14 21  
15 22 // 手风琴展开
16 23 $('.mapRightWrap').on('show.bs.collapse', '.panel-collapse', function() {
17   - $(this).prev().find('span.icon a').removeClass('rotate');
  24 + $(this).prev().find('span.icon').removeClass('rotate');
  25 + var lineCode = $(this).data('line');
  26 +
  27 + //收拢其他
  28 + closeAll();
  29 +
  30 + //该线路的GPS点
  31 + var showList = [];
  32 + $.each(lineGps[lineCode], function(){
  33 + showList.push(allGps[this]);
  34 + })
  35 + //在地图上画出线路
  36 + var mapObj = getCurr();
  37 + console.log('allGps', allGps, 'lineCode', lineCode);
  38 + mapObj.drawLine($(this).data('name'), function(){
  39 + mapObj.drawGpsMarker(showList);
  40 + });
  41 +
  42 + //显示车辆列表
  43 + var htmlStr = template('vehicle_panel_collapse_temp', {list: showList});
  44 + $(this).html(htmlStr);
  45 + });
  46 +
  47 + //GPS刷新事件
  48 + var allGps = {};
  49 + var lineGps = {};
  50 + $('#mapContainer').on('gps_refresh', function(e, add, up){
  51 + var temp = add;
  52 + if(up)
  53 + temp = temp.concat(up);
  54 +
  55 + if(!$(this).is(":hidden")){
  56 + $.each(temp, function(){
  57 + allGps[this.deviceId] = this;
  58 + });
  59 +
  60 + $.each(add, function(){
  61 + if(!lineGps[this.lineId])
  62 + lineGps[this.lineId] = [];
  63 + //线路和设备号映射
  64 + lineGps[this.lineId].push(this.deviceId);
  65 + })
  66 + }
18 67 });
19 68  
20 69 var exports = {
21 70 // 加载车辆信息
22 71 showData: function(){
23   - var line = {code: 10103, name: '119路'};
  72 + //要展示的线路
  73 + var lines = JSON.parse(storage.getItem('lineControlItems'));
  74 +
  75 + var htmlStr = template('vehicle_panel_temp', {list: lines});
  76 + $('.mapRightWrap').html(htmlStr).addClass('vehicle');
  77 + //滚动条
  78 + $('.gps-line-wrap').slimscroll({
  79 + height: '100%',
  80 + alwaysVisible: true
  81 + });
  82 + /*var line = {code: 10103, name: '119路'};
24 83 $get('/gps/real/line/' + line.code, null, function(data){
25 84 //过滤掉没有自编号和站点名为空的
26 85 var newArray = [];
... ... @@ -36,10 +95,10 @@ var vehiclePanel = (function() {
36 95 var mapObj;
37 96 mapObj = getCurr();
38 97 mapObj.drawLine(line.name, newArray);
39   - });
  98 + });*/
40 99 },
41 100 showDataLazy : function() {
42   - setTimeout(exports.showData, 600);
  101 + setTimeout(exports.showData, 1000);
43 102 }
44 103 };
45 104  
... ...
src/main/resources/static/pages/mapmonitor/real/real.html
... ... @@ -50,5 +50,4 @@
50 50 <script src="/pages/mapmonitor/real/js/temp.js"></script>
51 51 <script src="/pages/mapmonitor/real/js/real.js"></script>
52 52 <script>
53   - console.log(111);
54 53 </script>
... ...
src/main/resources/static/pages/mapmonitor/real/temps/vehicle.html
1 1 <script id="vehicle_panel_temp" type="text/html">
  2 +<div class="gps-line-wrap">
  3 +{{each list as line i}}
  4 +<a data-toggle="collapse" href="#collapse_{{line.lineCode}}" aria-expanded="true" style="text-decoration:none">
2 5 <p class="head" >
3   - 119路
4   - <span class="icon">
5   - <a data-toggle="collapse" href="#collapse_2_2" aria-expanded="true">
  6 + {{line.name}}
  7 + <span class="icon rotate">
6 8 <i class="fa fa-angle-double-down"></i>
7   - </a>
8 9 </span>
9 10 </p>
10   -<div id="collapse_2_2" class="panel-collapse collapse in">
11   -{{each list as gpsObj i}}
12   - <div class="vehicle-item online" >
13   - <div class="text">
14   - <span class="nbbm"><i class="fa fa-circle"></i> &nbsp;{{gpsObj.nbbm}}</span>
15   - &nbsp;&nbsp;&nbsp;
16   - <span style="font-size: 13px;">{{gpsObj.stationName}}站</span>
17   - </div>
18   - <div class="icon">
19   - <i class="fa fa-angle-down"></i>
20   - </div>
21   - </div>
22   -{{/each}}
  11 +</a>
  12 +<div id="collapse_{{line.lineCode}}" class="panel-collapse collapse" data-line={{line.lineCode}} data-name={{line.name}}>
23 13  
24 14 <!--
25 15 <div class="vehicle-item offline" >
... ... @@ -34,4 +24,20 @@
34 24 </div>
35 25 -->
36 26 </div>
  27 +{{/each}}
  28 +</div>
  29 +</script>
  30 +<script id="vehicle_panel_collapse_temp" type="text/html">
  31 +{{each list as gpsObj i}}
  32 + <div class="vehicle-item online" >
  33 + <div class="text">
  34 + <span class="nbbm"><i class="fa fa-circle"></i> &nbsp;{{gpsObj.nbbm}}</span>
  35 + &nbsp;&nbsp;&nbsp;
  36 + <span style="font-size: 13px;">{{gpsObj.stationName}}</span>
  37 + </div>
  38 + <div class="icon">
  39 + <i class="fa fa-file-text-o"></i>
  40 + </div>
  41 + </div>
  42 +{{/each}}
37 43 </script>
38 44 \ No newline at end of file
... ...