Commit 7fe23b16fa1a8199209e724f143233a517f787ed

Authored by 潘钊
1 parent 27cda0bc

Merge branch 'minhang' of http://222.66.0.204:8090/panzhaov5/bsth_control into minhang

update...
src/main/java/com/bsth/controller/sys/UserController.java
... ... @@ -73,9 +73,13 @@ public class UserController extends BaseController<SysUser, Integer> {
73 73 }
74 74  
75 75 //解密RSA
76   - userName = RSAUtils.decryptBase64(userName);
77   - password = RSAUtils.decryptBase64(password);
78   -
  76 + try {
  77 + userName = RSAUtils.decryptBase64(userName);
  78 + password = RSAUtils.decryptBase64(password);
  79 + } catch (RuntimeException e) {
  80 + return put(rs, "msg", "decrypt RSA fail!可能页面已过期,尝试刷新页面。");
  81 + }
  82 +
79 83 SysUser user = sysUserService.findByUserName(userName);
80 84 if (null == user)
81 85 return put(rs, "msg", "不存在的用户");
... ...
src/main/java/com/bsth/data/schedule/DayOfSchedule.java
... ... @@ -472,7 +472,6 @@ public class DayOfSchedule implements CommandLineRunner {
472 472 }
473 473  
474 474 public void put(ScheduleRealInfo sch) {
475   -
476 475 schAttrCalculator
477 476 .calcRealDate(sch)
478 477 .calcAllTimeByFcsj(sch);
... ...
src/main/java/com/bsth/data/schedule/SchAttrCalculator.java
1 1 package com.bsth.data.schedule;
2 2  
3   -import java.text.ParseException;
4   -import java.util.ArrayList;
5   -import java.util.Collections;
6   -import java.util.List;
7   -
  3 +import com.bsth.data.LineConfigData;
  4 +import com.bsth.entity.realcontrol.LineConfig;
  5 +import com.bsth.entity.realcontrol.ScheduleRealInfo;
8 6 import org.joda.time.format.DateTimeFormat;
9 7 import org.joda.time.format.DateTimeFormatter;
10 8 import org.slf4j.Logger;
... ... @@ -12,9 +10,10 @@ import org.slf4j.LoggerFactory;
12 10 import org.springframework.beans.factory.annotation.Autowired;
13 11 import org.springframework.stereotype.Component;
14 12  
15   -import com.bsth.data.LineConfigData;
16   -import com.bsth.entity.realcontrol.LineConfig;
17   -import com.bsth.entity.realcontrol.ScheduleRealInfo;
  13 +import java.text.ParseException;
  14 +import java.util.ArrayList;
  15 +import java.util.Collections;
  16 +import java.util.List;
18 17  
19 18 /**
20 19 *
... ... @@ -49,11 +48,30 @@ public class SchAttrCalculator {
49 48 if (null == sch.getFcsjT())
50 49 calcFcsjTime(sch);
51 50  
52   -
  51 + //計發時間
53 52 if(sch.getFcsj().compareTo(conf.getStartOpt()) < 0){
54 53 sch.setFcsjAll(fmtyyyyMMddHHmm.parseMillis(sch.getScheduleDateStr()+sch.getFcsj()) + DAY_TIME);
55 54 }
56   -
  55 +
  56 + //待發時間
  57 + if(sch.getDfsj().compareTo(conf.getStartOpt()) < 0){
  58 + sch.setDfsjAll(fmtyyyyMMddHHmm.parseMillis(sch.getScheduleDateStr()+sch.getDfsj()) + DAY_TIME);
  59 + }
  60 + else
  61 + sch.setDfsjAll(fmtyyyyMMddHHmm.parseMillis(sch.getScheduleDateStr()+sch.getDfsj()));
  62 +
  63 + //實發時間
  64 + if(sch.getFcsjActual() != null &&
  65 + sch.getFcsjActual().compareTo(conf.getStartOpt()) < 0){
  66 + sch.setFcsjActualAll(fmtyyyyMMddHHmm.parseMillis(sch.getScheduleDateStr()+sch.getFcsjActual()) + DAY_TIME);
  67 + }
  68 +
  69 + //實際終點時間
  70 + if(sch.getZdsjActual() != null &&
  71 + sch.getZdsjActual().compareTo(conf.getStartOpt()) < 0){
  72 + sch.setZdsjActualAll(fmtyyyyMMddHHmm.parseMillis(sch.getScheduleDateStr()+sch.getZdsjActual()) + DAY_TIME);
  73 + }
  74 +
57 75 sch.setRealExecDate(fmtyyyyMMdd.print(sch.getFcsjT()));
58 76 } catch (Exception e) {
59 77 logger.error("", e);
... ...
src/main/java/com/bsth/service/realcontrol/impl/RealMapServiceImpl.java
... ... @@ -40,7 +40,7 @@ public class RealMapServiceImpl implements RealMapService {
40 40 }
41 41 inStr = " (" + inStr.substring(1) + ")";
42 42  
43   - String sql = "select R.LINE_CODE,R.STATION_NAME,R.STATION_CODE,R.STATION_MARK,R.DIRECTIONS,R.DISTANCES,R.TO_TIME, R.VERSIONS,S.G_LONX,S.G_LATY,S.RADIUS,S.SHAPES_TYPE,ST_AsText(S.G_POLYGON_GRID) as G_POLYGON_GRID, R.STATION_ROUTE_CODE from bsth_c_stationroute r inner join bsth_c_station s on r.station=s.id where r.line_code in "+inStr+" and r.destroy=0";
  43 + String sql = "select r.LINE_CODE,r.STATION_NAME,r.STATION_CODE,r.STATION_MARK,r.DIRECTIONS,r.DISTANCES,r.TO_TIME, r.VERSIONS,s.G_LONX,s.G_LATY,s.RADIUS,s.SHAPES_TYPE,ST_AsText(s.G_POLYGON_GRID) as G_POLYGON_GRID, r.STATION_ROUTE_CODE from bsth_c_stationroute r inner join bsth_c_station s on r.station=s.id where r.line_code in "+inStr+" and r.destroy=0";
44 44  
45 45 List<StationSpatialData> list = jdbcTemplate.query(sql,new BeanPropertyRowMapper(StationSpatialData.class));
46 46 rs.put("status", ResponseCode.SUCCESS);
... ... @@ -59,7 +59,7 @@ public class RealMapServiceImpl implements RealMapService {
59 59 Map<String, Object> rs = new HashMap();
60 60  
61 61 try {
62   - String sql = "select ID, AREA,PARK_CODE,PARK_NAME,ST_AsText(G_PARK_POINT) as G_PARK_POINT,G_CENTER_POINT,RADIUS,SHAPES_TYPE from bsth_c_car_park WHERE destroy=0";
  62 + String sql = "select ID, AREA,PARK_CODE,PARK_NAME,ST_AsText(G_PARK_POINT) as G_PARK_POINT,G_CENTER_POINT,RADIUS,SHAPES_TYPE from bsth_c_car_park WHERE destroy=0 and shapes_type='d'";
63 63  
64 64 List<CarPark> list = jdbcTemplate.query(sql,new BeanPropertyRowMapper(CarPark.class));
65 65 rs.put("status", ResponseCode.SUCCESS);
... ...
src/main/resources/static/real_control_v2/fragments/north/tabs.html
... ... @@ -2,7 +2,7 @@
2 2 <script id="north-tabs-temp" type="text/html">
3 3 <ul class="uk-tab" data-uk-tab="{connect:'#main-tab-content'}">
4 4 <li class="uk-active" ><a>主页</a></li>
5   - <li class=""><a>地图</a></li>
  5 + <li id="north_tabs_map_btn"><a>地图</a></li>
6 6 {{each list as line i}}
7 7 <li class="tab-line"><a>{{line.name}}(<span id="badge_untreated_num_{{line.lineCode}}">0</span>, <span id="badge_yfwf_num_{{line.lineCode}}">0</span>)</a></li>
8 8 {{/each}}
... ... @@ -12,9 +12,9 @@
12 12 <script id="north-tab-content-temp" type="text/html">
13 13 <ul id="main-tab-content" class="uk-switcher uk-margin ">
14 14 <li class="uk-active home-panel">主页</li>
15   - <li class="map-panel">地图</li>
  15 + <li class="map-panel">地图未渲染</li>
16 16 {{each list as line i}}
17   - <li class="line_schedule" data-id="{{line.lineCode}}">{{line.name}}</li>
  17 + <li class="line_schedule" data-id="{{line.lineCode}}">{{line.name}} 未渲染</li>
18 18 {{/each}}
19 19 </ul>
20 20 </script>
... ...
src/main/resources/static/real_control_v2/js/common.js
1   -var gb_common = (function() {
  1 +var gb_common = (function () {
2 2  
3   - var reqCode80 = {0xA1: '请求恢复运营', 0xA2: '申请调档', 0xA3: '出场请求', 0xA5: '进场请求', 0xA7: '加油请求', 0x50: '车辆故障', 0x70: '路阻报告', 0x60: '事故报告', 0x11: '扣证纠纷', 0x12 : '报警'};
  3 + var reqCode80 = {
  4 + 0xA1: '请求恢复运营',
  5 + 0xA2: '申请调档',
  6 + 0xA3: '出场请求',
  7 + 0xA5: '进场请求',
  8 + 0xA7: '加油请求',
  9 + 0x50: '车辆故障',
  10 + 0x70: '路阻报告',
  11 + 0x60: '事故报告',
  12 + 0x11: '扣证纠纷',
  13 + 0x12: '报警'
  14 + };
4 15  
5   - var groupBy = function(list, field) {
  16 + var groupBy = function (list, field) {
6 17 var rs = {},
7 18 key;
8   - $.each(list, function() {
  19 + $.each(list, function () {
9 20 key = this[field];
10 21 if (!rs[key])
11 22 rs[key] = [];
... ... @@ -16,10 +27,10 @@ var gb_common = (function() {
16 27 return rs;
17 28 }
18 29  
19   - var compileTempByDom = function(dom, opts) {
  30 + var compileTempByDom = function (dom, opts) {
20 31 var tps = {},
21 32 id;
22   - $('script[type="text/html"]', dom).each(function() {
  33 + $('script[type="text/html"]', dom).each(function () {
23 34 id = $(this).attr('id');
24 35 if (id)
25 36 tps[id] = template.compile($(this).html(), opts);
... ... @@ -27,46 +38,47 @@ var gb_common = (function() {
27 38 return tps;
28 39 }
29 40  
30   - var $get = function(url, data, successFun) {
  41 + var $get = function (url, data, successFun) {
31 42 $.ajax({
32 43 url: url,
33 44 data: data,
34   - complete: function(xhr, ts) {
  45 + complete: function (xhr, ts) {
35 46 ajaxComplete(xhr, ts, successFun);
36 47 }
37 48 });
38 49 }
39 50  
40   - var $post = function(url, data, successFun) {
  51 + var $post = function (url, data, successFun) {
41 52 $.ajax({
42 53 url: url,
43 54 method: 'POST',
44 55 data: data,
45   - complete: function(xhr, ts) {
  56 + complete: function (xhr, ts) {
46 57 ajaxComplete(xhr, ts, successFun);
47 58 }
48 59 });
49 60 }
50 61  
51   - var $post_arr = function(url, data, successFun) {
  62 + var $post_arr = function (url, data, successFun) {
52 63 $.ajax({
53 64 url: url,
54 65 method: 'POST',
55 66 traditional: true,
56 67 data: data,
57   - complete: function(xhr, ts) {
  68 + complete: function (xhr, ts) {
58 69 ajaxComplete(xhr, ts, successFun);
59 70 }
60 71 });
61 72 }
62 73  
63   - var $del = function(url, successFun){
64   - $post(url, {'_method': 'delete'},function(rs){
65   - successFun && successFun(rs);
66   - });
  74 + var $del = function (url, successFun) {
  75 + $post(url, {'_method': 'delete'}, function (rs) {
  76 + successFun && successFun(rs);
  77 + });
67 78 }
68 79  
69   - var errorHead='<span style="color:red;">服务器出现异常:</span>';
  80 + var errorHead = '<span style="color:red;">服务器出现异常:</span>';
  81 +
70 82 function successHandle(json, handle) {
71 83 var status = json.status;
72 84 if (status == 407) {
... ... @@ -81,7 +93,7 @@ var gb_common = (function() {
81 93 }
82 94  
83 95 if (status == 'ERROR')
84   - UIkit.modal.alert(errorHead+ (json.msg ? json.msg : '未知异常'), {labels:{Ok: '确定'}});
  96 + UIkit.modal.alert(errorHead + (json.msg ? json.msg : '未知异常'), {labels: {Ok: '确定'}});
85 97 else
86 98 handle && handle(json);
87 99 }
... ... @@ -90,11 +102,11 @@ var gb_common = (function() {
90 102 if (ts == 'success') {
91 103 successHandle(JSON.parse(xhr.responseText), succ);
92 104 } else if (ts == 'error') {
93   - UIkit.modal.alert(errorHead + xhr.responseText, {labels:{Ok: '确定'}});
  105 + UIkit.modal.alert(errorHead + xhr.responseText, {labels: {Ok: '确定'}});
94 106 }
95 107 }
96 108  
97   - var get_vals = function(json) {
  109 + var get_vals = function (json) {
98 110 var array = [];
99 111 for (var key in json) {
100 112 array.push(json[key]);
... ... @@ -103,7 +115,7 @@ var gb_common = (function() {
103 115 return array;
104 116 }
105 117  
106   - var get_keys = function(json) {
  118 + var get_keys = function (json) {
107 119 var array = [];
108 120 for (var key in json) {
109 121 array.push(key);
... ... @@ -111,29 +123,34 @@ var gb_common = (function() {
111 123 return array;
112 124 }
113 125  
114   - var get_device_tree_data = function() {
  126 + var get_device_tree_data = function (allGps, idBefore) {
  127 + if(!idBefore)
  128 + idBefore='';
115 129 var treeData = [];
116   - var data = groupBy(get_vals(gb_data_gps.allGps), 'lineId');
  130 + //var data = groupBy(get_vals(gb_data_gps.allGps), 'lineId');
  131 + var data = groupBy(get_vals(allGps), 'lineId');
117 132 var name;
118 133 for (var code in data) {
119 134 name = gb_data_basic.codeToLine[code].name;
120 135 data[name] = groupBy(data[code], 'upDown');
121 136 treeData.push({
122 137 'text': name,
123   - 'a_attr':{'type': 'line'},
  138 + 'a_attr': {'type': 'line', 'id': idBefore+'line_'+code},
124 139 'children': [{
125 140 'text': '上行',
126 141 'children': grabs(data[name][0]),
127 142 'a_attr': {
128   - 'type': 'route',
129   - 'route': code+'_0'
  143 + 'type': 'route',
  144 + 'route': code + '_0',
  145 + 'id': idBefore+'route_' + code + '_0'
130 146 }
131 147 }, {
132 148 'text': '下行',
133 149 'children': grabs(data[name][1]),
134 150 'a_attr': {
135   - 'type': 'route',
136   - 'route': code+'_1'
  151 + 'type': 'route',
  152 + 'route': code + '_1',
  153 + 'id': idBefore+'route_' + code + '_1'
137 154 }
138 155 }]
139 156 });
... ... @@ -143,7 +160,7 @@ var gb_common = (function() {
143 160 if (!array)
144 161 return;
145 162 var rs = [];
146   - $.each(array, function() {
  163 + $.each(array, function () {
147 164 rs.push({
148 165 'text': this.nbbm,
149 166 'a_attr': {
... ... @@ -160,7 +177,7 @@ var gb_common = (function() {
160 177 return treeData;
161 178 };
162 179  
163   - var lineAutocomplete = function(element) {
  180 + var lineAutocomplete = function (element) {
164 181 //construction data
165 182 var data = [],
166 183 code2Name = gb_data_basic.lineCode2NameAll(),
... ... @@ -177,42 +194,42 @@ var gb_common = (function() {
177 194 init_autocom_pinyin(element, data);
178 195 };
179 196  
180   - var personAutocomplete = function(element, personMaps) {
  197 + var personAutocomplete = function (element, personMaps) {
181 198 /*var data = [],name;
182   - for(var jobCode in personMaps){
183   - name=personMaps[jobCode];
184   - data.push({
185   - value: jobCode+'/'+name,
186   - fullChars: pinyin.getFullChars(name).toUpperCase(),
187   - camelChars: pinyin.getCamelChars(name)
188   - });
189   - }*/
  199 + for(var jobCode in personMaps){
  200 + name=personMaps[jobCode];
  201 + data.push({
  202 + value: jobCode+'/'+name,
  203 + fullChars: pinyin.getFullChars(name).toUpperCase(),
  204 + camelChars: pinyin.getCamelChars(name)
  205 + });
  206 + }*/
190 207 //init_autocom_pinyin(element, data);
191 208 init_autocom_pinyin(element, gb_data_basic.allPersonnel());
192 209 };
193 210  
194   - var carAutocomplete=function(element, list){
195   - var data = [];
196   - $.each(list, function(){
197   - data.push({value: this});
198   - });
199   - init_autocomplete(element, data);
  211 + var carAutocomplete = function (element, list) {
  212 + var data = [];
  213 + $.each(list, function () {
  214 + data.push({value: this});
  215 + });
  216 + init_autocomplete(element, data);
200 217 }
201 218  
202   - var init_autocom_pinyin=function(element, data){
  219 + var init_autocom_pinyin = function (element, data) {
203 220 // init autocomplete
204 221 var autocomplete = UIkit.autocomplete(element, {
205 222 minLength: 1,
206 223 delay: 50,
207   - source: function(release) {
  224 + source: function (release) {
208 225 var q = $('input', element).val().toUpperCase(),
209 226 rs = [],
210 227 count = 0;
211 228  
212   - $.each(data, function() {
213   - if (this.value.indexOf(q) != -1 || this.fullChars.indexOf(q) != -1 || this.camelChars.indexOf(q) != -1){
214   - rs.push(this);
215   - count++;
  229 + $.each(data, function () {
  230 + if (this.value.indexOf(q) != -1 || this.fullChars.indexOf(q) != -1 || this.camelChars.indexOf(q) != -1) {
  231 + rs.push(this);
  232 + count++;
216 233 }
217 234  
218 235 if (count >= 10)
... ... @@ -224,26 +241,26 @@ var gb_common = (function() {
224 241 });
225 242 }
226 243  
227   - var init_autocomplete=function(element, data){
228   - var autocomplete = UIkit.autocomplete(element, {
229   - minLength: 1,
230   - delay: 50,
231   - source: function(release) {
232   - var q = $('input', element).val().toUpperCase(),
233   - rs = [],
234   - count = 0;
235   -
236   - $.each(data, function() {
237   - if (this.value.indexOf(q) != -1){
238   - rs.push(this);
239   - count++;
240   - }
241   - if (count >= 10)
242   - return false;
243   - });
244   - release && release(rs);
245   - }
246   - });
  244 + var init_autocomplete = function (element, data) {
  245 + var autocomplete = UIkit.autocomplete(element, {
  246 + minLength: 1,
  247 + delay: 50,
  248 + source: function (release) {
  249 + var q = $('input', element).val().toUpperCase(),
  250 + rs = [],
  251 + count = 0;
  252 +
  253 + $.each(data, function () {
  254 + if (this.value.indexOf(q) != -1) {
  255 + rs.push(this);
  256 + count++;
  257 + }
  258 + if (count >= 10)
  259 + return false;
  260 + });
  261 + release && release(rs);
  262 + }
  263 + });
247 264 }
248 265  
249 266 // function whichTransitionEvent() {
... ...
src/main/resources/static/real_control_v2/js/data/data_gps.js
... ... @@ -12,7 +12,7 @@ var gb_data_gps = (function() {
12 12 var registerCallback = function(cb) {
13 13 if (cb)
14 14 refreshEventCallbacks.push(cb);
15   - }
  15 + };
16 16  
17 17 var refresh = function(cb) {
18 18 $.get('/gps/real/line', {
... ...
src/main/resources/static/real_control_v2/js/home/context_menu.js
... ... @@ -68,7 +68,7 @@ var gb_home_context_menu = (function() {
68 68 // show modal
69 69 var elem = show_modal(modal, dom);
70 70 //create tree
71   - var treeData = gb_common.get_device_tree_data();
  71 + var treeData = gb_common.get_device_tree_data(gb_data_gps.allGps);
72 72 var treeObj = $('.device-tree', modal).jstree({
73 73 'core': {
74 74 'data': treeData
... ...
src/main/resources/static/real_control_v2/js/north/tabs.js
... ... @@ -17,9 +17,16 @@ var gb_tabs = (function() {
17 17 $('.north-tabs').html(tabHtmlStr);
18 18 $('.main-container').html(tabContentHtmlStr);
19 19  
  20 + //地图选项卡初始点击
  21 + $('#north_tabs_map_btn').one('click', function () {
  22 + if(typeof(gb_map_overlay_mge)!="undefined"){
  23 + gb_map_overlay_mge.centerToRational();
  24 + }
  25 + });
  26 +
20 27 cb && cb();
21 28 });
22   - }
  29 + };
23 30  
24 31 //文件载入完毕
25 32 res_load_ep.emitLater('load_tab');
... ...
src/main/resources/static/real_control_v2/mapmonitor/css/real.css
... ... @@ -8,13 +8,61 @@
8 8 top: 20px;
9 9 background: red;
10 10 color: white;
11   - padding: 7px;
12   - left: calc(50% - 250px);
  11 + padding: 7px 25px 7px 7px;
  12 + right: calc(50% - 250px);
13 13 border-radius: 5px;
14 14 font-size: 20px;
15 15 cursor: pointer;
16 16 }
17 17  
  18 +.map-system-msg.flex-left a{
  19 + transition: all .3s ease;
  20 + right: 325px;
  21 + width: 45px;
  22 + height: 10px;
  23 + overflow: hidden;
  24 + left: auto;
  25 + top: 3px;
  26 + box-shadow: none;
  27 + border-radius: 5px 0 0 5px;
  28 + border: 1px solid #dedede;
  29 + border-right: none;
  30 +}
  31 +
  32 +.map-system-msg.flex-left a:before{
  33 + content: '老版本地图';
  34 + position: absolute;
  35 + width: 100%;
  36 + z-index: 2;
  37 + height: 100%;
  38 + background: #ffffff;
  39 + top: 0;
  40 + left: 0;
  41 + text-align: center;
  42 + font-size: 12px;
  43 + line-height: 24px;
  44 + color: #969696;
  45 +}
  46 +
  47 +.map-system-msg a:hover{
  48 + text-decoration: none;
  49 +}
  50 +
  51 +.map-system-msg i.uk-icon-close{
  52 + position: absolute;
  53 + top: 10px;
  54 + right: 6px;
  55 + font-size: 12px;
  56 + color: #ff0000;
  57 + background: #fcf6f6;
  58 + padding: 1px 2px;
  59 + border-radius: 10px;
  60 +}
  61 +
  62 +.map-system-msg i.uk-icon-close:hover{
  63 + color: #a75c5c;
  64 +}
  65 +
18 66 #real_map_container{
19 67 width: 100%;
20 68 height: 100%;
... ... @@ -41,7 +89,7 @@
41 89  
42 90 /**/
43 91 .real_bottom_panel{
44   - position: absolute !important;
  92 +/* position: absolute !important;
45 93 height: 180px;
46 94 width: 100%;
47 95 width: calc(100% - 342px);
... ... @@ -49,8 +97,17 @@
49 97 left: 0px !important;
50 98 background: #fff;
51 99 box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
52   - /* border-radius: 0 60px 0 0;*/
  100 + border: 1px solid #bfbcbc;*/
  101 +
  102 + position: absolute !important;
  103 + height: 180px;
  104 + bottom: 2px !important;
  105 + background: #fff;
  106 + box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
53 107 border: 1px solid #bfbcbc;
  108 + width: 240px;
  109 + right: 327px;
  110 + padding-left: 20px;
54 111 }
55 112  
56 113  
... ... @@ -90,8 +147,8 @@
90 147 */
91 148 .real_bottom_panel #handle{
92 149 width: 100%;
93   - height: 4px;
94   - top: -4px;
  150 + height: 3px;
  151 + top: -3px;
95 152 background-color: rgba(136, 137, 138, 0.49);
96 153 cursor: row-resize;
97 154 }
... ... @@ -105,13 +162,22 @@
105 162 }
106 163  
107 164 .real_bottom_panel .real_br_cont{
108   - display: inline-block;
  165 +/* display: inline-block;
109 166 width: 232px;
110 167 height: 100%;
111 168 height: calc(100% - 7px);
112 169 overflow: auto;
113 170 padding-top: 7px;
114 171 font-size: 13px;
  172 + position: relative;*/
  173 +
  174 + display: inline-block;
  175 + width: 100%;
  176 + height: 100%;
  177 + height: calc(100% - 7px);
  178 + overflow: auto;
  179 + padding-top: 7px;
  180 + font-size: 13px;
115 181 position: relative;
116 182 }
117 183  
... ...
src/main/resources/static/real_control_v2/mapmonitor/fragments/map_infowindow.html
... ... @@ -27,13 +27,6 @@
27 27 <script id="map-win-station-detail-temp" type="text/html">
28 28 <div class="gps_info_win">
29 29 <h4>{{stationName}}</h4>
30   - <p>方向:
31   - {{if directions==0}}
32   - 上行
33   - {{else if directions==1}}
34   - 下行
35   - {{/if}}
36   - </p>
37 30 <p>站点编码: {{stationCode}}</p>
38 31 <p>站点类型:
39 32 {{if stationMark=='B'}}
... ...
src/main/resources/static/real_control_v2/mapmonitor/js/config.js
... ... @@ -14,8 +14,8 @@ var gb_map_config = (function () {
14 14 carPark: false
15 15 },
16 16 abnormalPrint: {
17   - speeding: true,
18   - outBounds: true,
  17 + speeding: false,
  18 + outBounds: false,
19 19 largeMargin: false
20 20 },
21 21 carIcon: {
... ... @@ -102,6 +102,7 @@ var gb_map_config = (function () {
102 102 if (defaultConfig.traffic)
103 103 gb_map_imap.call('traffic', true);
104 104 }, 1000);
  105 + gb_map_overlay_mge.centerToRational();
105 106 });
106 107 }
107 108  
... ...
src/main/resources/static/real_control_v2/mapmonitor/js/gps_tree.js
1 1 var gb_map_gps_tree = (function () {
2 2  
  3 + var idBefore = 'map_tree_';
  4 + var _devices;
3 5  
4 6 var treeObj;
5   -
6 7 var jstreeChanged = function (e, node, event) {
7 8 gb_map_overlay_mge.refresh();
8 9 };
9 10  
10 11 var init = function (cb) {
  12 + var allGps = gb_data_gps.allGps;
  13 + _devices = gb_common.get_keys(allGps);
11 14 //设备树
12   - var treeData = gb_common.get_device_tree_data();
  15 + var treeData = gb_common.get_device_tree_data(allGps, idBefore);
13 16 treeObj = $('.real_right_gps_panel .gps_tree_list')
14   - //节点初始化完成
  17 + //节点初始化完成
15 18 .on('ready.jstree', function () {
16 19 treeObj.jstree(true).open_all();
17 20 //删掉tree node a标签的 href值(避免鼠标悬停浏览器出现状态条)
... ... @@ -26,14 +29,15 @@ var gb_map_gps_tree = (function () {
26 29 .on('activate_node.jstree', function (e, n) {
27 30 //console.log('activate_node.jstree', e, n);
28 31 var node = n.node;
29   - if(node.a_attr && node.a_attr.type=='device' && node.state.checked){
  32 + if (node.a_attr && node.a_attr.type == 'device' && node.state.checked) {
30 33 var device = node.a_attr.device;
31 34 gb_map_overlay_mge._focus(device);
32 35 }
33 36 })
34 37 .jstree({
35 38 'core': {
36   - 'data': treeData
  39 + 'data': treeData,
  40 + 'check_callback': true
37 41 },
38 42 'checkbox': {
39 43 'keep_selected_style': false,
... ... @@ -57,17 +61,105 @@ var gb_map_gps_tree = (function () {
57 61 }
58 62 },
59 63 //local storage里的key
60   - 'state':{
  64 + 'state': {
61 65 'key': 'jstree_map_devices'
62 66 },
63 67 'plugins': ['checkbox', 'contextmenu', 'state']
64 68 });
65 69 };
66 70  
  71 + //創建新節點
  72 + var create_node = function (array, create_end_cb) {
  73 + if (!isArray(array))
  74 + array = [array];
  75 +
  76 + var jstreeInts = treeObj.jstree(true);
  77 + var len = array.length, i = 0;
  78 + (function () {
  79 + var f = arguments.callee;
  80 + if (i >= len) {
  81 + create_end_cb && create_end_cb();
  82 + return;
  83 + }
  84 +
  85 + var gps = array[i],
  86 + pId = idBefore + 'route_' + gps.lineId + '_' + gps.upDown;
  87 + //上下行节点
  88 + var routeNode = jstreeInts.get_node(pId);
  89 + if (!routeNode) {
  90 + //父节点不存在
  91 + create_route_node(gps.lineId, function () {
  92 + //重新获取上下行节点
  93 + routeNode = jstreeInts.get_node(pId);
  94 + appendDeviceNode(routeNode, gps, function () {
  95 + _devices.push(gps.deviceId);
  96 + i++;
  97 + f();
  98 + });
  99 + });
  100 + }
  101 + else {
  102 + appendDeviceNode(routeNode, gps, function () {
  103 + _devices.push(gps.deviceId);
  104 + i++;
  105 + f();
  106 + });
  107 + }
  108 + })();
  109 + }
  110 +
  111 + //创建线路和上下行节点
  112 + var create_route_node = function (lineCode, cb) {
  113 + var lineName = gb_data_basic.codeToLine[lineCode].name;
  114 + var id = treeObj.jstree(true).create_node('#', {
  115 + 'text': lineName,
  116 + 'a_attr': {'type': 'line', 'id': idBefore + 'line_' + lineCode},
  117 + 'state': {'opened': true},
  118 + 'children': [{
  119 + 'text': '上行',
  120 + 'a_attr': {
  121 + 'type': 'route',
  122 + 'route': lineCode + '_0',
  123 + 'id': idBefore + 'route_' + lineCode + '_0',
  124 + 'state': {'opened': true}
  125 + }
  126 + }, {
  127 + 'text': '下行',
  128 + 'a_attr': {
  129 + 'type': 'route',
  130 + 'route': lineCode + '_1',
  131 + 'id': idBefore + 'route_' + lineCode + '_1',
  132 + 'state': {'opened': true}
  133 + }
  134 + }]
  135 + }, 'last', cb);
  136 + }
  137 +
  138 + var appendDeviceNode = function (routeNode, gps, cb) {
  139 + if (!routeNode) {
  140 + return;
  141 + }
  142 +
  143 + //添加車輛節點
  144 + treeObj.jstree(true).create_node(routeNode, {
  145 + 'text': gps.nbbm,
  146 + 'a_attr': {
  147 + 'type': 'device',
  148 + 'device': gps.deviceId
  149 + },
  150 + 'data': {lineId: gps.lineId, upDown: gps.upDown},
  151 + 'icon': 'uk-icon-bus'
  152 + }, 'last', cb);
  153 + }
  154 +
67 155 return {
68 156 init: init,
69 157 getChecked: function () {
70 158 return treeObj.jstree(true).get_checked(true);
71   - }
  159 + },
  160 + all_devices: function () {
  161 + return _devices;
  162 + },
  163 + create_node: create_node
72 164 };
73 165 })();
74 166 \ No newline at end of file
... ...
src/main/resources/static/real_control_v2/mapmonitor/js/map/platform/baidu.js
... ... @@ -88,7 +88,7 @@ var gb_map_baidu = (function(){
88 88 map.addOverlay(polyline);
89 89  
90 90 //延迟居中,避免多次调用时抖动
91   - delayToCenter(pos[parseInt(pos.length / 2)]);
  91 + //delayToCenter(pos[parseInt(pos.length / 2)]);
92 92 //map.panTo(pos[parseInt(pos.length / 2)]);
93 93 },
94 94 traffic: function (enable) {
... ... @@ -110,8 +110,7 @@ var gb_map_baidu = (function(){
110 110 //定位到线路中间点
111 111 centerToLine: function (opt) {
112 112 var pos=polylines[opt.id].getPath();
113   - console.log('定位到中心,,,', pos[parseInt(pos.length / 2)]);
114   - map.setCenter(pos[parseInt(pos.length / 2)]);
  113 + delayToCenter(pos[parseInt(pos.length / 2)]);
115 114 },
116 115 //绘制GPS信号
117 116 drawRealGpsMarker: function(opts){
... ... @@ -134,6 +133,12 @@ var gb_map_baidu = (function(){
134 133 map.addOverlay(marker);
135 134 //设备号和marker映射
136 135 realMarkers[gps.deviceId] = marker;
  136 + /*//新上线的设备,默认隐藏
  137 + if(gps.newNodeHide){
  138 + marker.hide();
  139 + gps.newNodeHide=null;
  140 + delete gps.newNodeHide;
  141 + }*/
137 142 }
138 143 }
139 144 });
... ... @@ -186,7 +191,6 @@ var gb_map_baidu = (function(){
186 191 //info window
187 192 polygon.infoWin = new BMap.InfoWindow(gb_map_overlay_mge.map_carpark_win_temp(this), {});
188 193 polygon.addEventListener('click', function(){
189   - console.log('aaa', this);
190 194 map.openInfoWindow(this.infoWin, this._centerPoint);
191 195 });
192 196 });
... ... @@ -291,18 +295,6 @@ var gb_map_baidu = (function(){
291 295 var polygon = new BMap.Polygon(station.bdPoints, {strokeColor: opt.color, strokeWeight: opt.weight});
292 296 map.addOverlay(polygon);
293 297 electronicFences[code]=polygon;
294   -
295   -/*
296   - //计算多边形面积
297   - var area=BMapLib.GeoUtils.getPolygonArea(polygon);
298   - if(!isNaN(area))
299   - polygon._polygonArea=area+'米';
300   - else
301   - polygon._polygonArea='计算失败';
302   -
303   - polygon.addEventListener('click', function(){
304   - map.openInfoWindow(this.infoWin, marker.point);
305   - });*/
306 298 },
307 299 //删除缓冲区
308 300 clearBuffArea: function(code){
... ... @@ -407,15 +399,12 @@ var gb_map_baidu = (function(){
407 399 return marker;
408 400 }
409 401  
410   - //为每个数字定义宽度
411   -/* var icon_num_width=[
412   - 7,6,7,7,7,7,7,7,7,7
413   - ];*/
  402 +
414 403 function calcGpsMarkerWidth(nbbm) {
415 404 var width=0;
416 405 $.each(nbbm.split(''), function () {
417 406 if(!isNaN(this))
418   - width += 7;//icon_num_width[this];
  407 + width += 7;
419 408 else if(this=='-')
420 409 width += 10;
421 410 else
... ... @@ -428,7 +417,7 @@ var gb_map_baidu = (function(){
428 417 var point = new BMap.Point(statio.bd_lon, statio.bd_lat);
429 418 var marker = new BMap.Marker(point);
430 419  
431   - //根据编码长度 计算marker 宽度
  420 + //根据站点名称 计算marker 宽度
432 421 var w = statio.stationName.length * 12 + 4
433 422 ,iw=w-2;
434 423 var icon = new BMap.Icon(gb_map_imap.createStationIcon(statio, w), new BMap.Size(iw,24), {anchor: new BMap.Size(iw/2,24)})
... ... @@ -450,34 +439,6 @@ var gb_map_baidu = (function(){
450 439 return marker;
451 440 }
452 441  
453   - //隐藏线路线条
454   -/* function hideLinePolyline(){
455   - if(!linePolyline || linePolyline.length == 0)
456   - return;
457   -
458   - layer.msg('隐藏线路图层',{offset: 'ct', shift : 5});
459   - $.each(linePolyline, function(){
460   - this.setStrokeOpacity(0.1);
461   - });
462   - }
463   -
464   - //显示线路线条
465   - function showLinePolyline(){
466   - if(!linePolyline || linePolyline.length == 0)
467   - return;
468   -
469   - layer.msg('显示线路图层',{offset: 'ct', shift : 5});
470   - $.each(linePolyline, function(){
471   - this.setStrokeOpacity(0.5);
472   - });
473   - }*/
474   -
475   -/* function refreshStation() {
476   - //console.log('refreshStation', map.getZoom());
477   - var zoom=map.getZoom();
478   -
479   - }*/
480   -
481 442 function moveMarker(m, gps){
482 443 m.setPosition(new BMap.Point(gps.bd_lon, gps.bd_lat));
483 444 m.gpsData = gps;
... ...
src/main/resources/static/real_control_v2/mapmonitor/js/map/platform/gaode.js
... ... @@ -13,13 +13,16 @@ var gb_map_gaode = (function() {
13 13 + '<div class="sk-cube sk-cube9"></div>' + '</div>';
14 14  
15 15 var map;
16   - var topMarkr;
  16 + //var topMarkr;
17 17 var realMarkers = {};
18 18 //线路路由线条
19 19 var polylines={};
  20 + var stationMarkers={};
  21 + var electronicFences={};
  22 + var carparks={};
20 23 //实时路况是否显示
21   - var traffVisible;
22   - var trafficLayer;
  24 + //var traffVisible;
  25 + //var trafficLayer;
23 26 var gaodeInstance = {
24 27 init : function(cb) {
25 28 var $mapCon = $(gb_map_consts.mapContainer);
... ... @@ -78,12 +81,7 @@ var gb_map_gaode = (function() {
78 81 realMarkers = {};
79 82 polylines={};
80 83 map.clearMap();
81   - }
82   - /*clear: function(){
83   - realMarkers = {};
84   - map.clearMap();
85   - linePolyline = [];
86   - }*/,
  84 + },
87 85 drawLine: function(opt){
88 86 //linePolyline = [];
89 87 var pos = [], temps;
... ... @@ -102,9 +100,11 @@ var gb_map_gaode = (function() {
102 100 polyline.hide();
103 101  
104 102 polyline.setMap(map);
105   -
  103 + },
  104 + //定位到线路中间点
  105 + centerToLine: function (opt) {
  106 + var pos=polylines[opt.id].getPath();
106 107 map.setCenter(pos[parseInt(pos.length / 2)]);
107   -
108 108 },
109 109 //根据id 显示polyline
110 110 refreshPolyline: function (opt) {
... ... @@ -116,6 +116,131 @@ var gb_map_gaode = (function() {
116 116 polylines[id].hide();
117 117 }
118 118 },
  119 + drawStationMarker: function (opt) {
  120 + this.hideAllStationMarker();
  121 +
  122 + var array=opt.list, marker;
  123 + $.each(array, function () {
  124 + if(stationMarkers[this.stationCode]){
  125 + stationMarkers[this.stationCode].show();
  126 + return true;
  127 + }
  128 +
  129 + transCoord(this);
  130 + marker=createStationMark(this);
  131 + stationMarkers[this.stationCode]=marker;
  132 + });
  133 + },
  134 + hideAllStationMarker: function () {
  135 + for(var code in stationMarkers){
  136 + stationMarkers[code].hide();
  137 + }
  138 + },
  139 + //绘制圆形
  140 + drawCircle: function(opt){
  141 + if(electronicFences[opt.id]){
  142 + electronicFences[opt.id].show();
  143 + return;
  144 + }
  145 +
  146 + var coord = TransGPS.transformFromWGSToGCJ(opt.lat, opt.lon);
  147 +
  148 + var circle = new AMap.Circle({
  149 + center: [coord.lng, coord.lat],// 圆心位置
  150 + radius: opt.radius, //半径
  151 + strokeColor: opt.color, //线颜色
  152 + strokeWeight: opt.weight, //线粗细度
  153 + fillColor: '#fff', //填充颜色
  154 + fillOpacity: 0.5
  155 + });
  156 + circle.setMap(map);
  157 + electronicFences[opt.id] = circle;
  158 + },
  159 + //绘制多边形
  160 + drawPolygon: function(opt){
  161 + var station = opt.station
  162 + ,code = station.stationCode;
  163 + if(electronicFences[code]){
  164 + electronicFences[code].show();
  165 + return;
  166 + }
  167 +
  168 + transMultiWGSToGCJ(station);
  169 + var polygon=new AMap.Polygon({
  170 + map: map,
  171 + path: station.gcjPoints,
  172 + strokeColor: opt.color,
  173 + strokeWeight: opt.weight,
  174 + fillColor: '#fff',
  175 + fillOpacity: 0.5
  176 + });
  177 +
  178 + electronicFences[code]=polygon;
  179 + },
  180 + //绘制停车场
  181 + drawCarpark: function (opt) {
  182 + var list = opt.list;
  183 + var config = gb_map_config.getConfig()
  184 + ,color = config.section.color.up;
  185 +
  186 + this.hideDrawCarpark();
  187 + $.each(list, function () {
  188 + if(carparks[this.parkCode]){
  189 + carparks[this.parkCode].show();
  190 + return true;
  191 + }
  192 +
  193 + transMultiWGSToGCJ(this);
  194 + var polygon=new AMap.Polygon({
  195 + map: map,
  196 + path: this.gcjPoints,
  197 + strokeColor: color,
  198 + strokeWeight: 1,
  199 + fillColor: '#fff',
  200 + fillOpacity: 0.5
  201 + });
  202 + carparks[this.parkCode]=polygon;
  203 + //中心点
  204 + var ts = this.gCenterPoint.split(' ')
  205 + ,coord = TransGPS.transformFromWGSToGCJ(parseFloat(ts[1]), parseFloat(ts[0]));
  206 + polygon._centerPoint = [coord.lng, coord.lat];
  207 + //info window
  208 + polygon.infoWin = new AMap.InfoWindow({
  209 + content: gb_map_overlay_mge.map_carpark_win_temp(this),
  210 + size: new AMap.Size(228, 146)
  211 + });
  212 + polygon.on('click', function () {
  213 + this.infoWin.open(map, this._centerPoint);
  214 + });
  215 + });
  216 + },
  217 + //隐藏停车场
  218 + hideDrawCarpark: function () {
  219 + for(var code in carparks){
  220 + carparks[code].hide();
  221 + }
  222 + },
  223 + hideAllCircles: function () {
  224 + for(var code in electronicFences){
  225 + electronicFences[code].hide();
  226 + }
  227 + },
  228 + //定位到站点
  229 + goToStation: function (stationCode) {
  230 + var m = stationMarkers[stationCode];
  231 + if(m){
  232 + map.setCenter(m.getPosition());
  233 + m.infoWindow.open(map, m.getPosition());
  234 + }
  235 + },
  236 + //定位到停车场
  237 + goToCarpark: function (parkCode) {
  238 + var polygon = carparks[parkCode];
  239 + if(polygon){
  240 + map.setCenter(polygon._centerPoint);
  241 + polygon.infoWin.open(map, polygon._centerPoint);
  242 + }
  243 + },
119 244 drawRealGpsMarker: function(opts){
120 245 gpsArray = opts.gpsList;
121 246 var coord;
... ... @@ -136,45 +261,7 @@ var gb_map_gaode = (function() {
136 261 realMarkers[gps.deviceId] = marker
137 262 }
138 263 }
139   -
140   - /*coord = TransGPS.transformFromWGSToGCJ(gps.lat, gps.lon);
141   - gps.gcj_lat = coord.lat;
142   - gps.gcj_lon = coord.lng;
143   -
144   - marker = realMarkers[gps.deviceId];
145   - if(marker){
146   - if(gps.timestamp == marker.gpsData.timestamp)
147   - return;
148   - else
149   - moveMarker(marker, gps);//移动marker
150   - }
151   - else{
152   - var marker = createGDMarkerByGps(gps);
153   - realMarkers[gps.deviceId] = marker
154   - }*/
155 264 });
156   -
157   - /*var gpsArray = opts.gpsList;
158   - var coord;
159   - $.each(gpsArray, function(i, gps){
160   - if(opts.coordTransform){
161   - coord = TransGPS.transformFromWGSToGCJ(gps.lat, gps.lon);
162   - gps.gcj_lat = coord.lat;
163   - gps.gcj_lon = coord.lng;
164   - }
165   -
166   - marker = realMarkers[gps.deviceId];
167   - if(marker){
168   - if(gps.timestamp == marker.gpsData.timestamp)
169   - return;
170   - else
171   - moveMarker(marker, gps);//移动marker
172   - }
173   - else{
174   - var marker = createGDMarkerByGps(gps);
175   - realMarkers[gps.deviceId] = marker
176   - }
177   - });*/
178 265 },
179 266 showGpsMarker: function (opt) {
180 267 var chs = opt.chs;
... ... @@ -190,7 +277,7 @@ var gb_map_gaode = (function() {
190 277 ,m = realMarkers[deviceId];
191 278 if(m){
192 279 map.setCenter(m.getPosition());
193   - setTop(m);
  280 + //setTop(m);
194 281 }
195 282 },
196 283 openWindow: function(opts){
... ... @@ -208,7 +295,7 @@ var gb_map_gaode = (function() {
208 295  
209 296 function createGDMarkerByGps(gps){
210 297 //根据编码长度 计算marker 宽度
211   - var w = gps.nbbm.length * 10;
  298 + var w = calcGpsMarkerWidth(gps.nbbm);
212 299  
213 300 var marker = new AMap.Marker({
214 301 map: map,
... ... @@ -217,15 +304,20 @@ var gb_map_gaode = (function() {
217 304 size: new AMap.Size(w, 25), //图标大小
218 305 image: gb_map_imap.createCarIcon(gps, w)
219 306 }),
220   - offset: new AMap.Pixel(-35, -12)
  307 + offset: new AMap.Pixel(-(w/2), -12)
221 308 });
222 309  
  310 + marker._icon_width=w;
223 311 //绑定数据
224 312 marker.gpsData = gps;
225 313 marker.infoWindow = new AMap.InfoWindow();
226 314  
  315 + marker.setzIndex(2);
227 316 marker.on('mouseover', function(){
228   - setTop(this);
  317 + this.setzIndex(3);
  318 + });
  319 + marker.on('mouseout', function () {
  320 + this.setzIndex(2);
229 321 });
230 322 //点击事件
231 323 marker.on('click', function(){
... ... @@ -235,12 +327,49 @@ var gb_map_gaode = (function() {
235 327 return marker;
236 328 }
237 329  
  330 + //创建站点marker
  331 + function createStationMark(statio) {
  332 + //根据编码长度 计算marker 宽度
  333 + var w = statio.stationName.length * 12 + 4;
  334 +
  335 + var marker = new AMap.Marker({
  336 + map: map,
  337 + position: [statio.gcj_lon, statio.gcj_lat],
  338 + icon: new AMap.Icon({
  339 + size: new AMap.Size(w, 24), //图标大小
  340 + image: gb_map_imap.createStationIcon(statio, w)
  341 + }),
  342 + offset: new AMap.Pixel(-(w/2), -24)
  343 + });
  344 +
  345 + //信息窗口
  346 + marker.infoWindow = new AMap.InfoWindow({
  347 + content:gb_map_overlay_mge.map_station_win_temp(statio),
  348 + size: new AMap.Size(178, 240)
  349 + });
  350 +
  351 + //mouseover
  352 + marker.setzIndex(1);
  353 + marker.on('mouseover', function(){
  354 + this.setzIndex(3);
  355 + });
  356 + marker.on('mouseout', function () {
  357 + this.setzIndex(1);
  358 + });
  359 +
  360 + //点击事件
  361 + marker.on('click', function(){
  362 + this.infoWindow.open(map, this.getPosition());
  363 + });
  364 + return marker;
  365 + }
  366 +
238 367 function moveMarker(m, gps){
239 368 m.setPosition(new AMap.LngLat(gps.gcj_lon, gps.gcj_lat));
240 369 m.gpsData = gps;
  370 +
241 371 //重新设置icon
242   - //根据编码长度 计算marker 宽度
243   - var w = gps.nbbm.length * 10;
  372 + var w = m._icon_width;
244 373 m.setIcon(new AMap.Icon({
245 374 size: new AMap.Size(w, 25),
246 375 image: gb_map_imap.createCarIcon(gps, w)
... ... @@ -250,26 +379,31 @@ var gb_map_gaode = (function() {
250 379 openWindow(m);
251 380 }
252 381  
253   -/* //隐藏线路线条
254   - function hideLinePolyline(){
255   - if(!linePolyline || linePolyline.length == 0)
256   - return;
257   - layer.msg('隐藏线路图层',{offset: 'ct', shift : 5});
258   - $.each(linePolyline, function(){
259   - this.setOptions({strokeOpacity: 0});
  382 + function calcGpsMarkerWidth(nbbm) {
  383 + var width=0;
  384 + $.each(nbbm.split(''), function () {
  385 + if(!isNaN(this))
  386 + width += 7;//icon_num_width[this];
  387 + else if(this=='-')
  388 + width += 10;
  389 + else
  390 + width += 16;
260 391 });
261   - }*/
262   -
263   -/* //显示线路线条
264   - function showLinePolyline(){
265   - if(!linePolyline || linePolyline.length == 0)
  392 + return width;
  393 + }
  394 +
  395 + function transMultiWGSToGCJ(obj) {
  396 + if(!obj._gPoints)
266 397 return;
  398 + var gcjPoints=[],coord;
267 399  
268   - layer.msg('显示线路图层',{offset: 'ct', shift : 5});
269   - $.each(linePolyline, function(){
270   - this.setOptions({strokeOpacity: 0.5});
  400 + $.each(obj._gPoints, function () {
  401 + coord = TransGPS.transformFromWGSToGCJ(this.lat, this.lng);
  402 + gcjPoints.push([coord.lng, coord.lat]);
271 403 });
272   - }*/
  404 +
  405 + obj.gcjPoints=gcjPoints;
  406 + }
273 407  
274 408 function openWindow(marker){
275 409 var gps = marker.gpsData;
... ... @@ -282,12 +416,12 @@ var gb_map_gaode = (function() {
282 416 marker.infoWindow.open(map, marker.getPosition());
283 417 }
284 418  
285   - function setTop(marker){
  419 +/* function setTop(marker, index){
286 420 if(topMarkr)
287 421 topMarkr.setzIndex(1);
288 422 marker.setzIndex(2);
289 423 topMarkr = marker;
290   - }
  424 + }*/
291 425  
292 426 //文件载入完毕
293 427 mapmonitor_load_ep.emitLater('load_gaode');
... ...
src/main/resources/static/real_control_v2/mapmonitor/js/map_overlay_manager.js
... ... @@ -17,7 +17,19 @@ var gb_map_overlay_mge = (function () {
17 17 };
18 18  
19 19 var gpsRefreshAll = function (allList) {
  20 + //是否需要添加樹節點
  21 + var newTreeNodes=[], currArray=gb_map_gps_tree.all_devices();
  22 + $.each(allList, function () {
  23 + if(currArray.indexOf(this.deviceId) == -1)
  24 + newTreeNodes.push(this);
  25 + });
  26 +
20 27 gb_map_imap.call('drawRealGpsMarker', {gpsList: allList});
  28 +
  29 + //有新设备上线
  30 + if(newTreeNodes.length > 0){
  31 + gb_map_gps_tree.create_node(newTreeNodes, showOverlayByChecks);
  32 + }
21 33 };
22 34  
23 35 var deviceFilter = function (node) {
... ... @@ -85,6 +97,9 @@ var gb_map_overlay_mge = (function () {
85 97 reDraw();
86 98 //注册GPS刷新事件
87 99 gb_data_gps.registerCallback(gpsRefresh);
  100 +
  101 +
  102 + centerToRational();
88 103 };
89 104  
90 105  
... ... @@ -185,6 +200,15 @@ var gb_map_overlay_mge = (function () {
185 200  
186 201 gb_map_imap.call('drawPolygon', opt);
187 202 }
  203 +
  204 + //地图居中至合理的位置
  205 + var centerToRational=function () {
  206 + var chs=gb_map_gps_tree.getChecked();
  207 + if(chs && chs.length > 0){
  208 + var id=chs[0].data.lineId+'_'+chs[0].data.upDown;
  209 + gb_map_imap.call('centerToLine', {id: id});
  210 + }
  211 + }
188 212  
189 213 return {
190 214 init: init,
... ... @@ -205,6 +229,7 @@ var gb_map_overlay_mge = (function () {
205 229 getCheckedDevice: getCheckedDevice,
206 230 drawStation: drawStation,
207 231 drawElectronicFence: drawElectronicFence,
208   - drawCarpark: drawCarpark
  232 + drawCarpark: drawCarpark,
  233 + centerToRational:centerToRational
209 234 };
210 235 })();
211 236 \ No newline at end of file
... ...
src/main/resources/static/real_control_v2/mapmonitor/real.html
... ... @@ -5,8 +5,19 @@
5 5 <link rel="stylesheet" href="/real_control_v2/mapmonitor/css/real.css"/>
6 6  
7 7 <div class="map-system-msg">
8   - <a class="z-depth-2" href="/pages/mapmonitor/alone/wrap.html" target="_blank"><i style="transform: rotate(90deg);" class="uk-icon-hand-pointer-o"></i> 当前地图模块正在维护升级中,请点这里打开原版地图。</a>
  8 + <a class="z-depth-2" href="/pages/mapmonitor/alone/wrap.html" target="_blank">
  9 + 当前地图模块正在维护升级中,请点这里打开原版地图
  10 +
  11 + <i class="uk-icon-close map-system-msg-close"></i>
  12 + </a>
9 13 </div>
  14 +<script>
  15 + $('.map-system-msg-close').on('click', function (e) {
  16 + e.stopPropagation();
  17 + $('.map-system-msg').addClass('flex-left');
  18 + return false;
  19 + });
  20 +</script>
10 21  
11 22 <div id="real_map_container"></div>
12 23 <div class="real_right_gps_panel">
... ... @@ -22,9 +33,6 @@
22 33  
23 34 <div class="real_bottom_panel">
24 35 <div id="handle" class="ui-resizable-handle ui-resizable-n"></div>
25   - <div class="real_bl_cont">
26   -
27   - </div>
28 36 <div class="real_br_cont map_config_wrap"></div>
29 37 </div>
30 38  
... ...