Commit 24e0b591148b1d3734f847a1f204f0a7a71fd00f

Authored by 潘钊
1 parent 9977b66b

update...

src/main/java/com/bsth/data/gpsdata/arrival/handlers/InOutStationSignalHandle.java
@@ -253,20 +253,22 @@ public class InOutStationSignalHandle extends SignalHandle{ @@ -253,20 +253,22 @@ public class InOutStationSignalHandle extends SignalHandle{
253 //已完成班次数 253 //已完成班次数
254 int doneSum = dayOfSchedule.doneSum(sch.getClZbh()); 254 int doneSum = dayOfSchedule.doneSum(sch.getClZbh());
255 ScheduleRealInfo next = dayOfSchedule.next(sch); 255 ScheduleRealInfo next = dayOfSchedule.next(sch);
256 - //通知客户端  
257 - sendUtils.sendZdsj(sch, next, doneSum);  
258 //持久化 256 //持久化
259 dayOfSchedule.save(sch); 257 dayOfSchedule.save(sch);
260 258
261 - //准备执行下一个班次  
262 - if (next != null) { 259 + if(next != null){
263 next.setQdzArrDatesj(sch.getZdsjActual()); 260 next.setQdzArrDatesj(sch.getZdsjActual());
264 dayOfSchedule.addExecPlan(next); 261 dayOfSchedule.addExecPlan(next);
265 //进站既进场 262 //进站既进场
266 inStationAndInPark(sch, next); 263 inStationAndInPark(sch, next);
  264 + }
  265 + //通知客户端
  266 + sendUtils.sendZdsj(sch, next, doneSum);
  267 +
  268 + //准备执行下一个班次
  269 + if (next != null) {
267 //将gps转换为下一个班次走向的站内信号 270 //将gps转换为下一个班次走向的站内信号
268 transformUpdown(gps, next); 271 transformUpdown(gps, next);
269 -  
270 //下发调度指令 272 //下发调度指令
271 directiveService.send60Dispatch(next, doneSum, "到站@系统"); 273 directiveService.send60Dispatch(next, doneSum, "到站@系统");
272 274
src/main/java/com/bsth/data/schedule/DayOfSchedule.java
@@ -11,7 +11,10 @@ import com.bsth.data.directive.DirectivesPstThread; @@ -11,7 +11,10 @@ import com.bsth.data.directive.DirectivesPstThread;
11 import com.bsth.data.gpsdata.GpsRealData; 11 import com.bsth.data.gpsdata.GpsRealData;
12 import com.bsth.data.gpsdata.recovery.GpsDataRecovery; 12 import com.bsth.data.gpsdata.recovery.GpsDataRecovery;
13 import com.bsth.data.schedule.late_adjust.ScheduleLateThread; 13 import com.bsth.data.schedule.late_adjust.ScheduleLateThread;
14 -import com.bsth.data.schedule.thread.*; 14 +import com.bsth.data.schedule.thread.CalcOilThread;
  15 +import com.bsth.data.schedule.thread.SchedulePstThread;
  16 +import com.bsth.data.schedule.thread.ScheduleRefreshThread;
  17 +import com.bsth.data.schedule.thread.SubmitToTrafficManage;
15 import com.bsth.entity.realcontrol.LineConfig; 18 import com.bsth.entity.realcontrol.LineConfig;
16 import com.bsth.entity.realcontrol.ScheduleRealInfo; 19 import com.bsth.entity.realcontrol.ScheduleRealInfo;
17 import com.bsth.entity.schedule.SchedulePlanInfo; 20 import com.bsth.entity.schedule.SchedulePlanInfo;
@@ -146,7 +149,7 @@ public class DayOfSchedule implements CommandLineRunner { @@ -146,7 +149,7 @@ public class DayOfSchedule implements CommandLineRunner {
146 //入库 149 //入库
147 // Application.mainServices.scheduleWithFixedDelay(schedulePstThread, 60, 30, TimeUnit.SECONDS); 150 // Application.mainServices.scheduleWithFixedDelay(schedulePstThread, 60, 30, TimeUnit.SECONDS);
148 //班次误点扫描 151 //班次误点扫描
149 -// Application.mainServices.scheduleWithFixedDelay(scheduleLateThread, 60, 60, TimeUnit.SECONDS); 152 +// Application.mainServices.scheduleWithFixedDelay(scheduleLateThread, 60, 30, TimeUnit.SECONDS);
150 153
151 //每天凌晨2点20提交数据到运管处 154 //每天凌晨2点20提交数据到运管处
152 long diff = (DateUtils.getTimestamp() + 1000 * 60 * 140) - System.currentTimeMillis(); 155 long diff = (DateUtils.getTimestamp() + 1000 * 60 * 140) - System.currentTimeMillis();
src/main/java/com/bsth/data/schedule/late_adjust/LateAdjustHandle.java
@@ -116,17 +116,20 @@ public class LateAdjustHandle implements ApplicationContextAware{ @@ -116,17 +116,20 @@ public class LateAdjustHandle implements ApplicationContextAware{
116 return; 116 return;
117 117
118 //进的是班次起点 118 //进的是班次起点
119 - if(gps.getStopNo().equals(sch.getQdzCode()) 119 + if(gps.getStationName().equals(sch.getQdzName())
120 && sch.getLateMinute() > 0){ 120 && sch.getLateMinute() > 0){
121 //自动调整待发 到达时间 + 停靠时间 121 //自动调整待发 到达时间 + 停靠时间
122 - long dt = gps.getTimestamp() + (Long.parseLong(String.valueOf(sch.getLateMinute() * 60 * 1000))); 122 + long dt = (long) (gps.getTimestamp() + (sch.getLateMinute() * 60 * 1000));
123 sch.setDfsjAll(dt); 123 sch.setDfsjAll(dt);
124 sch.setDfAuto(true); 124 sch.setDfAuto(true);
  125 + //取消应发未到标记
  126 + sch.setLate2(false);
125 127
126 lateSchMap.remove(sch.getClZbh()); 128 lateSchMap.remove(sch.getClZbh());
127 logger.info("【应发未到】车辆到站 " + sch.getClZbh() + " -" + sch.getDfsj() + " -到站时间:" + gps.getTimestamp() + " -停靠时间:" + sch.getLateMinute() + " -自动设置的待发时间:" + dt); 129 logger.info("【应发未到】车辆到站 " + sch.getClZbh() + " -" + sch.getDfsj() + " -到站时间:" + gps.getTimestamp() + " -停靠时间:" + sch.getLateMinute() + " -自动设置的待发时间:" + dt);
128 } 130 }
129 }catch (Exception e){ 131 }catch (Exception e){
  132 + e.printStackTrace();
130 logger.error("", e); 133 logger.error("", e);
131 } 134 }
132 } 135 }
src/main/java/com/bsth/data/schedule/late_adjust/ScheduleLateThread.java
@@ -44,11 +44,14 @@ public class ScheduleLateThread extends Thread{ @@ -44,11 +44,14 @@ public class ScheduleLateThread extends Thread{
44 ScheduleRealInfo sch; 44 ScheduleRealInfo sch;
45 for(int i = 0; i < size; i ++){ 45 for(int i = 0; i < size; i ++){
46 sch = all.get(i); 46 sch = all.get(i);
47 - if(sch.getDfsjT() > t || sch.isLate()) 47 + if(sch.getDfsjT() > t)
48 break; 48 break;
49 49
  50 + if(sch.isLate())
  51 + continue;
  52 +
50 if(sch.getStatus() == 0 53 if(sch.getStatus() == 0
51 - && sch.getFcsjActual() == null){ 54 + && StringUtils.isEmpty(sch.getFcsjActual())){
52 55
53 //检查应发未到 当前班次无起点到达时间 56 //检查应发未到 当前班次无起点到达时间
54 if(StringUtils.isEmpty(sch.getQdzArrDateSJ())){ 57 if(StringUtils.isEmpty(sch.getQdzArrDateSJ())){
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
@@ -1049,6 +1049,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -1049,6 +1049,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1049 ScheduleRealInfo next = dayOfSchedule.next(sch); 1049 ScheduleRealInfo next = dayOfSchedule.next(sch);
1050 if (null != next) { 1050 if (null != next) {
1051 next.setQdzArrDateSJ(zdsjActual); 1051 next.setQdzArrDateSJ(zdsjActual);
  1052 + next.setLate2(false);
1052 ts.add(next); 1053 ts.add(next);
1053 } 1054 }
1054 1055
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task/add_sub_task_range_turn.html
@@ -27,8 +27,11 @@ @@ -27,8 +27,11 @@
27 </div> 27 </div>
28 </div> 28 </div>
29 </div> 29 </div>
30 - <div class="uk-width-2-4" style="padding-left: 28px;">  
31 - <h6 style="color: #a7a5a5;margin-top: 35px;"><i class="uk-icon-question-circle"> </i> 30 + <div class="uk-width-2-4" style="padding: 20px 0 0 28px;">
  31 + <label>
  32 + <input type="checkbox" id="emptyTurnCbox"> 调头后空驶回起点
  33 + </label>
  34 + <h6 style="color: #a7a5a5;margin-top: 0;"><i class="uk-icon-question-circle"> </i>
32 如果“调头站点”在另一个走向不存在,你需要手动选择第二个营运起点</h6> 35 如果“调头站点”在另一个走向不存在,你需要手动选择第二个营运起点</h6>
33 </div> 36 </div>
34 </div> 37 </div>
@@ -178,7 +181,7 @@ @@ -178,7 +181,7 @@
178 </div> 181 </div>
179 </div> 182 </div>
180 <div class="uk-width-7-10 pl5"> 183 <div class="uk-width-7-10 pl5">
181 - <input type="time" name="startDate" value="{{sch.dfsj}}" required disabled> 184 + <input type="time" name="startDate" value="{{sch.dfsj}}" required >
182 </div> 185 </div>
183 </div> 186 </div>
184 <div class="uk-grid"> 187 <div class="uk-grid">
@@ -188,7 +191,7 @@ @@ -188,7 +191,7 @@
188 </div> 191 </div>
189 </div> 192 </div>
190 <div class="uk-width-7-10 pl5"> 193 <div class="uk-width-7-10 pl5">
191 - <input type="time" name="endDate" value="{{sch.zdsj}}" required> 194 + <input type="time" name="endDate" value="{{sch.zdsj}}" >
192 </div> 195 </div>
193 </div> 196 </div>
194 </script> 197 </script>
@@ -295,7 +298,7 @@ @@ -295,7 +298,7 @@
295 298
296 //营运2 299 //营运2
297 nsf.html(template('range_turn_child_service-temp', nextData)); 300 nsf.html(template('range_turn_child_service-temp', nextData));
298 - disabledField(nsf, 'endDate'); 301 + disabledField(nsf, 'startDate');
299 //烂班1 302 //烂班1
300 cdf.html(template('range_turn_child_destroy-temp', currData)); 303 cdf.html(template('range_turn_child_destroy-temp', currData));
301 disabledField(cdf, 'endStation'); 304 disabledField(cdf, 'endStation');
@@ -585,6 +588,21 @@ @@ -585,6 +588,21 @@
585 btmDrawer.data('name', id).data('url', url).trigger('drawer_show'); 588 btmDrawer.data('name', id).data('url', url).trigger('drawer_show');
586 } 589 }
587 } 590 }
  591 +
  592 + /**
  593 + * 选择空驶调头
  594 + */
  595 + $('#emptyTurnCbox', modal).on('click', function () {
  596 + if(this.checked){
  597 + //全程烂班
  598 + $('[name=endStation]', ndf).val(nextSch.zdzCode).attr('disabled');
  599 + //空驶回起点
  600 +
  601 + }
  602 + else{
  603 +
  604 + }
  605 + });
588 })(); 606 })();
589 </script> 607 </script>
590 </div> 608 </div>
591 \ No newline at end of file 609 \ No newline at end of file
src/main/resources/static/real_control_v2/js/line_schedule/sch_table.js
@@ -100,49 +100,12 @@ var gb_schedule_table = (function () { @@ -100,49 +100,12 @@ var gb_schedule_table = (function () {
100 gb_ct_table.enableSort($('.ct_table', content), reset_seq_no, gb_schedule_table_dbclick.init); 100 gb_ct_table.enableSort($('.ct_table', content), reset_seq_no, gb_schedule_table_dbclick.init);
101 //dbclick event 101 //dbclick event
102 gb_schedule_table_dbclick.init(); 102 gb_schedule_table_dbclick.init();
103 - //点击实发,show detail  
104 - fcsjActualCellQtip(); 103 + //双击实发
  104 + gb_schedule_table_dbclick.sfsjCellClick($('dd.fcsjActualCell'));
105 cb && cb(); 105 cb && cb();
106 }); 106 });
107 }; 107 };
108 108
109 - function fcsjActualCellQtip() {  
110 - //单击实发单元格显示详细信息  
111 - $(document).on('click', 'dd.fcsjActualCell', function () {  
112 - var that = this;  
113 - $(that).qtip({  
114 - show: true,  
115 - content: {  
116 - text: function (e) {  
117 - var lineCode = $(that).parents('li.line_schedule').data('id')  
118 - , id = $(that).parents('dl').data('id')  
119 - , sch = line2Schedule[lineCode][id];  
120 - return temps['sfsj_sch-detail-temp'](sch);  
121 - }  
122 - }  
123 - , style: {  
124 - classes: 'qtip-dark qtip-rounded qtip-shadow'  
125 - },  
126 - hide: {  
127 - fixed: true,  
128 - delay: 300  
129 - },  
130 - position: {  
131 - target: that,  
132 - my: 'center left',  
133 - at: 'center right'  
134 - },  
135 - events: {  
136 - hidden: function (event, api) {  
137 - $(this).qtip('destroy', true);  
138 - }  
139 - }  
140 - });  
141 - });  
142 -  
143 - //双击  
144 - gb_schedule_table_dbclick.sfsjCellClick($('dd.fcsjActualCell'));  
145 - }  
146 109
147 //重置序号 110 //重置序号
148 var reset_seq_no = function (dls) { 111 var reset_seq_no = function (dls) {
@@ -174,16 +137,21 @@ var gb_schedule_table = (function () { @@ -174,16 +137,21 @@ var gb_schedule_table = (function () {
174 137
175 //新增一个班次,附带更新的班次 138 //新增一个班次,附带更新的班次
176 var insertSchedule = function (sch, upArr) { 139 var insertSchedule = function (sch, upArr) {
  140 + var xls = {};
  141 + xls[sch.xlBm] = 1;
177 line2Schedule[sch.xlBm][sch.id] = sch; 142 line2Schedule[sch.xlBm][sch.id] = sch;
178 //update 143 //update
179 if (isArray(upArr)) { 144 if (isArray(upArr)) {
180 $.each(upArr, function () { 145 $.each(upArr, function () {
181 line2Schedule[this.xlBm][this.id] = this; 146 line2Schedule[this.xlBm][this.id] = this;
  147 + xls[this.xlBm] = 1;
182 }); 148 });
183 } 149 }
184 150
185 //重新渲染表格 151 //重新渲染表格
186 - reRenderTable(sch.xlBm); 152 + for(var xlBm in xls){
  153 + reRenderTable(sch.xlBm);
  154 + }
187 //定位到新添加的班次 155 //定位到新添加的班次
188 scroToDl(sch); 156 scroToDl(sch);
189 }; 157 };
@@ -350,6 +318,39 @@ var gb_schedule_table = (function () { @@ -350,6 +318,39 @@ var gb_schedule_table = (function () {
350 markerLastSch([sch]); 318 markerLastSch([sch]);
351 }; 319 };
352 320
  321 + //单击实发单元格显示详细信息
  322 + $(document).on('click', 'dd.fcsjActualCell', function () {
  323 + var that = this;
  324 + $(that).qtip({
  325 + show: true,
  326 + content: {
  327 + text: function (e) {
  328 + var lineCode = $(that).parents('li.line_schedule').data('id')
  329 + , id = $(that).parents('dl').data('id')
  330 + , sch = line2Schedule[lineCode][id];
  331 + return temps['sfsj_sch-detail-temp'](sch);
  332 + }
  333 + }
  334 + , style: {
  335 + classes: 'qtip-dark qtip-rounded qtip-shadow'
  336 + },
  337 + hide: {
  338 + fixed: true,
  339 + delay: 300
  340 + },
  341 + position: {
  342 + target: that,
  343 + my: 'center left',
  344 + at: 'center right'
  345 + },
  346 + events: {
  347 + hidden: function (event, api) {
  348 + $(this).qtip('destroy', true);
  349 + }
  350 + }
  351 + });
  352 + });
  353 +
353 //拖拽选中... 354 //拖拽选中...
354 var seq_nos = '.line-schedule-table .ct_table_body>dl>dd.seq_no'; 355 var seq_nos = '.line-schedule-table .ct_table_body>dl>dd.seq_no';
355 var drag_strat; 356 var drag_strat;
@@ -601,6 +602,14 @@ var gb_schedule_table = (function () { @@ -601,6 +602,14 @@ var gb_schedule_table = (function () {
601 return dfCell; 602 return dfCell;
602 }; 603 };
603 604
  605 +
  606 + /**
  607 + * 刷新页面的所有线路班次
  608 + */
  609 + var refreshAll = function () {
  610 + show();
  611 + };
  612 +
604 return { 613 return {
605 show: show, 614 show: show,
606 findScheduleByLine: findScheduleByLine, 615 findScheduleByLine: findScheduleByLine,
@@ -620,6 +629,7 @@ var gb_schedule_table = (function () { @@ -620,6 +629,7 @@ var gb_schedule_table = (function () {
620 addRemarks: addRemarks, 629 addRemarks: addRemarks,
621 reLoadAndRefresh: reLoadAndRefresh, 630 reLoadAndRefresh: reLoadAndRefresh,
622 showLateBadge: showLateBadge, 631 showLateBadge: showLateBadge,
623 - cancelLateBadge: cancelLateBadge 632 + cancelLateBadge: cancelLateBadge,
  633 + refreshAll: refreshAll
624 }; 634 };
625 })(); 635 })();
src/main/resources/static/real_control_v2/js/line_schedule/search.js
@@ -78,6 +78,8 @@ var gb_sch_search = (function() { @@ -78,6 +78,8 @@ var gb_sch_search = (function() {
78 //uikit 会记住上一次搜索值,触发keyup以清空该值 78 //uikit 会记住上一次搜索值,触发keyup以清空该值
79 $('.sch-search-autocom input', cont).val('').trigger('keyup').parent().removeClass('active'); 79 $('.sch-search-autocom input', cont).val('').trigger('keyup').parent().removeClass('active');
80 $('.line-schedule-table .ct_table_body dl._search_hide', cont).removeClass('_search_hide'); 80 $('.line-schedule-table .ct_table_body dl._search_hide', cont).removeClass('_search_hide');
  81 + //更新滚动条高度
  82 + $('.ct_table_wrap', cont).perfectScrollbar('update');
81 } 83 }
82 84
83 function execSch(gps) { 85 function execSch(gps) {
@@ -109,6 +111,9 @@ var gb_sch_search = (function() { @@ -109,6 +111,9 @@ var gb_sch_search = (function() {
109 if (car != $(dds[2]).data('nbbm')) 111 if (car != $(dds[2]).data('nbbm'))
110 $(this).addClass('_search_hide'); 112 $(this).addClass('_search_hide');
111 }); 113 });
  114 +
  115 + //滚动条置顶
  116 + $(tbody).parents('.ct_table_wrap')[0].scrollTop = 0;
112 } 117 }
113 118
114 return { 119 return {
src/main/resources/static/real_control_v2/js/websocket/sch_websocket.js
@@ -13,6 +13,10 @@ var gb_sch_websocket = (function () { @@ -13,6 +13,10 @@ var gb_sch_websocket = (function () {
13 var new_conn = function () { 13 var new_conn = function () {
14 schSock = new SockJS('/sockjs/realcontrol'); 14 schSock = new SockJS('/sockjs/realcontrol');
15 schSock.onopen = function (e) { 15 schSock.onopen = function (e) {
  16 + if(reConnCount && reConnCount > 1){
  17 + gb_schedule_table.refreshAll();
  18 + console.log('重新连接,刷新班次');
  19 + }
16 reConnCount = 1; 20 reConnCount = 1;
17 clearInterval(recInterval); 21 clearInterval(recInterval);
18 console.log('webSocket[realcontrol] onopen'); 22 console.log('webSocket[realcontrol] onopen');
@@ -101,6 +105,7 @@ var gb_sch_websocket = (function () { @@ -101,6 +105,7 @@ var gb_sch_websocket = (function () {
101 * @param msg 105 * @param msg
102 */ 106 */
103 var autoWdtz = function (msg) { 107 var autoWdtz = function (msg) {
  108 + debugger
104 var schId = msg.id; 109 var schId = msg.id;
105 var minute = msg.minute; 110 var minute = msg.minute;
106 var lineCode = msg.lineCode; 111 var lineCode = msg.lineCode;
src/main/resources/static/real_control_v2/mapmonitor/fragments/playback_v2/main.html
@@ -169,7 +169,14 @@ @@ -169,7 +169,14 @@
169 <input type="checkbox" name="stationName"> 站点名称 169 <input type="checkbox" name="stationName"> 站点名称
170 </label> 170 </label>
171 <label> 171 <label>
172 - <a>停车场 <i class="uk-icon-angle-down"></i></a> 172 + <div class="uk-button-dropdown" data-uk-dropdown>
  173 + <a>停车场 <i class="uk-icon-angle-down"></i></a>
  174 + <div class="uk-dropdown uk-dropdown-scrollable" style="max-height: 300px;">
  175 + <ul class="uk-nav uk-nav-dropdown parks_list">
  176 +
  177 + </ul>
  178 + </div>
  179 + </div>
173 </label> 180 </label>
174 </form> 181 </form>
175 </div> 182 </div>
@@ -249,6 +256,15 @@ @@ -249,6 +256,15 @@
249 </dl> 256 </dl>
250 {{/each}} 257 {{/each}}
251 </script> 258 </script>
  259 +
  260 + <script id="pb_park_list_dropdown-temp" type="text/html">
  261 + {{each list as p i}}
  262 + <li data-code="{{p.parkCode}}" ><a>{{p.parkName}}</a></li>
  263 + {{if i == 0}}
  264 + <li class="uk-nav-divider"></li>
  265 + {{/if}}
  266 + {{/each}}
  267 + </script>
252 <script> 268 <script>
253 (function () { 269 (function () {
254 var modal = '#map-playback2-modal', gpsArray; 270 var modal = '#map-playback2-modal', gpsArray;
@@ -713,6 +729,8 @@ @@ -713,6 +729,8 @@
713 var routes;//路段 729 var routes;//路段
714 var stations;//站点 730 var stations;//站点
715 var parks;//停车场 731 var parks;//停车场
  732 + //停车场编码和Polygon对照
  733 + var parkPolygons={};
716 734
717 var initData = function (rs) { 735 var initData = function (rs) {
718 var gpsArray = rs.list; 736 var gpsArray = rs.list;
@@ -721,13 +739,70 @@ @@ -721,13 +739,70 @@
721 var lineCode = gpsArray[0].lineId; 739 var lineCode = gpsArray[0].lineId;
722 //从地图模块获取站点数据 740 //从地图模块获取站点数据
723 stations = gb_map_spatial_data.getStationArray(lineCode); 741 stations = gb_map_spatial_data.getStationArray(lineCode);
724 - //从地图模块获取停车场数据  
725 - parks = gb_map_spatial_data.carparkArray(); 742 + //停车场下拉菜单
  743 + initDropdownList(lineCode);
  744 +
726 //从localStorage 获取路段 745 //从localStorage 获取路段
727 routes = JSON.parse(storage.getItem(lineCode + '_route')); 746 routes = JSON.parse(storage.getItem(lineCode + '_route'));
728 routes = [routes.up_bd, routes.down_bd]; 747 routes = [routes.up_bd, routes.down_bd];
729 }; 748 };
730 749
  750 + /**
  751 + * 初始化停车场下拉菜单
  752 + */
  753 + var initDropdownList = function (lineCode) {
  754 + //从地图模块获取停车场数据
  755 + parks = gb_map_spatial_data.carparkArray();
  756 + console.log('parksparks', parks);
  757 + //将线路标准停车场排在第一个
  758 + var information = gb_data_basic.getLineInformation(lineCode);
  759 + var index;
  760 + for(var i = 0,p; p=parks[i++];){
  761 + if(p.parkCode == information.carPark){
  762 + index = i - 1;
  763 + break;
  764 + }
  765 + }
  766 + parks[index] = parks.splice(0, 1 , parks[index])[0];
  767 + //渲染
  768 + var htmlStr = template('pb_park_list_dropdown-temp', {list: parks});
  769 + $('.buffer_area_form .parks_list', modal).html(htmlStr);
  770 +
  771 + //停车场点击
  772 + $('.buffer_area_form .parks_list>li', modal).on('click', function () {
  773 + var code = $(this).data('code');
  774 +
  775 + if(!parkPolygons[code]){
  776 + var park;
  777 + $.each(parks, function () {
  778 + if(this.parkCode==code){park = this;return false;}
  779 + });
  780 +
  781 + transMultiWGSToBd(park);
  782 + var polygon = new BMap.Polygon(park.bdPoints, {strokeColor: 'red', strokeWeight: 1});
  783 + map.addOverlay(polygon);
  784 + parkPolygons[code] = polygon;
  785 + //中心点
  786 + var ts = park.gCenterPoint.split(' ')
  787 + ,coord = TransGPS.wgsToBD(parseFloat(ts[1]), parseFloat(ts[0]));
  788 + polygon._centerPoint = new BMap.Point(coord.lng, coord.lat);
  789 + //绘制名称label
  790 + var style = {backgroundColor: "rgba(255, 255, 255, 0.69)",color : "red", borderColor: "red", fontSize : "12px", height : "16px", lineHeight : "16px", fontFamily:"微软雅黑"}
  791 + var width = park.parkName.length * 12;
  792 + var label = new BMap.Label(park.parkName, {
  793 + position:polygon._centerPoint,
  794 + offset: new BMap.Size(-(width / 2), -27)
  795 + });
  796 + label.setStyle(style);
  797 + map.addOverlay(label);
  798 + }
  799 +
  800 + //定位到polygon
  801 + var polygon=parkPolygons[code];
  802 + map.panTo(polygon._centerPoint);
  803 + });
  804 + };
  805 +
731 806
732 /** 807 /**
733 * 更新车辆位置 808 * 更新车辆位置
@@ -866,8 +941,10 @@ @@ -866,8 +941,10 @@
866 map.addOverlay(circle); 941 map.addOverlay(circle);
867 }; 942 };
868 943
869 - var drawPolygon = function () {  
870 - 944 + var drawPolygon = function (station) {
  945 + transMultiWGSToBd(station);
  946 + var polygon = new BMap.Polygon(station.bdPoints, {strokeColor: '#000000', strokeWeight: 1});
  947 + map.addOverlay(polygon);
871 }; 948 };
872 949
873 /** 950 /**
@@ -883,6 +960,7 @@ @@ -883,6 +960,7 @@
883 trailArray=[]; 960 trailArray=[];
884 trailPolyline = null; 961 trailPolyline = null;
885 gpsMarker = null; 962 gpsMarker = null;
  963 + parkPolygons = {};
886 }; 964 };
887 965
888 /** 966 /**
@@ -1012,6 +1090,18 @@ @@ -1012,6 +1090,18 @@
1012 reset: reset 1090 reset: reset
1013 } 1091 }
1014 })(); 1092 })();
  1093 +
  1094 + function transMultiWGSToBd(obj) {
  1095 + if(!obj._gPoints)
  1096 + return;
  1097 + var bdPoints = [],coord;
  1098 + $.each(obj._gPoints, function () {
  1099 + coord = TransGPS.wgsToBD(this.lat, this.lng);
  1100 + bdPoints.push(new BMap.Point(coord.lng, coord.lat));
  1101 + });
  1102 +
  1103 + obj.bdPoints=bdPoints;
  1104 + }
1015 })(); 1105 })();
1016 </script> 1106 </script>
1017 </div> 1107 </div>
1018 \ No newline at end of file 1108 \ No newline at end of file