Commit 63069cb55a632a024e993abbd7bb326581a387ca
1 parent
038dee30
update
Showing
9 changed files
with
205 additions
and
73 deletions
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
| ... | ... | @@ -679,9 +679,6 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 679 | 679 | map.put("directions_eq", 1); |
| 680 | 680 | List<Map<String, Object>> downList = sectionRouteService.getSectionRoute(map); |
| 681 | 681 | |
| 682 | - System.out.println(upList); | |
| 683 | - System.out.println(downList); | |
| 684 | - | |
| 685 | 682 | Map<String, Object> rs = new HashMap<>(); |
| 686 | 683 | |
| 687 | 684 | String upVectors = "", vec; | ... | ... |
src/main/java/com/bsth/vehicle/gpsdata/entity/ArrivalInfo.java
| ... | ... | @@ -24,14 +24,21 @@ public class ArrivalInfo { |
| 24 | 24 | Date createDate, Integer weeksYear) { |
| 25 | 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 | 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 | 43 | this.lineCode = lineCode; |
| 37 | 44 | this.upDown = upDown; |
| ... | ... | @@ -39,6 +46,7 @@ public class ArrivalInfo { |
| 39 | 46 | this.inOut = inOut; |
| 40 | 47 | this.createDate = createDate; |
| 41 | 48 | this.weeksYear = weeksYear; |
| 49 | + this.stopName = stopName; | |
| 42 | 50 | } |
| 43 | 51 | |
| 44 | 52 | /** |
| ... | ... | @@ -62,9 +70,14 @@ public class ArrivalInfo { |
| 62 | 70 | private Integer upDown; |
| 63 | 71 | |
| 64 | 72 | /** |
| 65 | - * 站点 | |
| 73 | + * 站点编码 | |
| 66 | 74 | */ |
| 67 | 75 | private String stopNo; |
| 76 | + | |
| 77 | + /** | |
| 78 | + * 站点名称 | |
| 79 | + */ | |
| 80 | + private String stopName; | |
| 68 | 81 | |
| 69 | 82 | /** |
| 70 | 83 | * 0: 进 1:出 |
| ... | ... | @@ -141,4 +154,12 @@ public class ArrivalInfo { |
| 141 | 154 | public void setTs(Long ts) { |
| 142 | 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 | 12 | import java.util.List; |
| 13 | 13 | import java.util.Map; |
| 14 | 14 | |
| 15 | +import org.slf4j.Logger; | |
| 16 | +import org.slf4j.LoggerFactory; | |
| 15 | 17 | import org.springframework.stereotype.Service; |
| 16 | 18 | |
| 17 | 19 | import com.bsth.util.DateUtils; |
| ... | ... | @@ -19,6 +21,7 @@ import com.bsth.util.TransGPS; |
| 19 | 21 | import com.bsth.util.TransGPS.Location; |
| 20 | 22 | import com.bsth.util.db.DBUtils_MS; |
| 21 | 23 | import com.bsth.vehicle.common.CommonMapped; |
| 24 | +import com.bsth.vehicle.gpsdata.entity.ArrivalInfo; | |
| 22 | 25 | |
| 23 | 26 | @Service |
| 24 | 27 | public class GpsDataServiceImpl implements GpsDataService{ |
| ... | ... | @@ -26,6 +29,13 @@ public class GpsDataServiceImpl implements GpsDataService{ |
| 26 | 29 | /** 历史gps查询最大范围 24小时 */ |
| 27 | 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 | 39 | //历史gps查询 |
| 30 | 40 | @Override |
| 31 | 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 | 121 | if(et - st > GPS_RANGE) |
| 112 | 122 | return list; |
| 113 | 123 | |
| 114 | - //转换设备号 | |
| 124 | + //车辆编码转换成设备号 | |
| 115 | 125 | String[] devices = new String[nbbmArray.length]; |
| 116 | 126 | for(int i = 0; i < nbbmArray.length; i ++){ |
| 117 | 127 | devices[i] = CommonMapped.vehicDeviceBiMap.inverse().get(nbbmArray[i]); |
| 118 | 128 | } |
| 119 | - //String device = CommonMapped.vehicDeviceBiMap.inverse().get(nbbm); | |
| 120 | 129 | //day_of_year |
| 121 | 130 | Calendar sCal = Calendar.getInstance(); |
| 122 | 131 | sCal.setTime(new Date(st * 1000)); |
| ... | ... | @@ -126,21 +135,33 @@ public class GpsDataServiceImpl implements GpsDataService{ |
| 126 | 135 | eCal.setTime(new Date(et * 1000)); |
| 127 | 136 | int eDayOfYear = /*eCal.get(Calendar.DAY_OF_YEAR)*/200; |
| 128 | 137 | |
| 138 | + Calendar weekCal = Calendar.getInstance(); | |
| 139 | + | |
| 129 | 140 | //如果是同一天 |
| 130 | 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 | 145 | else{ |
| 134 | 146 | //跨天 |
| 147 | + Long tempSt = 0L, tempEt = 0L; | |
| 135 | 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 | 166 | sCal.add(Calendar.DATE, 1); |
| 146 | 167 | } |
| ... | ... | @@ -157,7 +178,7 @@ public class GpsDataServiceImpl implements GpsDataService{ |
| 157 | 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 | 182 | List<Map<String, Object>> list = new ArrayList<>(); |
| 162 | 183 | Map<String, Object> map = null; |
| 163 | 184 | |
| ... | ... | @@ -167,10 +188,10 @@ public class GpsDataServiceImpl implements GpsDataService{ |
| 167 | 188 | inv += ("'" + device + "',"); |
| 168 | 189 | inv = inv.substring(0, inv.length() - 1); |
| 169 | 190 | |
| 191 | + //查询到离站数据 | |
| 192 | + Map<String, ArrivalInfo> arrivalMap = findArrivalByTs(/*weekOfYear*/30, st, et, inv); | |
| 193 | + | |
| 170 | 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 | 195 | try{ |
| 175 | 196 | conn = DBUtils_MS.getConnection(); |
| 176 | 197 | ps = conn.prepareStatement(sql); |
| ... | ... | @@ -182,7 +203,7 @@ public class GpsDataServiceImpl implements GpsDataService{ |
| 182 | 203 | rs = ps.executeQuery(); |
| 183 | 204 | Float lon, lat; |
| 184 | 205 | Location bdLoc, gdLoc; |
| 185 | - int upDown; | |
| 206 | + int upDown,inOutStop; | |
| 186 | 207 | while (rs.next()) { |
| 187 | 208 | upDown = getUpOrDown(rs.getLong("SERVICE_STATE")); |
| 188 | 209 | map = new HashMap<>(); |
| ... | ... | @@ -201,7 +222,14 @@ public class GpsDataServiceImpl implements GpsDataService{ |
| 201 | 222 | map.put("device", rs.getString("DEVICE_ID")); |
| 202 | 223 | map.put("ts", rs.getLong("TS")); |
| 203 | 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 | 233 | map.put("nbbm", CommonMapped.vehicDeviceBiMap.get(rs.getString("DEVICE_ID"))); |
| 206 | 234 | map.put("state", 0); |
| 207 | 235 | //上下行 |
| ... | ... | @@ -209,18 +237,42 @@ public class GpsDataServiceImpl implements GpsDataService{ |
| 209 | 237 | list.add(map); |
| 210 | 238 | } |
| 211 | 239 | }catch(Exception e){ |
| 212 | - e.printStackTrace(); | |
| 240 | + logger.error("", e); | |
| 213 | 241 | }finally { |
| 214 | 242 | DBUtils_MS.close(rs, ps, conn); |
| 215 | 243 | } |
| 216 | 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 | 88 | .mapRightWrap.to_playBack{ |
| 89 | 89 | transform:rotateY(180deg); |
| 90 | 90 | height: 476px; |
| 91 | - width: 370px | |
| 91 | + width: 390px | |
| 92 | 92 | } |
| 93 | 93 | |
| 94 | 94 | .mapRightWrap.to_playBack .alert{ |
| ... | ... | @@ -698,8 +698,8 @@ html{ |
| 698 | 698 | } |
| 699 | 699 | |
| 700 | 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 | 705 | .play-back-btns>i.playBtn{ |
| ... | ... | @@ -768,8 +768,9 @@ html{ |
| 768 | 768 | margin-right: 12px; |
| 769 | 769 | color: #565555; |
| 770 | 770 | padding: 4px 8px 4px 13px; |
| 771 | - border-radius: 5px !important; | |
| 772 | 771 | cursor: pointer; |
| 772 | + border-left: 1px solid #e1e5ec; | |
| 773 | + border-right: 1px solid #e1e5ec; | |
| 773 | 774 | } |
| 774 | 775 | |
| 775 | 776 | #playSpeed .fa-angle-up{ | ... | ... |
src/main/resources/static/pages/mapmonitor/real/js/map_platform.js
| ... | ... | @@ -48,6 +48,9 @@ var realMap = (function() { |
| 48 | 48 | //线路路由 |
| 49 | 49 | var polylines; |
| 50 | 50 | |
| 51 | + //百度 -轨迹回放点聚合 | |
| 52 | + //var historyClusterer; | |
| 53 | + | |
| 51 | 54 | //设备号和marker对照 |
| 52 | 55 | var markersMap; |
| 53 | 56 | var real_map = { |
| ... | ... | @@ -81,6 +84,7 @@ var realMap = (function() { |
| 81 | 84 | var ctrl = new BMapLib.TrafficControl(); |
| 82 | 85 | map.addControl(ctrl); |
| 83 | 86 | |
| 87 | + //historyClusterer = new BMapLib.MarkerClusterer(map, {isAverangeCenter : true,minClusterSize : 2}) | |
| 84 | 88 | var isVisible; |
| 85 | 89 | trafficBtn.on('click', function() { |
| 86 | 90 | if (isVisible) { |
| ... | ... | @@ -167,13 +171,13 @@ var realMap = (function() { |
| 167 | 171 | |
| 168 | 172 | local.search(val); |
| 169 | 173 | }, |
| 170 | - drawLine: function(lineCode){ | |
| 174 | + drawLine: function(route){ | |
| 171 | 175 | var map = currentMap.map; |
| 172 | 176 | map.clearOverlays(); |
| 173 | 177 | polylines = []; |
| 174 | 178 | //画线路 |
| 175 | 179 | //从localStorage里读取路由信息 |
| 176 | - var route = JSON.parse(storage.getItem(lineCode + '_route')); | |
| 180 | + //var route = JSON.parse(storage.getItem(lineCode + '_route')); | |
| 177 | 181 | var upLineOps = {strokeColor:"blue", strokeWeight:6, strokeOpacity:0.5} |
| 178 | 182 | ,downLineOps = {strokeColor:"red", strokeWeight:6, strokeOpacity:0.5}; |
| 179 | 183 | |
| ... | ... | @@ -251,14 +255,22 @@ var realMap = (function() { |
| 251 | 255 | }, |
| 252 | 256 | //绘制轨迹回放 marker |
| 253 | 257 | addHistoryMarker: function(gps){ |
| 254 | - //var marker = new BMap.Marker(new BMap.Point(gps.bd_lon, gps.bd_lat)); | |
| 258 | + | |
| 255 | 259 | var marker = bdHistoryMarker(gps); |
| 256 | 260 | currentMap.map.addOverlay(marker); |
| 261 | + | |
| 262 | + //historyClusterer.addMarker(marker); | |
| 257 | 263 | return marker; |
| 258 | 264 | }, |
| 259 | 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 | 390 | placeSearch.search(val); |
| 379 | 391 | }); |
| 380 | 392 | }, |
| 381 | - drawLine: function(lineCode){ | |
| 393 | + drawLine: function(route){ | |
| 382 | 394 | polylines = []; |
| 383 | 395 | var map = currentMap.map; |
| 384 | 396 | map.clearMap(); |
| 385 | 397 | |
| 386 | - var route = JSON.parse(storage.getItem(lineCode + '_route')); | |
| 398 | + //var route = JSON.parse(storage.getItem(lineCode + '_route')); | |
| 387 | 399 | var upArr = [], downArr = []; |
| 388 | 400 | |
| 389 | 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 | 10 | var sTime; |
| 11 | 11 | //结束时间戳 |
| 12 | 12 | var eTime; |
| 13 | - //10秒一个进度 | |
| 14 | 13 | var tRange; |
| 15 | 14 | //进度条宽度 |
| 16 | 15 | var pWidth; |
| ... | ... | @@ -28,9 +27,13 @@ var playBack = (function() { |
| 28 | 27 | var cIndex = 0; |
| 29 | 28 | var size; |
| 30 | 29 | //播放速度 |
| 31 | - var speed = 1; | |
| 30 | + var speed = parseInt($('#playSpeedText').text()); | |
| 32 | 31 | //车辆编码和marker映射 |
| 33 | 32 | var markerMap = {}; |
| 33 | + //线路路由数据 | |
| 34 | + var lineRoute; | |
| 35 | + //默认以第一辆车为焦点 | |
| 36 | + var firstCar; | |
| 34 | 37 | //S0I-058,S0I-055 ,隧道六线 |
| 35 | 38 | |
| 36 | 39 | function getCurrMap(){ |
| ... | ... | @@ -66,9 +69,16 @@ var playBack = (function() { |
| 66 | 69 | //退出 |
| 67 | 70 | $('.play-back-close').on('click', function(){ |
| 68 | 71 | stop(); |
| 72 | + //重置位置 | |
| 69 | 73 | $pmk.css('width', '0px'); |
| 70 | 74 | topW = 0; |
| 71 | 75 | $presMark.css('left', '0px'); |
| 76 | + //删掉marker映射 | |
| 77 | + markerMap = {}; | |
| 78 | + //清理地图 | |
| 79 | + getCurrMap().clear(); | |
| 80 | + //坐标归0 | |
| 81 | + cIndex = 0; | |
| 72 | 82 | //动画 |
| 73 | 83 | $('.play-back-list').removeClass('fadeInRightBig').addClass('fadeOutRightBig'); |
| 74 | 84 | $('.play-back-btns,.progress-wrap').removeClass('fadeInUpBig').addClass('fadeOutDownBig'); |
| ... | ... | @@ -85,24 +95,40 @@ var playBack = (function() { |
| 85 | 95 | var t = showMark($presMark, w); |
| 86 | 96 | //时间戳找gps |
| 87 | 97 | var gps; |
| 88 | - console.log('showMarkText', cIndex, t); | |
| 89 | - | |
| 90 | 98 | var marker; |
| 91 | 99 | for(;cIndex < size; cIndex ++){ |
| 92 | 100 | gps = gpsArray[cIndex]; |
| 93 | 101 | if(gps.ts <= t){ |
| 94 | 102 | marker = markerMap[gps.nbbm]; |
| 95 | 103 | if(marker) |
| 96 | - getCurrMap().moveMarker(marker, gps.bd_lon, gps.bd_lat);//移动marker | |
| 104 | + getCurrMap().moveMarker(marker, gps);//移动marker | |
| 97 | 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 | 113 | else{ |
| 101 | 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 | 172 | $('.mapRightWrap').html(htmlStr); |
| 147 | 173 | //车辆搜索框 |
| 148 | 174 | createVehSearch($('.mapRightWrap select[name="nbbm[]"]')); |
| 149 | - //线路选择框 | |
| 175 | + //线路下拉框 | |
| 176 | + var lineData = [{id:'-1', text: '请选择...'}]; | |
| 150 | 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 | 185 | $('#playBackBtn').on('click', function(){ |
| 156 | 186 | var params = $('#playBackForm').serializeJSON(); |
| 157 | - console.log(params); | |
| 158 | 187 | //查询历史gps数据 |
| 159 | 188 | var fs = 'YYYY-MM-DDHH:mm' |
| 160 | 189 | ,st = moment(params.sDate + params.sTime, fs).format('X') |
| 161 | 190 | ,et = moment(params.eDate + params.eTime, fs).format('X') |
| 162 | 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 | 194 | $.ajax({ |
| 167 | 195 | url: '/gps/gpsHistory/multiple', |
| 168 | 196 | traditional: true, |
| ... | ... | @@ -170,7 +198,7 @@ var playBack = (function() { |
| 170 | 198 | success:function(rs){ |
| 171 | 199 | gpsArray = rs; |
| 172 | 200 | size = gpsArray.length; |
| 173 | - layer.closeAll(); | |
| 201 | + //layer.closeAll(); | |
| 174 | 202 | //切出轨迹回放面板 |
| 175 | 203 | $('.mapRightWrap,.mapTools,.leftUtilsWrap').fadeOut(); |
| 176 | 204 | $('.play-back-list,.play-back-btns,.progress-wrap').show(); |
| ... | ... | @@ -182,18 +210,27 @@ var playBack = (function() { |
| 182 | 210 | //获取进度条宽度 |
| 183 | 211 | pWidth = $('.progress-body').width(); |
| 184 | 212 | cell = pWidth / tRange; |
| 185 | - console.log('gpsArray', gpsArray); | |
| 186 | 213 | //清理地图 |
| 187 | 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 | 230 | $('input[name=sDate]').val('2016-04-24'); |
| 194 | - $('input[name=sTime]').val('03:10'); | |
| 231 | + $('input[name=sTime]').val('04:00'); | |
| 195 | 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 | 241 | } |
| 205 | 242 | |
| 206 | 243 | function play(){ |
| 244 | + if(topW == pWidth){ | |
| 245 | + //从头再来 | |
| 246 | + reset(); | |
| 247 | + } | |
| 207 | 248 | $('#progress-mark-time').show(); |
| 208 | 249 | $('.play-back-btns .playBtn').removeClass('fa-play').addClass('fa-pause').data('status', 1); |
| 209 | 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 | 260 | var topW = 0; |
| 213 | 261 | function start(){ |
| 214 | 262 | prgTimer = setTimeout(start, 1000); |
| ... | ... | @@ -227,6 +275,8 @@ var playBack = (function() { |
| 227 | 275 | } |
| 228 | 276 | |
| 229 | 277 | function goTo(w){ |
| 278 | + $('.pback-logs').html(''); | |
| 279 | + cIndex = 0; | |
| 230 | 280 | stop(); |
| 231 | 281 | topW = w; |
| 232 | 282 | showMarkText(w); | ... | ... |
src/main/resources/static/pages/mapmonitor/real/js/vehicle.js
| ... | ... | @@ -47,7 +47,9 @@ var vehiclePanel = (function() { |
| 47 | 47 | setTimeout(function(){ |
| 48 | 48 | //在地图上画出线路 |
| 49 | 49 | var mapObj = getCurrMap(); |
| 50 | - mapObj.drawLine(lineCode); | |
| 50 | + //从storage里获取路由数据 | |
| 51 | + var route = JSON.parse(storage.getItem(lineCode + '_route')); | |
| 52 | + mapObj.drawLine(route); | |
| 51 | 53 | //画GPS |
| 52 | 54 | mapObj.drawGpsMarker(showList); |
| 53 | 55 | }, 500); | ... | ... |
src/main/resources/static/pages/mapmonitor/real/real.html
| ... | ... | @@ -43,7 +43,7 @@ |
| 43 | 43 | <!-- 轨迹回放面板 --> |
| 44 | 44 | <div class="play-back-list animated fadeInRightBig"> |
| 45 | 45 | <div class="pback-logs"> |
| 46 | - <div class="pback-logs-item"> | |
| 46 | + <!-- <div class="pback-logs-item"> | |
| 47 | 47 | W2B-012 进站 金桥路浦东大道站 |
| 48 | 48 | <span class="pback-logs-item-date">07月17 12:40</span> |
| 49 | 49 | </div> |
| ... | ... | @@ -154,7 +154,7 @@ |
| 154 | 154 | <div class="pback-logs-item"> |
| 155 | 155 | W2B-012 出站 金桥路浦东大道站 |
| 156 | 156 | <span class="pback-logs-item-date">07月17 12:42</span> |
| 157 | - </div> | |
| 157 | + </div> --> | |
| 158 | 158 | |
| 159 | 159 | </div> |
| 160 | 160 | </div> |
| ... | ... | @@ -166,12 +166,12 @@ |
| 166 | 166 | |
| 167 | 167 | <div class="dropup" > |
| 168 | 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 | 170 | </span> |
| 171 | 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 | 175 | </ul> |
| 176 | 176 | </div> |
| 177 | 177 | ... | ... |
src/main/resources/static/pages/mapmonitor/real/temps/playBack.html
| 1 | - | |
| 2 | 1 | <script id="play_back_panel_temp" type="text/html"> |
| 3 | 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 | 4 | <form class="form-horizontal" role="form" id="playBackForm"> |
| 6 | 5 | <div class="form-body"> |
| 7 | 6 | <div class="form-group"> |
| ... | ... | @@ -31,9 +30,7 @@ |
| 31 | 30 | <div class="form-group"> |
| 32 | 31 | <label class="col-md-3 control-label">线路图层</label> |
| 33 | 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 | 34 | </div> |
| 38 | 35 | </div> |
| 39 | 36 | </form> | ... | ... |