Commit 63069cb55a632a024e993abbd7bb326581a387ca

Authored by 潘钊
1 parent 038dee30

update

src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
@@ -679,9 +679,6 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf @@ -679,9 +679,6 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf
679 map.put("directions_eq", 1); 679 map.put("directions_eq", 1);
680 List<Map<String, Object>> downList = sectionRouteService.getSectionRoute(map); 680 List<Map<String, Object>> downList = sectionRouteService.getSectionRoute(map);
681 681
682 - System.out.println(upList);  
683 - System.out.println(downList);  
684 -  
685 Map<String, Object> rs = new HashMap<>(); 682 Map<String, Object> rs = new HashMap<>();
686 683
687 String upVectors = "", vec; 684 String upVectors = "", vec;
src/main/java/com/bsth/vehicle/gpsdata/entity/ArrivalInfo.java
@@ -24,14 +24,21 @@ public class ArrivalInfo { @@ -24,14 +24,21 @@ public class ArrivalInfo {
24 Date createDate, Integer weeksYear) { 24 Date createDate, Integer weeksYear) {
25 this.deviceId = deviceId; 25 this.deviceId = deviceId;
26 26
27 - //gps是2014年的数据,临时将ts拉到6月1号  
28 - /*try {  
29 - this.ts = sdf2.parse("2016-06-01 " + sdf.format(new Date(ts))).getTime();  
30 - } catch (ParseException e) {  
31 - e.printStackTrace();  
32 - }*/  
33 this.ts = ts; 27 this.ts = ts;
34 28
  29 + this.lineCode = lineCode;
  30 + this.upDown = upDown;
  31 + this.stopNo = stopNo;
  32 + this.inOut = inOut;
  33 + this.createDate = createDate;
  34 + this.weeksYear = weeksYear;
  35 + }
  36 +
  37 + public ArrivalInfo(String deviceId, Long ts, String lineCode, Integer upDown, String stopNo, Integer inOut,
  38 + Date createDate, Integer weeksYear, String stopName) {
  39 + this.deviceId = deviceId;
  40 +
  41 + this.ts = ts;
35 42
36 this.lineCode = lineCode; 43 this.lineCode = lineCode;
37 this.upDown = upDown; 44 this.upDown = upDown;
@@ -39,6 +46,7 @@ public class ArrivalInfo { @@ -39,6 +46,7 @@ public class ArrivalInfo {
39 this.inOut = inOut; 46 this.inOut = inOut;
40 this.createDate = createDate; 47 this.createDate = createDate;
41 this.weeksYear = weeksYear; 48 this.weeksYear = weeksYear;
  49 + this.stopName = stopName;
42 } 50 }
43 51
44 /** 52 /**
@@ -62,9 +70,14 @@ public class ArrivalInfo { @@ -62,9 +70,14 @@ public class ArrivalInfo {
62 private Integer upDown; 70 private Integer upDown;
63 71
64 /** 72 /**
65 - * 站点 73 + * 站点编码
66 */ 74 */
67 private String stopNo; 75 private String stopNo;
  76 +
  77 + /**
  78 + * 站点名称
  79 + */
  80 + private String stopName;
68 81
69 /** 82 /**
70 * 0: 进 1:出 83 * 0: 进 1:出
@@ -141,4 +154,12 @@ public class ArrivalInfo { @@ -141,4 +154,12 @@ public class ArrivalInfo {
141 public void setTs(Long ts) { 154 public void setTs(Long ts) {
142 this.ts = ts; 155 this.ts = ts;
143 } 156 }
  157 +
  158 + public String getStopName() {
  159 + return stopName;
  160 + }
  161 +
  162 + public void setStopName(String stopName) {
  163 + this.stopName = stopName;
  164 + }
144 } 165 }
src/main/java/com/bsth/vehicle/gpsdata/service/GpsDataServiceImpl.java
@@ -12,6 +12,8 @@ import java.util.HashMap; @@ -12,6 +12,8 @@ import java.util.HashMap;
12 import java.util.List; 12 import java.util.List;
13 import java.util.Map; 13 import java.util.Map;
14 14
  15 +import org.slf4j.Logger;
  16 +import org.slf4j.LoggerFactory;
15 import org.springframework.stereotype.Service; 17 import org.springframework.stereotype.Service;
16 18
17 import com.bsth.util.DateUtils; 19 import com.bsth.util.DateUtils;
@@ -19,6 +21,7 @@ import com.bsth.util.TransGPS; @@ -19,6 +21,7 @@ import com.bsth.util.TransGPS;
19 import com.bsth.util.TransGPS.Location; 21 import com.bsth.util.TransGPS.Location;
20 import com.bsth.util.db.DBUtils_MS; 22 import com.bsth.util.db.DBUtils_MS;
21 import com.bsth.vehicle.common.CommonMapped; 23 import com.bsth.vehicle.common.CommonMapped;
  24 +import com.bsth.vehicle.gpsdata.entity.ArrivalInfo;
22 25
23 @Service 26 @Service
24 public class GpsDataServiceImpl implements GpsDataService{ 27 public class GpsDataServiceImpl implements GpsDataService{
@@ -26,6 +29,13 @@ public class GpsDataServiceImpl implements GpsDataService{ @@ -26,6 +29,13 @@ public class GpsDataServiceImpl implements GpsDataService{
26 /** 历史gps查询最大范围 24小时 */ 29 /** 历史gps查询最大范围 24小时 */
27 final static Long GPS_RANGE= 60 * 60 * 24L; 30 final static Long GPS_RANGE= 60 * 60 * 24L;
28 31
  32 + /** jdbc */
  33 + Connection conn = null;
  34 + PreparedStatement ps = null;
  35 + ResultSet rs = null;
  36 +
  37 + Logger logger = LoggerFactory.getLogger(this.getClass());
  38 +
29 //历史gps查询 39 //历史gps查询
30 @Override 40 @Override
31 public List<Map<String, Object>> history(String device, Long startTime, Long endTime, int directions) { 41 public List<Map<String, Object>> history(String device, Long startTime, Long endTime, int directions) {
@@ -111,12 +121,11 @@ public class GpsDataServiceImpl implements GpsDataService{ @@ -111,12 +121,11 @@ public class GpsDataServiceImpl implements GpsDataService{
111 if(et - st > GPS_RANGE) 121 if(et - st > GPS_RANGE)
112 return list; 122 return list;
113 123
114 - //转换设备号 124 + //车辆编码转换成设备号
115 String[] devices = new String[nbbmArray.length]; 125 String[] devices = new String[nbbmArray.length];
116 for(int i = 0; i < nbbmArray.length; i ++){ 126 for(int i = 0; i < nbbmArray.length; i ++){
117 devices[i] = CommonMapped.vehicDeviceBiMap.inverse().get(nbbmArray[i]); 127 devices[i] = CommonMapped.vehicDeviceBiMap.inverse().get(nbbmArray[i]);
118 } 128 }
119 - //String device = CommonMapped.vehicDeviceBiMap.inverse().get(nbbm);  
120 //day_of_year 129 //day_of_year
121 Calendar sCal = Calendar.getInstance(); 130 Calendar sCal = Calendar.getInstance();
122 sCal.setTime(new Date(st * 1000)); 131 sCal.setTime(new Date(st * 1000));
@@ -126,21 +135,33 @@ public class GpsDataServiceImpl implements GpsDataService{ @@ -126,21 +135,33 @@ public class GpsDataServiceImpl implements GpsDataService{
126 eCal.setTime(new Date(et * 1000)); 135 eCal.setTime(new Date(et * 1000));
127 int eDayOfYear = /*eCal.get(Calendar.DAY_OF_YEAR)*/200; 136 int eDayOfYear = /*eCal.get(Calendar.DAY_OF_YEAR)*/200;
128 137
  138 + Calendar weekCal = Calendar.getInstance();
  139 +
129 //如果是同一天 140 //如果是同一天
130 if(sDayOfYear == eDayOfYear){ 141 if(sDayOfYear == eDayOfYear){
131 - list = findByTs(sDayOfYear, st, et, devices); 142 + weekCal.setTimeInMillis(st);
  143 + list = findByTs(weekCal.get(Calendar.WEEK_OF_YEAR), sDayOfYear, st, et, devices);
132 } 144 }
133 else{ 145 else{
134 //跨天 146 //跨天
  147 + Long tempSt = 0L, tempEt = 0L;
135 for(int i = sDayOfYear; i <= eDayOfYear; i ++){ 148 for(int i = sDayOfYear; i <= eDayOfYear; i ++){
136 149
137 - if(i == sDayOfYear)  
138 - list.addAll(findByTs(i, st, DateUtils.getTimesnight(sCal), devices));  
139 - else if(i == eDayOfYear)  
140 - list.addAll(findByTs(i, DateUtils.getTimesmorning(sCal), et, devices));  
141 - else  
142 - list.addAll(findByTs(i, DateUtils.getTimesmorning(sCal), DateUtils.getTimesnight(sCal), devices)); 150 + if(i == sDayOfYear){
  151 + tempSt = st;
  152 + tempEt = DateUtils.getTimesnight(sCal);
  153 + }
  154 + else if(i == eDayOfYear){
  155 + tempSt = DateUtils.getTimesmorning(sCal);
  156 + tempEt = et;
  157 + }
  158 + else{
  159 + tempSt = DateUtils.getTimesmorning(sCal);
  160 + tempEt = DateUtils.getTimesnight(sCal);
  161 + }
143 162
  163 + weekCal.setTimeInMillis(tempSt);
  164 + list.addAll(findByTs(weekCal.get(Calendar.WEEK_OF_YEAR), i, tempSt, tempEt, devices));
144 //加一天 165 //加一天
145 sCal.add(Calendar.DATE, 1); 166 sCal.add(Calendar.DATE, 1);
146 } 167 }
@@ -157,7 +178,7 @@ public class GpsDataServiceImpl implements GpsDataService{ @@ -157,7 +178,7 @@ public class GpsDataServiceImpl implements GpsDataService{
157 return list; 178 return list;
158 } 179 }
159 180
160 - public List<Map<String, Object>> findByTs(int dayOfYear,Long st, Long et, String[] devices){ 181 + public List<Map<String, Object>> findByTs(int weekOfYear, int dayOfYear,Long st, Long et, String[] devices){
161 List<Map<String, Object>> list = new ArrayList<>(); 182 List<Map<String, Object>> list = new ArrayList<>();
162 Map<String, Object> map = null; 183 Map<String, Object> map = null;
163 184
@@ -167,10 +188,10 @@ public class GpsDataServiceImpl implements GpsDataService{ @@ -167,10 +188,10 @@ public class GpsDataServiceImpl implements GpsDataService{
167 inv += ("'" + device + "',"); 188 inv += ("'" + device + "',");
168 inv = inv.substring(0, inv.length() - 1); 189 inv = inv.substring(0, inv.length() - 1);
169 190
  191 + //查询到离站数据
  192 + Map<String, ArrivalInfo> arrivalMap = findArrivalByTs(/*weekOfYear*/30, st, et, inv);
  193 +
170 String sql = "select DEVICE_ID,LON,LAT,TS,INOUT_STOP,SERVICE_STATE ,STOP_NO from bsth_c_gps_info where days_year=? and device_id in ("+inv+") and ts > ? and ts < ?"; 194 String sql = "select DEVICE_ID,LON,LAT,TS,INOUT_STOP,SERVICE_STATE ,STOP_NO from bsth_c_gps_info where days_year=? and device_id in ("+inv+") and ts > ? and ts < ?";
171 - Connection conn = null;  
172 - PreparedStatement ps = null;  
173 - ResultSet rs = null;  
174 try{ 195 try{
175 conn = DBUtils_MS.getConnection(); 196 conn = DBUtils_MS.getConnection();
176 ps = conn.prepareStatement(sql); 197 ps = conn.prepareStatement(sql);
@@ -182,7 +203,7 @@ public class GpsDataServiceImpl implements GpsDataService{ @@ -182,7 +203,7 @@ public class GpsDataServiceImpl implements GpsDataService{
182 rs = ps.executeQuery(); 203 rs = ps.executeQuery();
183 Float lon, lat; 204 Float lon, lat;
184 Location bdLoc, gdLoc; 205 Location bdLoc, gdLoc;
185 - int upDown; 206 + int upDown,inOutStop;
186 while (rs.next()) { 207 while (rs.next()) {
187 upDown = getUpOrDown(rs.getLong("SERVICE_STATE")); 208 upDown = getUpOrDown(rs.getLong("SERVICE_STATE"));
188 map = new HashMap<>(); 209 map = new HashMap<>();
@@ -201,7 +222,14 @@ public class GpsDataServiceImpl implements GpsDataService{ @@ -201,7 +222,14 @@ public class GpsDataServiceImpl implements GpsDataService{
201 map.put("device", rs.getString("DEVICE_ID")); 222 map.put("device", rs.getString("DEVICE_ID"));
202 map.put("ts", rs.getLong("TS")); 223 map.put("ts", rs.getLong("TS"));
203 map.put("stopNo", rs.getString("STOP_NO")); 224 map.put("stopNo", rs.getString("STOP_NO"));
204 - map.put("inout_stop", rs.getInt("INOUT_STOP")); 225 +
  226 + inOutStop = rs.getInt("INOUT_STOP");
  227 + map.put("inout_stop", inOutStop);
  228 +
  229 + if(inOutStop != -1){
  230 + map.put("inout_stop_info",
  231 + arrivalMap.get(rs.getString("DEVICE_ID") + "_" + rs.getLong("TS") + "_" + inOutStop));
  232 + }
205 map.put("nbbm", CommonMapped.vehicDeviceBiMap.get(rs.getString("DEVICE_ID"))); 233 map.put("nbbm", CommonMapped.vehicDeviceBiMap.get(rs.getString("DEVICE_ID")));
206 map.put("state", 0); 234 map.put("state", 0);
207 //上下行 235 //上下行
@@ -209,18 +237,42 @@ public class GpsDataServiceImpl implements GpsDataService{ @@ -209,18 +237,42 @@ public class GpsDataServiceImpl implements GpsDataService{
209 list.add(map); 237 list.add(map);
210 } 238 }
211 }catch(Exception e){ 239 }catch(Exception e){
212 - e.printStackTrace(); 240 + logger.error("", e);
213 }finally { 241 }finally {
214 DBUtils_MS.close(rs, ps, conn); 242 DBUtils_MS.close(rs, ps, conn);
215 } 243 }
216 return list; 244 return list;
217 } 245 }
218 -/*  
219 - public static void main(String[] args) {  
220 - Calendar eCal = Calendar.getInstance();  
221 - eCal.setTime(new Date()); 246 +
  247 + public Map<String, ArrivalInfo> findArrivalByTs(int weekOfYear, Long st, Long et, String devicesInSql){
  248 + Map<String, ArrivalInfo> map = new HashMap<>();
222 249
223 - int dayOfYear = eCal.get(Calendar.DAY_OF_YEAR);  
224 - System.out.println(dayOfYear);  
225 - }*/ 250 + String sql = "SELECT DEVICE_ID,LINE_ID,STOP_NO,TS,UP_DOWN,IN_OUT,WEEKS_YEAR,CREATE_DATE FROM bsth_c_arrival_info where weeks_year=? and device_id in ("+devicesInSql+") and ts > ? and ts < ?";
  251 + try{
  252 + conn = DBUtils_MS.getConnection();
  253 + ps = conn.prepareStatement(sql);
  254 + ps.setInt(1, weekOfYear);
  255 + ps.setLong(2, st * 1000);
  256 + ps.setLong(3, et * 1000);
  257 +
  258 + rs = ps.executeQuery();
  259 + ArrivalInfo arr;
  260 + int inOut;
  261 + while (rs.next()) {
  262 + arr = new ArrivalInfo(rs.getString("DEVICE_ID"), rs.getLong("TS"), rs.getString("LINE_ID"), rs.getInt("UP_DOWN")
  263 + , rs.getString("STOP_NO"), rs.getInt("IN_OUT"), rs.getDate("CREATE_DATE") , rs.getInt("WEEKS_YEAR")
  264 + , CommonMapped.stationCodeMap.get(rs.getString("STOP_NO")));
  265 +
  266 + //设备号_时间戳_进出状态 为key
  267 + //反转进出状态
  268 + inOut = arr.getInOut() == 0?1:0;
  269 + map.put(arr.getDeviceId() + "_" + arr.getTs() + "_" + inOut, arr);
  270 + }
  271 + }catch(Exception e){
  272 + logger.error("", e);
  273 + }finally {
  274 + DBUtils_MS.close(rs, ps, conn);
  275 + }
  276 + return map;
  277 + }
226 } 278 }
src/main/resources/static/pages/mapmonitor/real/css/real.css
@@ -88,7 +88,7 @@ label.BMapLabel{ @@ -88,7 +88,7 @@ label.BMapLabel{
88 .mapRightWrap.to_playBack{ 88 .mapRightWrap.to_playBack{
89 transform:rotateY(180deg); 89 transform:rotateY(180deg);
90 height: 476px; 90 height: 476px;
91 - width: 370px 91 + width: 390px
92 } 92 }
93 93
94 .mapRightWrap.to_playBack .alert{ 94 .mapRightWrap.to_playBack .alert{
@@ -698,8 +698,8 @@ html{ @@ -698,8 +698,8 @@ html{
698 } 698 }
699 699
700 .play-back-btns .dropdown-menu{ 700 .play-back-btns .dropdown-menu{
701 - min-width: 88px;  
702 - width: 88px; 701 + min-width: 70px;
  702 + width: 70px;
703 } 703 }
704 704
705 .play-back-btns>i.playBtn{ 705 .play-back-btns>i.playBtn{
@@ -768,8 +768,9 @@ html{ @@ -768,8 +768,9 @@ html{
768 margin-right: 12px; 768 margin-right: 12px;
769 color: #565555; 769 color: #565555;
770 padding: 4px 8px 4px 13px; 770 padding: 4px 8px 4px 13px;
771 - border-radius: 5px !important;  
772 cursor: pointer; 771 cursor: pointer;
  772 + border-left: 1px solid #e1e5ec;
  773 + border-right: 1px solid #e1e5ec;
773 } 774 }
774 775
775 #playSpeed .fa-angle-up{ 776 #playSpeed .fa-angle-up{
src/main/resources/static/pages/mapmonitor/real/js/map_platform.js
@@ -48,6 +48,9 @@ var realMap = (function() { @@ -48,6 +48,9 @@ var realMap = (function() {
48 //线路路由 48 //线路路由
49 var polylines; 49 var polylines;
50 50
  51 + //百度 -轨迹回放点聚合
  52 + //var historyClusterer;
  53 +
51 //设备号和marker对照 54 //设备号和marker对照
52 var markersMap; 55 var markersMap;
53 var real_map = { 56 var real_map = {
@@ -81,6 +84,7 @@ var realMap = (function() { @@ -81,6 +84,7 @@ var realMap = (function() {
81 var ctrl = new BMapLib.TrafficControl(); 84 var ctrl = new BMapLib.TrafficControl();
82 map.addControl(ctrl); 85 map.addControl(ctrl);
83 86
  87 + //historyClusterer = new BMapLib.MarkerClusterer(map, {isAverangeCenter : true,minClusterSize : 2})
84 var isVisible; 88 var isVisible;
85 trafficBtn.on('click', function() { 89 trafficBtn.on('click', function() {
86 if (isVisible) { 90 if (isVisible) {
@@ -167,13 +171,13 @@ var realMap = (function() { @@ -167,13 +171,13 @@ var realMap = (function() {
167 171
168 local.search(val); 172 local.search(val);
169 }, 173 },
170 - drawLine: function(lineCode){ 174 + drawLine: function(route){
171 var map = currentMap.map; 175 var map = currentMap.map;
172 map.clearOverlays(); 176 map.clearOverlays();
173 polylines = []; 177 polylines = [];
174 //画线路 178 //画线路
175 //从localStorage里读取路由信息 179 //从localStorage里读取路由信息
176 - var route = JSON.parse(storage.getItem(lineCode + '_route')); 180 + //var route = JSON.parse(storage.getItem(lineCode + '_route'));
177 var upLineOps = {strokeColor:"blue", strokeWeight:6, strokeOpacity:0.5} 181 var upLineOps = {strokeColor:"blue", strokeWeight:6, strokeOpacity:0.5}
178 ,downLineOps = {strokeColor:"red", strokeWeight:6, strokeOpacity:0.5}; 182 ,downLineOps = {strokeColor:"red", strokeWeight:6, strokeOpacity:0.5};
179 183
@@ -251,14 +255,22 @@ var realMap = (function() { @@ -251,14 +255,22 @@ var realMap = (function() {
251 }, 255 },
252 //绘制轨迹回放 marker 256 //绘制轨迹回放 marker
253 addHistoryMarker: function(gps){ 257 addHistoryMarker: function(gps){
254 - //var marker = new BMap.Marker(new BMap.Point(gps.bd_lon, gps.bd_lat)); 258 +
255 var marker = bdHistoryMarker(gps); 259 var marker = bdHistoryMarker(gps);
256 currentMap.map.addOverlay(marker); 260 currentMap.map.addOverlay(marker);
  261 +
  262 + //historyClusterer.addMarker(marker);
257 return marker; 263 return marker;
258 }, 264 },
259 //移动marker 265 //移动marker
260 - moveMarker: function(marker , lon, lat){  
261 - marker.setPosition(new BMap.Point(lon, lat)); 266 + moveMarker: function(marker , gps){
  267 + marker.setPosition(new BMap.Point(gps.bd_lon, gps.bd_lat));
  268 + //重新设置颜色
  269 + marker.getLabel().setStyle({borderColor: bgColor(gps), backgroundColor: bgColor(gps)});
  270 + },
  271 + //居中marker
  272 + markerToCenter: function(marker){
  273 + currentMap.map.panTo(marker.getPosition());
262 } 274 }
263 }, 275 },
264 //高德地图 276 //高德地图
@@ -378,12 +390,12 @@ var realMap = (function() { @@ -378,12 +390,12 @@ var realMap = (function() {
378 placeSearch.search(val); 390 placeSearch.search(val);
379 }); 391 });
380 }, 392 },
381 - drawLine: function(lineCode){ 393 + drawLine: function(route){
382 polylines = []; 394 polylines = [];
383 var map = currentMap.map; 395 var map = currentMap.map;
384 map.clearMap(); 396 map.clearMap();
385 397
386 - var route = JSON.parse(storage.getItem(lineCode + '_route')); 398 + //var route = JSON.parse(storage.getItem(lineCode + '_route'));
387 var upArr = [], downArr = []; 399 var upArr = [], downArr = [];
388 400
389 var upLineOps = {path: upArr, strokeColor:"blue", strokeWeight:6, strokeOpacity:0.5} 401 var upLineOps = {path: upArr, strokeColor:"blue", strokeWeight:6, strokeOpacity:0.5}
src/main/resources/static/pages/mapmonitor/real/js/playBack.js
@@ -10,7 +10,6 @@ var playBack = (function() { @@ -10,7 +10,6 @@ var playBack = (function() {
10 var sTime; 10 var sTime;
11 //结束时间戳 11 //结束时间戳
12 var eTime; 12 var eTime;
13 - //10秒一个进度  
14 var tRange; 13 var tRange;
15 //进度条宽度 14 //进度条宽度
16 var pWidth; 15 var pWidth;
@@ -28,9 +27,13 @@ var playBack = (function() { @@ -28,9 +27,13 @@ var playBack = (function() {
28 var cIndex = 0; 27 var cIndex = 0;
29 var size; 28 var size;
30 //播放速度 29 //播放速度
31 - var speed = 1; 30 + var speed = parseInt($('#playSpeedText').text());
32 //车辆编码和marker映射 31 //车辆编码和marker映射
33 var markerMap = {}; 32 var markerMap = {};
  33 + //线路路由数据
  34 + var lineRoute;
  35 + //默认以第一辆车为焦点
  36 + var firstCar;
34 //S0I-058,S0I-055 ,隧道六线 37 //S0I-058,S0I-055 ,隧道六线
35 38
36 function getCurrMap(){ 39 function getCurrMap(){
@@ -66,9 +69,16 @@ var playBack = (function() { @@ -66,9 +69,16 @@ var playBack = (function() {
66 //退出 69 //退出
67 $('.play-back-close').on('click', function(){ 70 $('.play-back-close').on('click', function(){
68 stop(); 71 stop();
  72 + //重置位置
69 $pmk.css('width', '0px'); 73 $pmk.css('width', '0px');
70 topW = 0; 74 topW = 0;
71 $presMark.css('left', '0px'); 75 $presMark.css('left', '0px');
  76 + //删掉marker映射
  77 + markerMap = {};
  78 + //清理地图
  79 + getCurrMap().clear();
  80 + //坐标归0
  81 + cIndex = 0;
72 //动画 82 //动画
73 $('.play-back-list').removeClass('fadeInRightBig').addClass('fadeOutRightBig'); 83 $('.play-back-list').removeClass('fadeInRightBig').addClass('fadeOutRightBig');
74 $('.play-back-btns,.progress-wrap').removeClass('fadeInUpBig').addClass('fadeOutDownBig'); 84 $('.play-back-btns,.progress-wrap').removeClass('fadeInUpBig').addClass('fadeOutDownBig');
@@ -85,24 +95,40 @@ var playBack = (function() { @@ -85,24 +95,40 @@ var playBack = (function() {
85 var t = showMark($presMark, w); 95 var t = showMark($presMark, w);
86 //时间戳找gps 96 //时间戳找gps
87 var gps; 97 var gps;
88 - console.log('showMarkText', cIndex, t);  
89 -  
90 var marker; 98 var marker;
91 for(;cIndex < size; cIndex ++){ 99 for(;cIndex < size; cIndex ++){
92 gps = gpsArray[cIndex]; 100 gps = gpsArray[cIndex];
93 if(gps.ts <= t){ 101 if(gps.ts <= t){
94 marker = markerMap[gps.nbbm]; 102 marker = markerMap[gps.nbbm];
95 if(marker) 103 if(marker)
96 - getCurrMap().moveMarker(marker, gps.bd_lon, gps.bd_lat);//移动marker 104 + getCurrMap().moveMarker(marker, gps);//移动marker
97 else 105 else
98 - markerMap[gps.nbbm] = getCurrMap().addHistoryMarker(gps);//画出marker 106 + markerMap[gps.nbbm] = getCurrMap().addHistoryMarker(gps);//添加marker
  107 +
  108 + if(gps.inout_stop != -1){
  109 + //到离站信息
  110 + addInOutText(gps);
  111 + }
99 } 112 }
100 else{ 113 else{
101 break; 114 break;
102 } 115 }
103 } 116 }
104 - console.log('markerMap : ' , markerMap);  
105 - //console.log(moment(t).format('YYYY-MM-DD HH:mm:ss')); 117 + //定位焦点
  118 + /*if(markerMap[firstCar]){
  119 + getCurrMap().markerToCenter(markerMap[firstCar]);
  120 + }*/
  121 + }
  122 +
  123 + function addInOutText(gps){
  124 + var info = gps.inout_stop_info
  125 + ,date = moment(gps.ts).format('HH:mm.ss');
  126 + var html = '<div class="pback-logs-item">'+
  127 + gps.nbbm + ' '+ (info.inOut==1?'出':'进') +'站 '+info.stopName+' '+
  128 + '<span class="pback-logs-item-date">'+ date +'</span>'+
  129 + '</div>';
  130 +
  131 + $('.pback-logs').prepend(html);
106 } 132 }
107 133
108 //播放速度 134 //播放速度
@@ -146,23 +172,25 @@ var playBack = (function() { @@ -146,23 +172,25 @@ var playBack = (function() {
146 $('.mapRightWrap').html(htmlStr); 172 $('.mapRightWrap').html(htmlStr);
147 //车辆搜索框 173 //车辆搜索框
148 createVehSearch($('.mapRightWrap select[name="nbbm[]"]')); 174 createVehSearch($('.mapRightWrap select[name="nbbm[]"]'));
149 - //线路选择框 175 + //线路下拉框
  176 + var lineData = [{id:'-1', text: '请选择...'}];
150 $get('/line/all', null, function(array){ 177 $get('/line/all', null, function(array){
151 - console.log(array); 178 + $.each(array, function(){
  179 + lineData.push({id: this.id, text: this.name});
  180 + });
  181 + initPinYinSelect2('.mapRightWrap select[name=lineCode]', lineData);
152 }); 182 });
153 183
154 //点击轨迹回放按钮 184 //点击轨迹回放按钮
155 $('#playBackBtn').on('click', function(){ 185 $('#playBackBtn').on('click', function(){
156 var params = $('#playBackForm').serializeJSON(); 186 var params = $('#playBackForm').serializeJSON();
157 - console.log(params);  
158 //查询历史gps数据 187 //查询历史gps数据
159 var fs = 'YYYY-MM-DDHH:mm' 188 var fs = 'YYYY-MM-DDHH:mm'
160 ,st = moment(params.sDate + params.sTime, fs).format('X') 189 ,st = moment(params.sDate + params.sTime, fs).format('X')
161 ,et = moment(params.eDate + params.eTime, fs).format('X') 190 ,et = moment(params.eDate + params.eTime, fs).format('X')
162 ,nbbm = params.nbbm; 191 ,nbbm = params.nbbm;
163 192
164 - layer.msg('查询历史GPS...', {icon: 16, time: 0});  
165 - 193 + layer.msg('查询历史GPS...', {icon: 16, time: 0,shade:0.3});
166 $.ajax({ 194 $.ajax({
167 url: '/gps/gpsHistory/multiple', 195 url: '/gps/gpsHistory/multiple',
168 traditional: true, 196 traditional: true,
@@ -170,7 +198,7 @@ var playBack = (function() { @@ -170,7 +198,7 @@ var playBack = (function() {
170 success:function(rs){ 198 success:function(rs){
171 gpsArray = rs; 199 gpsArray = rs;
172 size = gpsArray.length; 200 size = gpsArray.length;
173 - layer.closeAll(); 201 + //layer.closeAll();
174 //切出轨迹回放面板 202 //切出轨迹回放面板
175 $('.mapRightWrap,.mapTools,.leftUtilsWrap').fadeOut(); 203 $('.mapRightWrap,.mapTools,.leftUtilsWrap').fadeOut();
176 $('.play-back-list,.play-back-btns,.progress-wrap').show(); 204 $('.play-back-list,.play-back-btns,.progress-wrap').show();
@@ -182,18 +210,27 @@ var playBack = (function() { @@ -182,18 +210,27 @@ var playBack = (function() {
182 //获取进度条宽度 210 //获取进度条宽度
183 pWidth = $('.progress-body').width(); 211 pWidth = $('.progress-body').width();
184 cell = pWidth / tRange; 212 cell = pWidth / tRange;
185 - console.log('gpsArray', gpsArray);  
186 //清理地图 213 //清理地图
187 getCurrMap().clear(); 214 getCurrMap().clear();
  215 +
  216 + firstCar = params.nbbm[0];
  217 + layer.msg('加载线路图层数据...', {icon: 16, time: 0,shade:0.3});
  218 + $.get('/realSchedule/findRouteByLine', {lineId: $('.mapRightWrap select[name=lineCode]').val()}
  219 + ,function(route){
  220 + lineRoute = route;
  221 + getCurrMap().drawLine(lineRoute);
  222 + //开始播放
  223 + play();
  224 + });
188 } 225 }
189 }); 226 });
190 }); 227 });
191 228
192 //默认值 229 //默认值
193 $('input[name=sDate]').val('2016-04-24'); 230 $('input[name=sDate]').val('2016-04-24');
194 - $('input[name=sTime]').val('03:10'); 231 + $('input[name=sTime]').val('04:00');
195 $('input[name=eDate]').val('2016-04-24'); 232 $('input[name=eDate]').val('2016-04-24');
196 - $('input[name=eTime]').val('03:50'); 233 + $('input[name=eTime]').val('04:40');
197 } 234 }
198 }; 235 };
199 236
@@ -204,11 +241,22 @@ var playBack = (function() { @@ -204,11 +241,22 @@ var playBack = (function() {
204 } 241 }
205 242
206 function play(){ 243 function play(){
  244 + if(topW == pWidth){
  245 + //从头再来
  246 + reset();
  247 + }
207 $('#progress-mark-time').show(); 248 $('#progress-mark-time').show();
208 $('.play-back-btns .playBtn').removeClass('fa-play').addClass('fa-pause').data('status', 1); 249 $('.play-back-btns .playBtn').removeClass('fa-play').addClass('fa-pause').data('status', 1);
209 start(); 250 start();
210 } 251 }
211 252
  253 + function reset(){
  254 + topW = 0;
  255 + $pmk.css('width', topW + 'px');
  256 + cIndex = 0;
  257 + $('.pback-logs').html('');
  258 + }
  259 +
212 var topW = 0; 260 var topW = 0;
213 function start(){ 261 function start(){
214 prgTimer = setTimeout(start, 1000); 262 prgTimer = setTimeout(start, 1000);
@@ -227,6 +275,8 @@ var playBack = (function() { @@ -227,6 +275,8 @@ var playBack = (function() {
227 } 275 }
228 276
229 function goTo(w){ 277 function goTo(w){
  278 + $('.pback-logs').html('');
  279 + cIndex = 0;
230 stop(); 280 stop();
231 topW = w; 281 topW = w;
232 showMarkText(w); 282 showMarkText(w);
src/main/resources/static/pages/mapmonitor/real/js/vehicle.js
@@ -47,7 +47,9 @@ var vehiclePanel = (function() { @@ -47,7 +47,9 @@ var vehiclePanel = (function() {
47 setTimeout(function(){ 47 setTimeout(function(){
48 //在地图上画出线路 48 //在地图上画出线路
49 var mapObj = getCurrMap(); 49 var mapObj = getCurrMap();
50 - mapObj.drawLine(lineCode); 50 + //从storage里获取路由数据
  51 + var route = JSON.parse(storage.getItem(lineCode + '_route'));
  52 + mapObj.drawLine(route);
51 //画GPS 53 //画GPS
52 mapObj.drawGpsMarker(showList); 54 mapObj.drawGpsMarker(showList);
53 }, 500); 55 }, 500);
src/main/resources/static/pages/mapmonitor/real/real.html
@@ -43,7 +43,7 @@ @@ -43,7 +43,7 @@
43 <!-- 轨迹回放面板 --> 43 <!-- 轨迹回放面板 -->
44 <div class="play-back-list animated fadeInRightBig"> 44 <div class="play-back-list animated fadeInRightBig">
45 <div class="pback-logs"> 45 <div class="pback-logs">
46 - <div class="pback-logs-item"> 46 + <!-- <div class="pback-logs-item">
47 W2B-012 进站 金桥路浦东大道站 47 W2B-012 进站 金桥路浦东大道站
48 <span class="pback-logs-item-date">07月17 12:40</span> 48 <span class="pback-logs-item-date">07月17 12:40</span>
49 </div> 49 </div>
@@ -154,7 +154,7 @@ @@ -154,7 +154,7 @@
154 <div class="pback-logs-item"> 154 <div class="pback-logs-item">
155 W2B-012 出站 金桥路浦东大道站 155 W2B-012 出站 金桥路浦东大道站
156 <span class="pback-logs-item-date">07月17 12:42</span> 156 <span class="pback-logs-item-date">07月17 12:42</span>
157 - </div> 157 + </div> -->
158 158
159 </div> 159 </div>
160 </div> 160 </div>
@@ -166,12 +166,12 @@ @@ -166,12 +166,12 @@
166 166
167 <div class="dropup" > 167 <div class="dropup" >
168 <span id="playSpeed" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 168 <span id="playSpeed" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
169 - <i class="fa fa-close"></i><span id="playSpeedText">1</span><i class="fa fa-angle-up" ></i> 169 + <i class="fa fa-close"></i><span id="playSpeedText">10</span><i class="fa fa-angle-up" ></i>
170 </span> 170 </span>
171 <ul class="dropdown-menu play-speed-select" > 171 <ul class="dropdown-menu play-speed-select" >
172 - <li data-speed=10><a href="javascript:;">10秒每帧 </a></li>  
173 - <li data-speed=5><a href="javascript:;">5秒每帧 </a></li>  
174 - <li data-speed=1><a href="javascript:;">1秒每帧</a></li> 172 + <li data-speed=10><a href="javascript:;">10秒 </a></li>
  173 + <li data-speed=5><a href="javascript:;">5秒 </a></li>
  174 + <li data-speed=1><a href="javascript:;">1秒</a></li>
175 </ul> 175 </ul>
176 </div> 176 </div>
177 177
src/main/resources/static/pages/mapmonitor/real/temps/playBack.html
1 -  
2 <script id="play_back_panel_temp" type="text/html"> 1 <script id="play_back_panel_temp" type="text/html">
3 <div class="alert alert-info animated flipInX"> 2 <div class="alert alert-info animated flipInX">
4 -<i class="fa fa-exclamation-circle" ></i> 最多跨一天回放,请尽量小范围的查询 S0I-058,S0I-055 ,隧道六线 </div> 3 +<i class="fa fa-exclamation-circle" ></i> 最多跨一天回放,请尽量小范围的查询 W2B-083 , W2B-084 , W2B-087 85路</div>
5 <form class="form-horizontal" role="form" id="playBackForm"> 4 <form class="form-horizontal" role="form" id="playBackForm">
6 <div class="form-body"> 5 <div class="form-body">
7 <div class="form-group"> 6 <div class="form-group">
@@ -31,9 +30,7 @@ @@ -31,9 +30,7 @@
31 <div class="form-group"> 30 <div class="form-group">
32 <label class="col-md-3 control-label">线路图层</label> 31 <label class="col-md-3 control-label">线路图层</label>
33 <div class="col-md-9"> 32 <div class="col-md-9">
34 - <select class="form-control" name="lineCode" >  
35 - <option>85路</option>  
36 - </select> 33 + <select class="form-control" name="lineCode" ></select>
37 </div> 34 </div>
38 </div> 35 </div>
39 </form> 36 </form>