Commit 62581fade9da0bd8670045a1ae1361c2474c5a0a
1 parent
ce14e4e1
update...
Showing
10 changed files
with
847 additions
and
142 deletions
src/main/java/com/bsth/controller/geo_data/GeoDataController.java
| ... | ... | @@ -48,6 +48,12 @@ public class GeoDataController { |
| 48 | 48 | return geoDataService.addNewStationRoute(lineCode, upDown, versions, stationName, lat, lng, prevRouteId); |
| 49 | 49 | } |
| 50 | 50 | |
| 51 | + @RequestMapping(value = "addNewRoadRoute",method = RequestMethod.POST) | |
| 52 | + public Map<String, Object> addNewRoadRoute(@RequestParam String lineCode,@RequestParam int versions,@RequestParam int upDown | |
| 53 | + ,@RequestParam String sectionName,@RequestParam String crosesRoad,@RequestParam String coords,@RequestParam int prevRouteId){ | |
| 54 | + return geoDataService.addNewRoadRoute(lineCode, upDown, versions, sectionName, crosesRoad, coords, prevRouteId); | |
| 55 | + } | |
| 56 | + | |
| 51 | 57 | @RequestMapping(value = "destroyStation",method = RequestMethod.POST) |
| 52 | 58 | public Map<String, Object> destroyStation(GeoStation station){ |
| 53 | 59 | return geoDataService.destroyStation(station); |
| ... | ... | @@ -57,4 +63,9 @@ public class GeoDataController { |
| 57 | 63 | public Map<String, Object> updateRoadInfo(GeoRoad road){ |
| 58 | 64 | return geoDataService.updateRoadInfo(road); |
| 59 | 65 | } |
| 66 | + | |
| 67 | + @RequestMapping(value = "destroyRoad",method = RequestMethod.POST) | |
| 68 | + public Map<String, Object> destroyRoad(GeoRoad road){ | |
| 69 | + return geoDataService.destroyRoad(road); | |
| 70 | + } | |
| 60 | 71 | } |
| 61 | 72 | \ No newline at end of file | ... | ... |
src/main/java/com/bsth/service/geo_data/GeoDataService.java
| ... | ... | @@ -25,4 +25,8 @@ public interface GeoDataService { |
| 25 | 25 | Map<String,Object> destroyStation(GeoStation station); |
| 26 | 26 | |
| 27 | 27 | Map<String,Object> updateRoadInfo(GeoRoad road); |
| 28 | + | |
| 29 | + Map<String,Object> destroyRoad(GeoRoad road); | |
| 30 | + | |
| 31 | + Map<String,Object> addNewRoadRoute(String lineCode, int upDown, int versions, String sectionName,String crosesRoad, String coords, int prevRouteId); | |
| 28 | 32 | } | ... | ... |
src/main/java/com/bsth/service/geo_data/impl/GeoDataServiceImpl.java
| ... | ... | @@ -168,7 +168,7 @@ public class GeoDataServiceImpl implements GeoDataService { |
| 168 | 168 | } |
| 169 | 169 | |
| 170 | 170 | @Override |
| 171 | - public Map<String, Object> addNewStationRoute(String lineCode, int upDown, int versions, String stationName, Float lat, Float lng, int prevRouteId) { | |
| 171 | + public Map<String, Object> addNewRoadRoute(String lineCode, int upDown, int versions, String sectionName,String crosesRoad, String coords, int prevRouteId) { | |
| 172 | 172 | Map<String, Object> rs = new HashMap<>(); |
| 173 | 173 | |
| 174 | 174 | //编程式事务 |
| ... | ... | @@ -180,11 +180,111 @@ public class GeoDataServiceImpl implements GeoDataService { |
| 180 | 180 | //根据站点编码,查询站点ID |
| 181 | 181 | int lineId = jdbcTemplate.queryForObject("select id from bsth_c_line where line_code=" + lineCode, Integer.class); |
| 182 | 182 | |
| 183 | - String sql = "select * from bsth_c_ls_stationroute where line_code='"+lineCode+"' and line="+lineId+" and directions="+upDown+" and destroy=0 and versions=" + versions; | |
| 183 | + String sql = "select * from bsth_c_ls_sectionroute where line_code='" + lineCode + "' and line=" + lineId + " and directions=" + upDown + " and destroy=0 and versions=" + versions; | |
| 184 | + List<SaveRoadRouteDTO> routes = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(SaveRoadRouteDTO.class)); | |
| 185 | + | |
| 186 | + Collections.sort(routes, new RoadRouteComp()); | |
| 187 | + | |
| 188 | + long sCode = GetUIDAndCode.getSectionId(); | |
| 189 | + //转wgs | |
| 190 | + String wgsCoord = "LINESTRING(" + bdPolygon2Wgs(coords) + ")"; | |
| 191 | + String bdCooed = "LINESTRING(" + coords + ")"; | |
| 192 | + //insert 路段 | |
| 193 | + sql = "insert into bsth_c_section(id, section_code, section_name, croses_road, bsection_vector, gsection_vector, create_date, update_date, versions) " + | |
| 194 | + " values(?,?,?,?,ST_GeomFromText('"+wgsCoord+"'),ST_GeomFromText('"+bdCooed+"'),sysdate(),sysdate(),?)"; | |
| 195 | + | |
| 196 | + jdbcTemplate.update(sql, sCode, sCode, sectionName, crosesRoad, 1); | |
| 197 | + | |
| 198 | + | |
| 199 | + SaveRoadRouteDTO srr; | |
| 200 | + int currentNo = -1, | |
| 201 | + no = 100, step = 100; | |
| 202 | + | |
| 203 | + if (prevRouteId == -1) { | |
| 204 | + //起点站 | |
| 205 | + currentNo = no; | |
| 206 | + no += step; | |
| 207 | + } | |
| 208 | + //重新排序路由 | |
| 209 | + for (int i = 0, size = routes.size(); i < size; i++) { | |
| 210 | + srr = routes.get(i); | |
| 211 | + srr.setSectionrouteCode(no += step); | |
| 212 | + if (srr.getId().intValue() == prevRouteId) { | |
| 213 | + no += step; | |
| 214 | + currentNo = no; | |
| 215 | + } | |
| 216 | + } | |
| 217 | + | |
| 218 | + srr = new SaveRoadRouteDTO(); | |
| 219 | + srr.setLine(lineId); | |
| 220 | + srr.setLineCode(lineCode); | |
| 221 | + srr.setDirections(upDown); | |
| 222 | + srr.setVersions(versions); | |
| 223 | + | |
| 224 | + srr.setSectionrouteCode(currentNo); | |
| 225 | + srr.setSection(sCode); | |
| 226 | + srr.setSectionCode(sCode + ""); | |
| 227 | + srr.setIsRoadeSpeed(0); | |
| 228 | + srr.setDestroy(0); | |
| 229 | + Date d = new Date(); | |
| 230 | + srr.setCreateDate(d); | |
| 231 | + srr.setUpdateDate(d); | |
| 232 | + | |
| 233 | + final List<SaveRoadRouteDTO> saveList = routes; | |
| 234 | + //insert 新路由 (ID自增) | |
| 235 | + jdbcTemplate.update("insert into bsth_c_ls_sectionroute(line_code, section_code, sectionroute_code, directions, line, section, create_date,update_date,versions,destroy,is_roade_speed)" + | |
| 236 | + " values(?,?,?,?,?,?,?,?,?,?,?)", srr.getLineCode(), srr.getSectionCode(), srr.getSectionrouteCode(), srr.getDirections(), srr.getLine(), srr.getSection(), srr.getCreateDate(), srr.getUpdateDate(), versions, srr.getDestroy(), srr.getIsRoadeSpeed()); | |
| 237 | + | |
| 238 | + // update 原路由 | |
| 239 | + jdbcTemplate.batchUpdate("update bsth_c_ls_sectionroute set sectionroute_code=? where id=?" | |
| 240 | + , new BatchPreparedStatementSetter() { | |
| 241 | + @Override | |
| 242 | + public void setValues(PreparedStatement ps, int i) throws SQLException { | |
| 243 | + SaveRoadRouteDTO srr = saveList.get(i); | |
| 244 | + ps.setInt(1, srr.getSectionrouteCode()); | |
| 245 | + ps.setInt(2, srr.getId()); | |
| 246 | + } | |
| 247 | + | |
| 248 | + @Override | |
| 249 | + public int getBatchSize() { | |
| 250 | + return saveList.size(); | |
| 251 | + } | |
| 252 | + }); | |
| 253 | + | |
| 254 | + tran.commit(status); | |
| 255 | + | |
| 256 | + //返回更新之后的数据 | |
| 257 | + List<GeoRoad> list = findRoadByUpdown(lineCode, upDown, versions); | |
| 258 | + rs.put("list", list); | |
| 259 | + rs.put("upDown", upDown); | |
| 260 | + rs.put("status", ResponseCode.SUCCESS); | |
| 261 | + } catch (Exception e) { | |
| 262 | + tran.rollback(status); | |
| 263 | + logger.error("", e); | |
| 264 | + rs.put("status", ResponseCode.ERROR); | |
| 265 | + rs.put("msg", "服务器出现异常"); | |
| 266 | + } | |
| 267 | + return rs; | |
| 268 | + } | |
| 269 | + | |
| 270 | + @Override | |
| 271 | + public Map<String, Object> addNewStationRoute(String lineCode, int upDown, int versions, String stationName, Float lat, Float lng, int prevRouteId) { | |
| 272 | + Map<String, Object> rs = new HashMap<>(); | |
| 273 | + | |
| 274 | + //编程式事务 | |
| 275 | + DataSourceTransactionManager tran = new DataSourceTransactionManager(jdbcTemplate.getDataSource()); | |
| 276 | + DefaultTransactionDefinition def = new DefaultTransactionDefinition(); | |
| 277 | + def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); | |
| 278 | + TransactionStatus status = tran.getTransaction(def); | |
| 279 | + try { | |
| 280 | + //根据线路编码,查询线路ID | |
| 281 | + int lineId = jdbcTemplate.queryForObject("select id from bsth_c_line where line_code=" + lineCode, Integer.class); | |
| 282 | + | |
| 283 | + String sql = "select * from bsth_c_ls_stationroute where line_code='" + lineCode + "' and line=" + lineId + " and directions=" + upDown + " and destroy=0 and versions=" + versions; | |
| 184 | 284 | List<SaveStationRouteDTO> routes = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(SaveStationRouteDTO.class)); |
| 185 | 285 | |
| 186 | - for(SaveStationRouteDTO s : routes){ | |
| 187 | - if(s.getStationName().equals(stationName)){ | |
| 286 | + for (SaveStationRouteDTO s : routes) { | |
| 287 | + if (s.getStationName().equals(stationName)) { | |
| 188 | 288 | |
| 189 | 289 | rs.put("status", ResponseCode.ERROR); |
| 190 | 290 | rs.put("msg", "重复的站点路由名称!"); |
| ... | ... | @@ -205,19 +305,19 @@ public class GeoDataServiceImpl implements GeoDataService { |
| 205 | 305 | |
| 206 | 306 | SaveStationRouteDTO sr; |
| 207 | 307 | int currentNo = -1, |
| 208 | - no = 100, step = 100; | |
| 308 | + no = 100, step = 100; | |
| 209 | 309 | |
| 210 | - if(prevRouteId == -1){ | |
| 310 | + if (prevRouteId == -1) { | |
| 211 | 311 | //起点站 |
| 212 | 312 | currentNo = no; |
| 213 | 313 | no += step; |
| 214 | 314 | } |
| 215 | 315 | //重新排序路由 |
| 216 | - for(int i = 0, size = routes.size(); i < size; i ++){ | |
| 316 | + for (int i = 0, size = routes.size(); i < size; i++) { | |
| 217 | 317 | sr = routes.get(i); |
| 218 | - sr.setStationRouteCode(no+=step); | |
| 219 | - if(sr.getId().intValue() == prevRouteId){ | |
| 220 | - no+=step; | |
| 318 | + sr.setStationRouteCode(no += step); | |
| 319 | + if (sr.getId().intValue() == prevRouteId) { | |
| 320 | + no += step; | |
| 221 | 321 | currentNo = no; |
| 222 | 322 | } |
| 223 | 323 | } |
| ... | ... | @@ -242,7 +342,7 @@ public class GeoDataServiceImpl implements GeoDataService { |
| 242 | 342 | |
| 243 | 343 | //重新标记mark |
| 244 | 344 | Collections.sort(routes, new StationRouteComp()); |
| 245 | - for(int i = 0, size = routes.size(); i < size; i ++){ | |
| 345 | + for (int i = 0, size = routes.size(); i < size; i++) { | |
| 246 | 346 | routes.get(i).setStationMark("Z"); |
| 247 | 347 | } |
| 248 | 348 | routes.get(0).setStationMark("B"); |
| ... | ... | @@ -251,39 +351,39 @@ public class GeoDataServiceImpl implements GeoDataService { |
| 251 | 351 | final List<SaveStationRouteDTO> saveList = routes; |
| 252 | 352 | //insert 新路由 (ID自增) |
| 253 | 353 | jdbcTemplate.update("insert into bsth_c_ls_stationroute(line, station, station_name, station_route_code, line_code, station_code, station_mark, distances, to_time, destroy, versions, create_date, update_date,directions) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?)" |
| 254 | - ,nsr.getLine(),nsr.getStation(),nsr.getStationName(),nsr.getStationRouteCode(),nsr.getLineCode(),nsr.getStationCode(),nsr.getStationMark() | |
| 255 | - ,nsr.getDistances(),nsr.getToTime(),nsr.getDestroy(),nsr.getVersions(),nsr.getCreateDate(),nsr.getUpdateDate(),nsr.getDirections()); | |
| 354 | + , nsr.getLine(), nsr.getStation(), nsr.getStationName(), nsr.getStationRouteCode(), nsr.getLineCode(), nsr.getStationCode(), nsr.getStationMark() | |
| 355 | + , nsr.getDistances(), nsr.getToTime(), nsr.getDestroy(), nsr.getVersions(), nsr.getCreateDate(), nsr.getUpdateDate(), nsr.getDirections()); | |
| 256 | 356 | |
| 257 | 357 | // update 原路由 |
| 258 | 358 | jdbcTemplate.batchUpdate("update bsth_c_ls_stationroute set line=?,station=?,station_name=?,station_route_code=?," + |
| 259 | - "line_code=?,station_code=?,station_mark=?,distances=?,to_time=?,destroy=?,versions=?,create_date=?,update_date=?,directions=?" + | |
| 359 | + "line_code=?,station_code=?,station_mark=?,distances=?,to_time=?,destroy=?,versions=?,create_date=?,update_date=?,directions=?" + | |
| 260 | 360 | " where id=?" |
| 261 | 361 | , new BatchPreparedStatementSetter() { |
| 262 | - @Override | |
| 263 | - public void setValues(PreparedStatement ps, int i) throws SQLException { | |
| 264 | - SaveStationRouteDTO sr = saveList.get(i); | |
| 265 | - ps.setInt(1, sr.getLine()); | |
| 266 | - ps.setLong(2, sr.getStation()); | |
| 267 | - ps.setString(3, sr.getStationName()); | |
| 268 | - ps.setInt(4, sr.getStationRouteCode()); | |
| 269 | - ps.setString(5, sr.getLineCode()); | |
| 270 | - ps.setString(6, sr.getStationCode()); | |
| 271 | - ps.setString(7, sr.getStationMark()); | |
| 272 | - ps.setDouble(8, sr.getDistances()); | |
| 273 | - ps.setDouble(9, sr.getToTime()); | |
| 274 | - ps.setInt(10, sr.getDestroy()); | |
| 275 | - ps.setInt(11, sr.getVersions()); | |
| 276 | - ps.setTimestamp(12, new java.sql.Timestamp(sr.getCreateDate().getTime())); | |
| 277 | - ps.setTimestamp(13, new java.sql.Timestamp(sr.getUpdateDate().getTime())); | |
| 278 | - ps.setInt(14, sr.getDirections()); | |
| 279 | - ps.setInt(15, sr.getId()); | |
| 280 | - } | |
| 281 | - | |
| 282 | - @Override | |
| 283 | - public int getBatchSize() { | |
| 284 | - return saveList.size(); | |
| 285 | - } | |
| 286 | - }); | |
| 362 | + @Override | |
| 363 | + public void setValues(PreparedStatement ps, int i) throws SQLException { | |
| 364 | + SaveStationRouteDTO sr = saveList.get(i); | |
| 365 | + ps.setInt(1, sr.getLine()); | |
| 366 | + ps.setLong(2, sr.getStation()); | |
| 367 | + ps.setString(3, sr.getStationName()); | |
| 368 | + ps.setInt(4, sr.getStationRouteCode()); | |
| 369 | + ps.setString(5, sr.getLineCode()); | |
| 370 | + ps.setString(6, sr.getStationCode()); | |
| 371 | + ps.setString(7, sr.getStationMark()); | |
| 372 | + ps.setDouble(8, sr.getDistances()); | |
| 373 | + ps.setDouble(9, sr.getToTime()); | |
| 374 | + ps.setInt(10, sr.getDestroy()); | |
| 375 | + ps.setInt(11, sr.getVersions()); | |
| 376 | + ps.setTimestamp(12, new java.sql.Timestamp(sr.getCreateDate().getTime())); | |
| 377 | + ps.setTimestamp(13, new java.sql.Timestamp(sr.getUpdateDate().getTime())); | |
| 378 | + ps.setInt(14, sr.getDirections()); | |
| 379 | + ps.setInt(15, sr.getId()); | |
| 380 | + } | |
| 381 | + | |
| 382 | + @Override | |
| 383 | + public int getBatchSize() { | |
| 384 | + return saveList.size(); | |
| 385 | + } | |
| 386 | + }); | |
| 287 | 387 | |
| 288 | 388 | tran.commit(status); |
| 289 | 389 | |
| ... | ... | @@ -302,9 +402,9 @@ public class GeoDataServiceImpl implements GeoDataService { |
| 302 | 402 | return rs; |
| 303 | 403 | } |
| 304 | 404 | |
| 305 | - private List<GeoStation> findByUpdown(String lineCode, int upDown, int versions){ | |
| 405 | + private List<GeoStation> findByUpdown(String lineCode, int upDown, int versions) { | |
| 306 | 406 | //返回更新之后的数据 |
| 307 | - String sql = "select t1.*,t2.g_lonx,g_laty,ST_AsText(g_polygon_grid) as g_polygon_grid,radius,shapes_type from (select id,station_name,station_route_code,line_code,station_code,station_mark,versions,directions from bsth_c_ls_stationroute where line=" + lineCode + " and directions="+upDown+" and destroy=0 and versions="+versions+") t1 LEFT JOIN bsth_c_station t2 on t1.station_code=t2.station_cod"; | |
| 407 | + String sql = "select t1.*,t2.g_lonx,g_laty,ST_AsText(g_polygon_grid) as g_polygon_grid,radius,shapes_type from (select id,station_name,station_route_code,line_code,station_code,station_mark,versions,directions from bsth_c_ls_stationroute where line=" + lineCode + " and directions=" + upDown + " and destroy=0 and versions=" + versions + ") t1 LEFT JOIN bsth_c_station t2 on t1.station_code=t2.station_cod"; | |
| 308 | 408 | List<GeoStation> list = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(GeoStation.class)); |
| 309 | 409 | |
| 310 | 410 | for (GeoStation station : list) { |
| ... | ... | @@ -314,6 +414,17 @@ public class GeoDataServiceImpl implements GeoDataService { |
| 314 | 414 | return list; |
| 315 | 415 | } |
| 316 | 416 | |
| 417 | + private List<GeoRoad> findRoadByUpdown(String lineCode, int upDown, int versions) { | |
| 418 | + //返回更新之后的数据 | |
| 419 | + String sql = "select t1.*,t2.section_name,t2.croses_road,ST_AsText(t2.gsection_vector) as gsection_vector from (select id,sectionroute_code,directions,line_code,section_code,versions from bsth_c_ls_sectionroute where line='" + lineCode + "' and directions=" + upDown + " and destroy=0 and versions=" + versions + ") t1 LEFT JOIN bsth_c_section t2 on t1.section_code=t2.section_code"; | |
| 420 | + List<GeoRoad> list = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(GeoRoad.class)); | |
| 421 | + | |
| 422 | + for (GeoRoad road : list) { | |
| 423 | + road.setBdCoords(multiWgsToBd(road.getGsectionVector(), 11, 2)); | |
| 424 | + } | |
| 425 | + return list; | |
| 426 | + } | |
| 427 | + | |
| 317 | 428 | @Override |
| 318 | 429 | public Map<String, Object> destroyStation(GeoStation station) { |
| 319 | 430 | Map<String, Object> rs = new HashMap<>(); |
| ... | ... | @@ -335,6 +446,26 @@ public class GeoDataServiceImpl implements GeoDataService { |
| 335 | 446 | } |
| 336 | 447 | |
| 337 | 448 | @Override |
| 449 | + public Map<String, Object> destroyRoad(GeoRoad road) { | |
| 450 | + Map<String, Object> rs = new HashMap<>(); | |
| 451 | + | |
| 452 | + try { | |
| 453 | + String sql = "update bsth_c_ls_sectionroute set destroy=1 where id=?"; | |
| 454 | + jdbcTemplate.update(sql, road.getId()); | |
| 455 | + | |
| 456 | + //返回更新之后的数据 | |
| 457 | + List<GeoRoad> list = findRoadByUpdown(road.getLineCode(), road.getDirections(), road.getVersions()); | |
| 458 | + rs.put("list", list); | |
| 459 | + rs.put("status", ResponseCode.SUCCESS); | |
| 460 | + } catch (Exception e) { | |
| 461 | + logger.error("", e); | |
| 462 | + rs.put("status", ResponseCode.ERROR); | |
| 463 | + rs.put("msg", "服务器出现异常"); | |
| 464 | + } | |
| 465 | + return rs; | |
| 466 | + } | |
| 467 | + | |
| 468 | + @Override | |
| 338 | 469 | public Map<String, Object> updateRoadInfo(GeoRoad road) { |
| 339 | 470 | Map<String, Object> rs = new HashMap<>(); |
| 340 | 471 | |
| ... | ... | @@ -378,14 +509,14 @@ public class GeoDataServiceImpl implements GeoDataService { |
| 378 | 509 | return s; |
| 379 | 510 | } |
| 380 | 511 | |
| 381 | - private GeoRoad findOneRoad(int id){ | |
| 382 | - String sql = "SELECT t1.*, t2.section_name,t2.croses_road,ST_AsText (t2.gsection_vector) AS gsection_vector FROM (SELECT id,sectionroute_code,directions,line_code,section_code,versions FROM bsth_c_ls_sectionroute WHERE id="+id+") t1 LEFT JOIN bsth_c_section t2 ON t1.section_code = t2.section_code"; | |
| 512 | + private GeoRoad findOneRoad(int id) { | |
| 513 | + String sql = "SELECT t1.*, t2.section_name,t2.croses_road,ST_AsText (t2.gsection_vector) AS gsection_vector FROM (SELECT id,sectionroute_code,directions,line_code,section_code,versions FROM bsth_c_ls_sectionroute WHERE id=" + id + ") t1 LEFT JOIN bsth_c_section t2 ON t1.section_code = t2.section_code"; | |
| 383 | 514 | List<GeoRoad> list = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(GeoRoad.class)); |
| 384 | 515 | |
| 385 | 516 | for (GeoRoad road : list) { |
| 386 | 517 | road.setBdCoords(multiWgsToBd(road.getGsectionVector(), 11, 2)); |
| 387 | 518 | } |
| 388 | - return list.size() > 0 ?list.get(0):null; | |
| 519 | + return list.size() > 0 ? list.get(0) : null; | |
| 389 | 520 | } |
| 390 | 521 | |
| 391 | 522 | private String bdPolygon2Wgs(String bdPolygon) { |
| ... | ... | @@ -434,4 +565,12 @@ public class GeoDataServiceImpl implements GeoDataService { |
| 434 | 565 | return s1.getStationRouteCode() - s2.getStationRouteCode(); |
| 435 | 566 | } |
| 436 | 567 | } |
| 568 | + | |
| 569 | + private static class RoadRouteComp implements Comparator<SaveRoadRouteDTO> { | |
| 570 | + | |
| 571 | + @Override | |
| 572 | + public int compare(SaveRoadRouteDTO s1, SaveRoadRouteDTO s2) { | |
| 573 | + return s1.getSectionrouteCode() - s2.getSectionrouteCode(); | |
| 574 | + } | |
| 575 | + } | |
| 437 | 576 | } |
| 438 | 577 | \ No newline at end of file | ... | ... |
src/main/java/com/bsth/service/geo_data/impl/SaveRoadRouteDTO.java
0 → 100644
| 1 | +package com.bsth.service.geo_data.impl; | |
| 2 | + | |
| 3 | +import java.util.Date; | |
| 4 | + | |
| 5 | +/** | |
| 6 | + * Created by panzhao on 2017/12/17. | |
| 7 | + */ | |
| 8 | +public class SaveRoadRouteDTO { | |
| 9 | + | |
| 10 | + private Integer id; | |
| 11 | + | |
| 12 | + // 路段路由序号 | |
| 13 | + private Integer sectionrouteCode; | |
| 14 | + | |
| 15 | + // 线路编号 | |
| 16 | + private String lineCode; | |
| 17 | + | |
| 18 | + // 路段编号 | |
| 19 | + private String sectionCode; | |
| 20 | + | |
| 21 | + // 路段路由方向 | |
| 22 | + private Integer directions; | |
| 23 | + | |
| 24 | + // 版本号 | |
| 25 | + private Integer versions; | |
| 26 | + | |
| 27 | + // 是否撤销 | |
| 28 | + private Integer destroy; | |
| 29 | + | |
| 30 | + /** 是否有路段限速数据 <0:分段;1:未分段>*/ | |
| 31 | + private Integer isRoadeSpeed; | |
| 32 | + | |
| 33 | + // 描述 | |
| 34 | + private String descriptions; | |
| 35 | + | |
| 36 | + // 创建人 | |
| 37 | + private Integer createBy; | |
| 38 | + | |
| 39 | + // 修改人 | |
| 40 | + private Integer updateBy; | |
| 41 | + | |
| 42 | + // 创建日期 | |
| 43 | + private Date createDate; | |
| 44 | + | |
| 45 | + // 修改日期 | |
| 46 | + private Date updateDate; | |
| 47 | + | |
| 48 | + // 路段信息 | |
| 49 | + private long section; | |
| 50 | + | |
| 51 | + // 线路ID | |
| 52 | + private int line; | |
| 53 | + | |
| 54 | + public Integer getId() { | |
| 55 | + return id; | |
| 56 | + } | |
| 57 | + | |
| 58 | + public void setId(Integer id) { | |
| 59 | + this.id = id; | |
| 60 | + } | |
| 61 | + | |
| 62 | + public Integer getSectionrouteCode() { | |
| 63 | + return sectionrouteCode; | |
| 64 | + } | |
| 65 | + | |
| 66 | + public void setSectionrouteCode(Integer sectionrouteCode) { | |
| 67 | + this.sectionrouteCode = sectionrouteCode; | |
| 68 | + } | |
| 69 | + | |
| 70 | + public String getLineCode() { | |
| 71 | + return lineCode; | |
| 72 | + } | |
| 73 | + | |
| 74 | + public void setLineCode(String lineCode) { | |
| 75 | + this.lineCode = lineCode; | |
| 76 | + } | |
| 77 | + | |
| 78 | + public String getSectionCode() { | |
| 79 | + return sectionCode; | |
| 80 | + } | |
| 81 | + | |
| 82 | + public void setSectionCode(String sectionCode) { | |
| 83 | + this.sectionCode = sectionCode; | |
| 84 | + } | |
| 85 | + | |
| 86 | + public Integer getDirections() { | |
| 87 | + return directions; | |
| 88 | + } | |
| 89 | + | |
| 90 | + public void setDirections(Integer directions) { | |
| 91 | + this.directions = directions; | |
| 92 | + } | |
| 93 | + | |
| 94 | + public Integer getVersions() { | |
| 95 | + return versions; | |
| 96 | + } | |
| 97 | + | |
| 98 | + public void setVersions(Integer versions) { | |
| 99 | + this.versions = versions; | |
| 100 | + } | |
| 101 | + | |
| 102 | + public Integer getDestroy() { | |
| 103 | + return destroy; | |
| 104 | + } | |
| 105 | + | |
| 106 | + public void setDestroy(Integer destroy) { | |
| 107 | + this.destroy = destroy; | |
| 108 | + } | |
| 109 | + | |
| 110 | + public Integer getIsRoadeSpeed() { | |
| 111 | + return isRoadeSpeed; | |
| 112 | + } | |
| 113 | + | |
| 114 | + public void setIsRoadeSpeed(Integer isRoadeSpeed) { | |
| 115 | + this.isRoadeSpeed = isRoadeSpeed; | |
| 116 | + } | |
| 117 | + | |
| 118 | + public String getDescriptions() { | |
| 119 | + return descriptions; | |
| 120 | + } | |
| 121 | + | |
| 122 | + public void setDescriptions(String descriptions) { | |
| 123 | + this.descriptions = descriptions; | |
| 124 | + } | |
| 125 | + | |
| 126 | + public Integer getCreateBy() { | |
| 127 | + return createBy; | |
| 128 | + } | |
| 129 | + | |
| 130 | + public void setCreateBy(Integer createBy) { | |
| 131 | + this.createBy = createBy; | |
| 132 | + } | |
| 133 | + | |
| 134 | + public Integer getUpdateBy() { | |
| 135 | + return updateBy; | |
| 136 | + } | |
| 137 | + | |
| 138 | + public void setUpdateBy(Integer updateBy) { | |
| 139 | + this.updateBy = updateBy; | |
| 140 | + } | |
| 141 | + | |
| 142 | + public Date getCreateDate() { | |
| 143 | + return createDate; | |
| 144 | + } | |
| 145 | + | |
| 146 | + public void setCreateDate(Date createDate) { | |
| 147 | + this.createDate = createDate; | |
| 148 | + } | |
| 149 | + | |
| 150 | + public Date getUpdateDate() { | |
| 151 | + return updateDate; | |
| 152 | + } | |
| 153 | + | |
| 154 | + public void setUpdateDate(Date updateDate) { | |
| 155 | + this.updateDate = updateDate; | |
| 156 | + } | |
| 157 | + | |
| 158 | + public long getSection() { | |
| 159 | + return section; | |
| 160 | + } | |
| 161 | + | |
| 162 | + public void setSection(long section) { | |
| 163 | + this.section = section; | |
| 164 | + } | |
| 165 | + | |
| 166 | + public int getLine() { | |
| 167 | + return line; | |
| 168 | + } | |
| 169 | + | |
| 170 | + public void setLine(int line) { | |
| 171 | + this.line = line; | |
| 172 | + } | |
| 173 | +} | ... | ... |
src/main/resources/static/pages/base/geo_data_edit/css/mian.css
| ... | ... | @@ -19,7 +19,7 @@ div#map_wrap{ |
| 19 | 19 | position: absolute; |
| 20 | 20 | z-index: 999; |
| 21 | 21 | height: calc(100% - 20px); |
| 22 | - width: 300px; | |
| 22 | + width: 310px; | |
| 23 | 23 | background: #fffffff5; |
| 24 | 24 | top: 7px; |
| 25 | 25 | left: 5px; |
| ... | ... | @@ -250,11 +250,11 @@ ul.uk-list.station_info_win>li.s_name{ |
| 250 | 250 | background: #91d9fa; |
| 251 | 251 | } |
| 252 | 252 | |
| 253 | -.up_down_route_list li.ct_active.first_road_active{ | |
| 253 | +.up_down_route_list li.ct_active.f_r_a{ | |
| 254 | 254 | background: #fff; |
| 255 | 255 | } |
| 256 | 256 | |
| 257 | -.up_down_route_list li.ct_active.first_road_active>a{ | |
| 257 | +.up_down_route_list li.ct_active.f_r_a>a{ | |
| 258 | 258 | background: #91d9fa; |
| 259 | 259 | } |
| 260 | 260 | |
| ... | ... | @@ -490,4 +490,68 @@ ul.context-menu-list.station-route-ct-menu.context-menu-root { |
| 490 | 490 | background: #fff; |
| 491 | 491 | height: 120px; |
| 492 | 492 | box-shadow: 5px 5px 15px rgba(90, 90, 90, 0.48); |
| 493 | +} | |
| 494 | + | |
| 495 | +.road_li_transient .ul_li_input input:first-child{ | |
| 496 | + width: 110px; | |
| 497 | + margin-left: 2px; | |
| 498 | +} | |
| 499 | + | |
| 500 | +.road_li_transient .ul_li_input input:nth-of-type(2){ | |
| 501 | + width: 100px; | |
| 502 | + margin-left: 0; | |
| 503 | + font-size: 12px; | |
| 504 | +} | |
| 505 | + | |
| 506 | +.bks_list li.road_li_transient{ | |
| 507 | + margin-left: -15px; | |
| 508 | +} | |
| 509 | + | |
| 510 | +.road_li_transient .search_point_icon_btn { | |
| 511 | + color: #FF9800; | |
| 512 | + margin-right: 5px; | |
| 513 | +} | |
| 514 | + | |
| 515 | +.road_li_transient .ul_li_input{ | |
| 516 | + width: 100%; | |
| 517 | + | |
| 518 | +} | |
| 519 | + | |
| 520 | +.road_li_transient .ul_li_input input{ | |
| 521 | + color: #c5862a; | |
| 522 | +} | |
| 523 | + | |
| 524 | + | |
| 525 | +.add_road_search_point_wrap{ | |
| 526 | + width: 390px; | |
| 527 | + height: 120px; | |
| 528 | + position: absolute; | |
| 529 | + top: 10px; | |
| 530 | + left: calc(50% - 200px); | |
| 531 | + z-index: 999; | |
| 532 | + background: #ffface; | |
| 533 | + box-shadow: 5px 5px 15px rgba(90, 90, 90, 0.48); | |
| 534 | +} | |
| 535 | + | |
| 536 | +.add_road_search_point_wrap ._title { | |
| 537 | + text-align: center; | |
| 538 | + font-size: 17px; | |
| 539 | + color: #2b2b2b; | |
| 540 | + padding: 2px 0 0 0; | |
| 541 | + font-weight: 600; | |
| 542 | +} | |
| 543 | + | |
| 544 | +.add_road_search_point_wrap .buffer_edit_body .ct_row { | |
| 545 | + margin-top: 8px; | |
| 546 | +} | |
| 547 | + | |
| 548 | +.draw_polyline_switch{ | |
| 549 | + display: inline-block; | |
| 550 | + font-size: 12px; | |
| 551 | + vertical-align: bottom; | |
| 552 | + margin-left: 5px; | |
| 553 | +} | |
| 554 | + | |
| 555 | +.draw_polyline_switch>a{ | |
| 556 | + color: red; | |
| 493 | 557 | } |
| 494 | 558 | \ No newline at end of file | ... | ... |
src/main/resources/static/pages/base/geo_data_edit/fragments/f_road_route.html
| ... | ... | @@ -2,19 +2,19 @@ |
| 2 | 2 | <script id="geo_d_e_road_route-temp" type="text/html"> |
| 3 | 3 | <ul class="uk-list"> |
| 4 | 4 | {{each list as subArr i}} |
| 5 | - <li class="r_r_item first_road_active" > | |
| 5 | + <li class="r_r_item f_r_a" data-id="{{subArr[0].id}}" data-code="{{subArr[0].sectionCode}}"> | |
| 6 | 6 | <a data-code="{{subArr[0].sectionCode}}" data-updown="{{subArr[0].directions}}">{{subArr[0].sectionName}}<span class="sub_name">{{subArr[0].crosesRoad}}</span></a> |
| 7 | - | |
| 7 | + <ul class="uk-list bks_list"> | |
| 8 | 8 | {{if subArr.length > 1}} |
| 9 | 9 | {{each subArr as obj j}} |
| 10 | - <ul class="uk-list"> | |
| 11 | 10 | {{if j > 0}} |
| 12 | - <li class="r_r_item"> | |
| 11 | + <li class="r_r_item" data-id="{{obj.id}}" data-code="{{obj.sectionCode}}"> | |
| 13 | 12 | <a data-code="{{obj.sectionCode}}" data-updown="{{obj.directions}}">{{obj.sectionName}}<span class="sub_name">{{obj.crosesRoad}}</span></a></li> |
| 14 | 13 | {{/if}} |
| 15 | - </ul> | |
| 14 | + | |
| 16 | 15 | {{/each}} |
| 17 | 16 | {{/if}} |
| 17 | + </ul> | |
| 18 | 18 | </li> |
| 19 | 19 | {{/each}} |
| 20 | 20 | </ul> |
| ... | ... | @@ -57,7 +57,7 @@ |
| 57 | 57 | |
| 58 | 58 | <div class="ct_row"> |
| 59 | 59 | <div class="uk-inline" > |
| 60 | - <kbd>长度: <span></span> 米</kbd> | |
| 60 | + <kbd>长度: <span>{{len}}</span> 米</kbd> | |
| 61 | 61 | </div> |
| 62 | 62 | <div class="uk-inline btns"> |
| 63 | 63 | <button class="uk-button uk-button-primary submit">确定</button> |
| ... | ... | @@ -68,4 +68,52 @@ |
| 68 | 68 | </div> |
| 69 | 69 | </div> |
| 70 | 70 | </script> |
| 71 | + | |
| 72 | + <script id="geo_d_e_add_road_panel-temp" type="text/html"> | |
| 73 | + <li class="road_li_transient"> | |
| 74 | + <div class="ul_li_input"> | |
| 75 | + <form> | |
| 76 | + <input class="uk-input" value="{{sectionName}}" autocomplete="off" placeholder="路段名称" name="sectionName"> | |
| 77 | + <input class="uk-input" value="{{crosesRoad}}" autocomplete="off" placeholder="交叉路" name="crosesRoad"> | |
| 78 | + <span uk-icon="icon: location;ratio:.8" title="绘制路段" uk-tooltip class="search_point_icon_btn"></span> | |
| 79 | + <span uk-icon="icon: close;" title="取消" uk-tooltip class="cancel_icon_btn"></span> | |
| 80 | + </form> | |
| 81 | + </div> | |
| 82 | + </li> | |
| 83 | + </script> | |
| 84 | + | |
| 85 | + | |
| 86 | + <script id="geo_d_e_add_draw_polyline-temp" type="text/html"> | |
| 87 | + <div class="add_road_search_point_wrap uk-animation-slide-top-small"> | |
| 88 | + <div class="buffer_edit_body" > | |
| 89 | + <div class="_title">绘制 {{name}}({{cName}})</div> | |
| 90 | + <form> | |
| 91 | + <input type="hidden" value="{{id}}" name="id"> | |
| 92 | + <input type="hidden" value="{{sectionCode}}" name="sectionCode"> | |
| 93 | + | |
| 94 | + <div class="ct_row"> | |
| 95 | + <div class="uk-inline"> | |
| 96 | + <span class="uk-form-icon uk-form-icon-flip" >路段名</span> | |
| 97 | + <input class="uk-input" name="sectionName" type="text" value="{{name}}" > | |
| 98 | + </div> | |
| 99 | + <div class="uk-inline"> | |
| 100 | + <span class="uk-form-icon uk-form-icon-flip" >交叉路</span> | |
| 101 | + <input class="uk-input" name="crosesRoad" type="text" value="{{cName}}" style="font-size: 13px;"> | |
| 102 | + </div> | |
| 103 | + </div> | |
| 104 | + | |
| 105 | + <div class="ct_row"> | |
| 106 | + <div class="uk-inline" > | |
| 107 | + <span class="draw_polyline_switch"><a>暂停绘制</a></span> | |
| 108 | + </div> | |
| 109 | + | |
| 110 | + <div class="uk-inline btns"> | |
| 111 | + <button class="uk-button uk-button-primary submit">确定</button> | |
| 112 | + <button class="uk-button uk-button-default cancel">取消</button> | |
| 113 | + </div> | |
| 114 | + </div> | |
| 115 | + </form> | |
| 116 | + </div> | |
| 117 | + </div> | |
| 118 | + </script> | |
| 71 | 119 | </div> |
| 72 | 120 | \ No newline at end of file | ... | ... |
src/main/resources/static/pages/base/geo_data_edit/js/map.js
| ... | ... | @@ -14,6 +14,16 @@ var gb_ct_map = function () { |
| 14 | 14 | } |
| 15 | 15 | }; |
| 16 | 16 | |
| 17 | + var styleOptions = { | |
| 18 | + strokeColor:"#E91E63", //边线颜色。 | |
| 19 | + fillColor:"#E91E63", //填充颜色。当参数为空时,圆形将没有填充效果。 | |
| 20 | + strokeWeight: 6, //边线的宽度,以像素为单位。 | |
| 21 | + strokeOpacity: 0.8, //边线透明度,取值范围0 - 1。 | |
| 22 | + fillOpacity: 0.6, //填充的透明度,取值范围0 - 1。 | |
| 23 | + strokeStyle: 'solid' //边线的样式,solid或dashed。 | |
| 24 | + } | |
| 25 | + | |
| 26 | + | |
| 17 | 27 | /** |
| 18 | 28 | * 地图状态 |
| 19 | 29 | * 1: 站点缓冲区编辑 |
| ... | ... | @@ -443,7 +453,7 @@ var gb_ct_map = function () { |
| 443 | 453 | clearEditBuffer(); |
| 444 | 454 | |
| 445 | 455 | if (v == 'd') { |
| 446 | - _drawingManager = new BMapLib.DrawingManager(map, {}); | |
| 456 | + _drawingManager = new BMapLib.DrawingManager(map, {polygonOptions: styleOptions}); | |
| 447 | 457 | _drawingManager.open(); |
| 448 | 458 | _drawingManager.enableCalculate(); |
| 449 | 459 | _drawingManager.setDrawingMode('polygon'); |
| ... | ... | @@ -528,6 +538,50 @@ var gb_ct_map = function () { |
| 528 | 538 | }; |
| 529 | 539 | |
| 530 | 540 | /** |
| 541 | + * 绘制新增路段 | |
| 542 | + * @param name | |
| 543 | + */ | |
| 544 | + var showAddRoadPanel = function (name, cName) { | |
| 545 | + map_status = 1; | |
| 546 | + | |
| 547 | + var point; | |
| 548 | + var pId = gb_road_route.getAddPrevId(); | |
| 549 | + if(pId){ | |
| 550 | + //从上一个路段继续绘制 | |
| 551 | + var prev = gb_road_route.getRoadById(pId), | |
| 552 | + coords = prev.bdCoords, | |
| 553 | + lastCoord = coords[coords.length-1].split(' '); | |
| 554 | + | |
| 555 | + point = new BMap.Point(lastCoord[0], lastCoord[1]); | |
| 556 | + } | |
| 557 | + | |
| 558 | + map.centerAndZoom(point, 18); | |
| 559 | + | |
| 560 | + //开启鼠标绘制 | |
| 561 | + _drawingManager = new BMapLib.DrawingManager(map, { | |
| 562 | + polylineOptions: styleOptions | |
| 563 | + }); | |
| 564 | + | |
| 565 | + _drawingManager.open(); | |
| 566 | + //_drawingManager.enableCalculate(); | |
| 567 | + _drawingManager.setDrawingMode('polyline'); | |
| 568 | + | |
| 569 | + //绘制完成 | |
| 570 | + _drawingManager.addEventListener('polylinecomplete', function (e) { | |
| 571 | + console.log('eee', e, e.getPath()); | |
| 572 | + _drawingManager.close(); | |
| 573 | + | |
| 574 | + var polyline = new BMap.Polyline(e.getPath(), {strokeWeight: 7, strokeColor: '#E91E63', strokeOpacity: .7}); | |
| 575 | + | |
| 576 | + map.removeOverlay(e); | |
| 577 | + map.addOverlay(polyline); | |
| 578 | + polyline.enableEditing(); | |
| 579 | + | |
| 580 | + editPolyline = polyline; | |
| 581 | + }); | |
| 582 | + }; | |
| 583 | + | |
| 584 | + /** | |
| 531 | 585 | * 为新增的站点选择一个位置 |
| 532 | 586 | */ |
| 533 | 587 | var showAddPointPanel = function (name) { |
| ... | ... | @@ -592,7 +646,6 @@ var gb_ct_map = function () { |
| 592 | 646 | * 拾取坐标点位 |
| 593 | 647 | */ |
| 594 | 648 | var pickupPoint = function (e) { |
| 595 | - console.log('pickupPointpickupPoint', e); | |
| 596 | 649 | var point = e.point; |
| 597 | 650 | |
| 598 | 651 | a_s_p_maeker.setPosition(point); |
| ... | ... | @@ -645,6 +698,21 @@ var gb_ct_map = function () { |
| 645 | 698 | _renderStationMarket(gb_station_route.getData()[upDown]); |
| 646 | 699 | }; |
| 647 | 700 | |
| 701 | + /** | |
| 702 | + * 重绘一个走向的路段 | |
| 703 | + * @param upDown | |
| 704 | + */ | |
| 705 | + var reDrawRoad = function (upDown) { | |
| 706 | + $.each(roadPolylines[upDown], function () { | |
| 707 | + map.removeOverlay(this); | |
| 708 | + }); | |
| 709 | + roadPolylines[upDown] = []; | |
| 710 | + | |
| 711 | + clearOtherOverlay(); | |
| 712 | + | |
| 713 | + _renderPolyline(gb_road_route.getData()[upDown], updownColor(upDown)); | |
| 714 | + }; | |
| 715 | + | |
| 648 | 716 | |
| 649 | 717 | /** |
| 650 | 718 | * 进入路段编辑模式 |
| ... | ... | @@ -669,8 +737,8 @@ var gb_ct_map = function () { |
| 669 | 737 | polyline.enableEditing(); |
| 670 | 738 | |
| 671 | 739 | //lineupdate,计算长度 mouseup |
| 672 | - gb_road_route.showPathLength(geolib.getPathLength(polyline.getPath())); | |
| 673 | 740 | polyline.addEventListener('lineupdate', reCalcPathLength); |
| 741 | + //gb_road_route.showPathLength(geolib.getPathLength(polyline.getPath())); | |
| 674 | 742 | } |
| 675 | 743 | |
| 676 | 744 | /** |
| ... | ... | @@ -703,6 +771,7 @@ var gb_ct_map = function () { |
| 703 | 771 | $('.road_edit_panel').remove(); |
| 704 | 772 | |
| 705 | 773 | editPolyline.removeEventListener('lineupdate', reCalcPathLength); |
| 774 | + editPolyline = null; | |
| 706 | 775 | |
| 707 | 776 | //polyline |
| 708 | 777 | var polyline = getRoadPolyline(road.sectionCode, road.directions); |
| ... | ... | @@ -741,7 +810,9 @@ var gb_ct_map = function () { |
| 741 | 810 | map.enableDoubleClickZoom(); |
| 742 | 811 | }, |
| 743 | 812 | reDrawStation: reDrawStation, |
| 813 | + reDrawRoad: reDrawRoad, | |
| 744 | 814 | edit_road: start_edit_road, |
| 745 | - exitEditRoadStatus: exitEditRoadStatus | |
| 815 | + exitEditRoadStatus: exitEditRoadStatus, | |
| 816 | + showAddRoadPanel: showAddRoadPanel | |
| 746 | 817 | }; |
| 747 | 818 | }(); |
| 748 | 819 | \ No newline at end of file | ... | ... |
src/main/resources/static/pages/base/geo_data_edit/js/road_route.js
| ... | ... | @@ -28,10 +28,12 @@ var gb_road_route = function () { |
| 28 | 28 | rs.list.sort(function (a, b) { |
| 29 | 29 | return parseInt(a.sectionrouteCode) - parseInt(b.sectionrouteCode); |
| 30 | 30 | }); |
| 31 | - //计算路段中心点 | |
| 32 | - //var cp = calcCenterPoint(p.ct_data.bdCoords); | |
| 31 | + | |
| 32 | + var _pos; | |
| 33 | 33 | $.each(rs.list, function () { |
| 34 | - this.cp = calcCenterPoint(this.bdCoords); | |
| 34 | + _pos = cv_points(this.bdCoords); | |
| 35 | + this.cp = geolib.getCenter(_pos); | |
| 36 | + this.len = geolib.getPathLength(_pos); | |
| 35 | 37 | }); |
| 36 | 38 | ep.emit('data', gb_common.groupBy(rs.list, 'directions')); |
| 37 | 39 | }); |
| ... | ... | @@ -101,19 +103,91 @@ var gb_road_route = function () { |
| 101 | 103 | var edit_road = function (road) { |
| 102 | 104 | $('.main_left_panel_m_layer').show(); |
| 103 | 105 | //弹出编辑面板 |
| 104 | - var $editPanel = temps['geo_d_e_road_edit_panel-temp'](road); | |
| 106 | + var $editPanel = $(temps['geo_d_e_road_edit_panel-temp'](road)); | |
| 105 | 107 | $('body').append($editPanel); |
| 106 | 108 | |
| 107 | 109 | gb_ct_map.edit_road(road); |
| 110 | + | |
| 111 | + /** | |
| 112 | + * 点击取消 | |
| 113 | + */ | |
| 114 | + $('button.cancel', $editPanel).on('click', function () { | |
| 115 | + $('.main_left_panel_m_layer').hide(); | |
| 116 | + $(this).parents('.buffer_edit_body').parent().remove(); | |
| 117 | + gb_ct_map.resetMapStatus(); | |
| 118 | + //debugger | |
| 119 | + gb_ct_map.exitEditRoadStatus(road); | |
| 120 | + }); | |
| 108 | 121 | }; |
| 109 | 122 | |
| 110 | 123 | var showPathLength = function (len) { |
| 111 | 124 | $('.road_edit_panel kbd>span').text(len); |
| 112 | 125 | }; |
| 113 | 126 | |
| 127 | + var addPrevId;//添加路段路由的上一个路由ID | |
| 128 | + var insert_road_before = function (road) { | |
| 129 | + //在之前插入路段 | |
| 130 | + var cell = getRoadLI(road); | |
| 131 | + | |
| 132 | + var addCell = $(temps['geo_d_e_add_road_panel-temp'](road)); | |
| 133 | + | |
| 134 | + cell.before(addCell); | |
| 135 | + | |
| 136 | + add_road(addCell); | |
| 137 | + }; | |
| 138 | + | |
| 139 | + var add_road = function (cell) { | |
| 140 | + gb_ct_map.closeInfoWin(); | |
| 141 | + //焦点 | |
| 142 | + var $nameInput = $('input[name=sectionName]', cell); | |
| 143 | + $nameInput.focus(); | |
| 144 | + | |
| 145 | + //取消 | |
| 146 | + $('.cancel_icon_btn', cell).on('click', function () { | |
| 147 | + cell.remove(); | |
| 148 | + }); | |
| 149 | + | |
| 150 | + //选择地图位置 | |
| 151 | + $('.search_point_icon_btn', cell).on('click', function () { | |
| 152 | + $('.station_li_transient').removeClass('_search_point'); | |
| 153 | + $(this).parents('.station_li_transient').addClass('_search_point'); | |
| 154 | + var name = $nameInput.val(); | |
| 155 | + if(!name) | |
| 156 | + return UIkit.notification("你必须输入路段名称!", {status: 'danger'}); | |
| 157 | + | |
| 158 | + $('.main_left_panel_m_layer').show(); | |
| 159 | + //gb_ct_map.showAddRoadPanel(name, $('input[name=crosesRoad]',cell).val()); | |
| 160 | + showDrawPanel(name, $('input[name=crosesRoad]',cell).val()); | |
| 161 | + }); | |
| 162 | + //监听回车事件 | |
| 163 | + $('[name=sectionName]', cell).on('keydown', function (e) { | |
| 164 | + if(event.keyCode == "13") | |
| 165 | + $('.search_point_icon_btn', cell).trigger('click'); | |
| 166 | + }); | |
| 167 | + | |
| 168 | + //上一个路段的ID | |
| 169 | + var $prev = cell.prev('.r_r_item'); | |
| 170 | + if($prev.length > 0) | |
| 171 | + addPrevId = $prev.data('id'); | |
| 172 | + else{ | |
| 173 | + if(cell.parent().hasClass('bks_list')) | |
| 174 | + addPrevId = cell.parents('.r_r_item').data('id'); | |
| 175 | + else | |
| 176 | + addPrevId = -1; | |
| 177 | + } | |
| 178 | + }; | |
| 179 | + | |
| 180 | + var getRoadLI = function (r) { | |
| 181 | + return $('.up_down_route_list>li:eq('+r.directions+')>.road_route .r_r_item[data-code='+r.sectionCode+']'); | |
| 182 | + }; | |
| 183 | + | |
| 114 | 184 | var realEditRoad; |
| 115 | 185 | var callbackHandler = { |
| 116 | - edit: edit_road | |
| 186 | + edit: edit_road, | |
| 187 | + insert_before: insert_road_before, | |
| 188 | + destroy: function (road) { | |
| 189 | + gb_data_submit.destroyRoad(road); | |
| 190 | + } | |
| 117 | 191 | }; |
| 118 | 192 | //$('.up_down_route_list>li>.road_route .r_r_item a[data-code='+data.sectionCode+']') |
| 119 | 193 | $.contextMenu({ |
| ... | ... | @@ -154,18 +228,19 @@ var gb_road_route = function () { |
| 154 | 228 | return null; |
| 155 | 229 | }; |
| 156 | 230 | |
| 157 | - var calcCenterPoint = function (coords) { | |
| 231 | + var cv_points = function (coords) { | |
| 158 | 232 | var array = [], strs; |
| 159 | 233 | for (var i = 0, item; item = coords[i++];) { |
| 160 | 234 | strs = item.split(' '); |
| 161 | 235 | array.push({latitude: strs[1], longitude: strs[0]}); |
| 162 | 236 | } |
| 163 | - | |
| 164 | - return geolib.getCenter(array); | |
| 165 | - }; | |
| 237 | + return array; | |
| 238 | + } | |
| 166 | 239 | |
| 167 | 240 | var update = function (road) { |
| 168 | - road.cp = calcCenterPoint(road.bdCoords); | |
| 241 | + var _pos = cv_points(this.bdCoords); | |
| 242 | + road.cp = geolib.getCenter(_pos); | |
| 243 | + road.len = geolib.getPathLength(_pos); | |
| 169 | 244 | var array = road_maps[road.directions]; |
| 170 | 245 | for(var i=0,item; item=array[i++];){ |
| 171 | 246 | if(item.sectionCode==road.sectionCode){ |
| ... | ... | @@ -178,6 +253,61 @@ var gb_road_route = function () { |
| 178 | 253 | var htmlStr = temps['geo_d_e_road_route-temp']({list: _group(array)}); |
| 179 | 254 | $('.up_down_route_list>li:'+(road.directions==0?'first':'last')+'>.road_route').html(htmlStr); |
| 180 | 255 | }; |
| 256 | + | |
| 257 | + var destroyEnd = function (list, road) { | |
| 258 | + list.sort(function (a, b) { | |
| 259 | + return parseInt(a.sectionrouteCode) - parseInt(b.sectionrouteCode); | |
| 260 | + }); | |
| 261 | + | |
| 262 | + var _pos; | |
| 263 | + $.each(list, function () { | |
| 264 | + _pos = cv_points(this.bdCoords); | |
| 265 | + this.cp = geolib.getCenter(_pos); | |
| 266 | + this.len = geolib.getPathLength(_pos); | |
| 267 | + }); | |
| 268 | + | |
| 269 | + road_maps[road.directions] = list; | |
| 270 | + //重新渲染 | |
| 271 | + var htmlStr = temps['geo_d_e_road_route-temp']({list: _group(list)}); | |
| 272 | + $('.up_down_route_list>li:'+(road.directions==0?'first':'last')+'>.road_route').html(htmlStr); | |
| 273 | + | |
| 274 | + gb_ct_map.reDrawRoad(road.directions); | |
| 275 | + }; | |
| 276 | + | |
| 277 | + /** | |
| 278 | + * 根据ID获取路段 | |
| 279 | + * @param id | |
| 280 | + */ | |
| 281 | + var getRoadById = function (id) { | |
| 282 | + for(var i=0,s;s=road_maps[0][i++];){ | |
| 283 | + if(s.id == id) | |
| 284 | + return s; | |
| 285 | + } | |
| 286 | + for(var i=0,s;s=road_maps[1][i++];){ | |
| 287 | + if(s.id == id) | |
| 288 | + return s; | |
| 289 | + } | |
| 290 | + return null; | |
| 291 | + }; | |
| 292 | + | |
| 293 | + var showDrawPanel = function (name, cName) { | |
| 294 | + var spp = $(temps['geo_d_e_add_draw_polyline-temp']({name: name, cName: cName})); | |
| 295 | + $('body').append(spp); | |
| 296 | + //暂停和开始绘制 | |
| 297 | + $('.draw_polyline_switch>a', spp).on('click', function () { | |
| 298 | + var t = $(this).text(); | |
| 299 | + if(t=='暂停绘制'){ | |
| 300 | + gb_ct_map.exitDrawStatus(); | |
| 301 | + $(this).text('开始绘制'); | |
| 302 | + } | |
| 303 | + else{ | |
| 304 | + gb_ct_map.openDrawStatus(); | |
| 305 | + $(this).text('暂停绘制'); | |
| 306 | + } | |
| 307 | + }); | |
| 308 | + | |
| 309 | + gb_ct_map.showAddRoadPanel(name, cName); | |
| 310 | + }; | |
| 181 | 311 | |
| 182 | 312 | res_load_ep.emitLater('load_road_route'); |
| 183 | 313 | return { |
| ... | ... | @@ -190,6 +320,11 @@ var gb_road_route = function () { |
| 190 | 320 | clearFocus: clearFocus, |
| 191 | 321 | focus: focus, |
| 192 | 322 | showPathLength: showPathLength, |
| 193 | - update: update | |
| 323 | + update: update, | |
| 324 | + destroyEnd: destroyEnd, | |
| 325 | + getRoadById: getRoadById, | |
| 326 | + getAddPrevId: function () { | |
| 327 | + return addPrevId; | |
| 328 | + } | |
| 194 | 329 | }; |
| 195 | 330 | }(); |
| 196 | 331 | \ No newline at end of file | ... | ... |
src/main/resources/static/pages/base/geo_data_edit/js/station_route.js
| ... | ... | @@ -109,6 +109,14 @@ var gb_station_route = function () { |
| 109 | 109 | add_station(addCell); |
| 110 | 110 | }; |
| 111 | 111 | |
| 112 | + | |
| 113 | + //添加站点 取消按钮 | |
| 114 | + $(document).on('click', '.add_station_search_point_wrap button.cancel', function () { | |
| 115 | + $('.main_left_panel_m_layer').hide(); | |
| 116 | + $(this).parents('.buffer_edit_body').parent().remove(); | |
| 117 | + gb_ct_map.resetMapStatus(); | |
| 118 | + }); | |
| 119 | + | |
| 112 | 120 | var add_station = function (addCell) { |
| 113 | 121 | gb_ct_map.closeInfoWin(); |
| 114 | 122 | //焦点 |
| ... | ... | @@ -218,6 +226,72 @@ var gb_station_route = function () { |
| 218 | 226 | var htmlStr = temps['geo_d_e_map_edit_buffer_panel-temp'](s); |
| 219 | 227 | $('.ct_page').append(htmlStr); |
| 220 | 228 | $('.buffer_edit_panel').show(); |
| 229 | + | |
| 230 | + //缓冲区编辑 取消 | |
| 231 | + $('button.cancel', $editWrap).on('click', function (e) { | |
| 232 | + $('.main_left_panel_m_layer').hide(); | |
| 233 | + $(this).parents('.buffer_edit_body').parent().remove(); | |
| 234 | + gb_ct_map.resetMapStatus(); | |
| 235 | + | |
| 236 | + var f = $(this).parents('form'); | |
| 237 | + var data = f.serializeJSON(); | |
| 238 | + | |
| 239 | + gb_ct_map.exitEditBufferStatus(data); | |
| 240 | + }); | |
| 241 | + | |
| 242 | + var $editWrap = '.buffer_edit_panel>.buffer_edit_body'; | |
| 243 | + | |
| 244 | + //缓冲区编辑 切换缓冲区类型(圆形,多边形) | |
| 245 | + $('select[name=shapesType]', $editWrap).on('change', function (e) { | |
| 246 | + var v = $(this).val(); | |
| 247 | + if(v=='d'){ | |
| 248 | + $('.buffer_edit_panel .shapes_type').addClass('st_d'); | |
| 249 | + } | |
| 250 | + else{ | |
| 251 | + $('.buffer_edit_panel .shapes_type').removeClass('st_d'); | |
| 252 | + $('input[name=radius]', $editWrap).val(80); | |
| 253 | + } | |
| 254 | + gb_ct_map.changeShapeType(v); | |
| 255 | + }); | |
| 256 | + | |
| 257 | + //半径修改 | |
| 258 | + var update_radius_flag, update_radius; | |
| 259 | + $('input[name=radius]', $editWrap).on('input', function (e) { | |
| 260 | + update_radius = $(this).val(); | |
| 261 | + if(update_radius_flag){ | |
| 262 | + return; | |
| 263 | + } | |
| 264 | + update_radius_flag = true; | |
| 265 | + setTimeout(function () { | |
| 266 | + gb_ct_map.updateDragRadius(update_radius); | |
| 267 | + update_radius_flag = false; | |
| 268 | + }, 180); | |
| 269 | + }); | |
| 270 | + | |
| 271 | + //缓冲区编辑 切换绘制模式 | |
| 272 | + $('.draw_polygon_switch', $editWrap).on('input', function (e) { | |
| 273 | + var type = $(this).data('type'); | |
| 274 | + if(type==1){ | |
| 275 | + //退出绘制状态 | |
| 276 | + gb_ct_map.exitDrawStatus(); | |
| 277 | + $(this).data('type', 0).find('a').text('开始绘制'); | |
| 278 | + } | |
| 279 | + else if(type==0 || type==2){ | |
| 280 | + gb_ct_map.openDrawStatus(); | |
| 281 | + $(this).data('type', 1).find('a').text('暂停绘制'); | |
| 282 | + } | |
| 283 | + else if(type==3){ | |
| 284 | + gb_ct_map.changeShapeType('d'); | |
| 285 | + $(this).data('type', 1).find('a').text('暂停绘制'); | |
| 286 | + } | |
| 287 | + }); | |
| 288 | + }; | |
| 289 | + | |
| 290 | + /** | |
| 291 | + * 绘制结束 | |
| 292 | + */ | |
| 293 | + var drawEnd = function () { | |
| 294 | + $('.buffer_edit_panel>.buffer_edit_body .draw_polygon_switch').data('type', 2).find('a').text('重新绘制'); | |
| 221 | 295 | }; |
| 222 | 296 | |
| 223 | 297 | var edPanelRunFlag; |
| ... | ... | @@ -264,82 +338,11 @@ var gb_station_route = function () { |
| 264 | 338 | }; |
| 265 | 339 | |
| 266 | 340 | //取消按钮 |
| 267 | - $(document).on('click','.buffer_edit_body button.cancel', function (e) { | |
| 341 | +/* $(document).on('click','.buffer_edit_body button.cancel', function (e) { | |
| 268 | 342 | $('.main_left_panel_m_layer').hide(); |
| 269 | 343 | $(this).parents('.buffer_edit_body').parent().remove(); |
| 270 | 344 | gb_ct_map.resetMapStatus(); |
| 271 | - }); | |
| 272 | - | |
| 273 | - | |
| 274 | - var $editWrap = '.buffer_edit_panel>.buffer_edit_body'; | |
| 275 | - /** | |
| 276 | - * 缓冲区编辑 取消 | |
| 277 | - */ | |
| 278 | - $(document).on('click', $editWrap + ' button.cancel', function (e) { | |
| 279 | - var f = $(this).parents('form'); | |
| 280 | - var data = f.serializeJSON(); | |
| 281 | - | |
| 282 | - gb_ct_map.exitEditBufferStatus(data); | |
| 283 | - }); | |
| 284 | - | |
| 285 | - /** | |
| 286 | - * 缓冲区编辑 切换缓冲区类型(圆形,多边形) | |
| 287 | - */ | |
| 288 | - $(document).on('change', $editWrap +' select[name=shapesType]', function (e) { | |
| 289 | - var v = $(this).val(); | |
| 290 | - if(v=='d'){ | |
| 291 | - $('.buffer_edit_panel .shapes_type').addClass('st_d'); | |
| 292 | - } | |
| 293 | - else{ | |
| 294 | - $('.buffer_edit_panel .shapes_type').removeClass('st_d'); | |
| 295 | - $('input[name=radius]', $editWrap).val(80); | |
| 296 | - } | |
| 297 | - gb_ct_map.changeShapeType(v); | |
| 298 | - }); | |
| 299 | - | |
| 300 | - /** | |
| 301 | - * 半径修改 | |
| 302 | - */ | |
| 303 | - var update_radius_flag, update_radius; | |
| 304 | - $(document).on('input', $editWrap +' input[name=radius]', function (e) { | |
| 305 | - update_radius = $(this).val(); | |
| 306 | - if(update_radius_flag){ | |
| 307 | - return; | |
| 308 | - } | |
| 309 | - update_radius_flag = true; | |
| 310 | - setTimeout(function () { | |
| 311 | - gb_ct_map.updateDragRadius(update_radius); | |
| 312 | - update_radius_flag = false; | |
| 313 | - }, 180); | |
| 314 | - }); | |
| 315 | - | |
| 316 | - /** | |
| 317 | - * 缓冲区编辑 切换绘制模式 | |
| 318 | - */ | |
| 319 | - var drawPolygonSwitch = $editWrap +' .draw_polygon_switch'; | |
| 320 | - $(document).on('click', drawPolygonSwitch, function (e) { | |
| 321 | - var type = $(this).data('type'); | |
| 322 | - if(type==1){ | |
| 323 | - //退出绘制状态 | |
| 324 | - gb_ct_map.exitDrawStatus(); | |
| 325 | - $(this).data('type', 0).find('a').text('开始绘制'); | |
| 326 | - } | |
| 327 | - else if(type==0 || type==2){ | |
| 328 | - gb_ct_map.openDrawStatus(); | |
| 329 | - $(this).data('type', 1).find('a').text('暂停绘制'); | |
| 330 | - } | |
| 331 | - else if(type==3){ | |
| 332 | - gb_ct_map.changeShapeType('d'); | |
| 333 | - $(this).data('type', 1).find('a').text('暂停绘制'); | |
| 334 | - } | |
| 335 | - }); | |
| 336 | - | |
| 337 | - /** | |
| 338 | - * 绘制结束 | |
| 339 | - */ | |
| 340 | - var drawEnd = function () { | |
| 341 | - $(drawPolygonSwitch).data('type', 2).find('a').text('重新绘制'); | |
| 342 | - }; | |
| 345 | + });*/ | |
| 343 | 346 | |
| 344 | 347 | |
| 345 | 348 | var spcPanelRunFlag; | ... | ... |
src/main/resources/static/pages/base/geo_data_edit/js/submit.js
| ... | ... | @@ -78,6 +78,7 @@ var gb_data_submit = function () { |
| 78 | 78 | |
| 79 | 79 | delete data.gLonx; |
| 80 | 80 | delete data.gLaty; |
| 81 | + show_run_text('正在提交数据...'); | |
| 81 | 82 | //添加 |
| 82 | 83 | gb_common.$post('/_geo_data/addNewStationRoute', data, function (rs) { |
| 83 | 84 | gb_station_route.addEnd(rs.list, rs.newStationRouteCode); |
| ... | ... | @@ -90,6 +91,41 @@ var gb_data_submit = function () { |
| 90 | 91 | }); |
| 91 | 92 | |
| 92 | 93 | /** |
| 94 | + * 新增路段提交 | |
| 95 | + */ | |
| 96 | + $(document).on('click', '.add_road_search_point_wrap .buffer_edit_body button.submit', function (e) { | |
| 97 | + var f = $(this).parents('form'); | |
| 98 | + var data = f.serializeJSON(); | |
| 99 | + | |
| 100 | + UIkit.modal.confirm('确定新增路段【'+data.sectionName+'('+data.crosesRoad+')】?').then(function() { | |
| 101 | + data.lineCode = storage.getItem('geo_data_edit_line_code'); | |
| 102 | + data.versions = storage.getItem('geo_data_edit_line_version'); | |
| 103 | + data.upDown = getUpDown(); | |
| 104 | + | |
| 105 | + data.prevRouteId = gb_road_route.getAddPrevId(); | |
| 106 | + | |
| 107 | + var polyline = gb_ct_map.getDrawPolyline(); | |
| 108 | + var pos = polyline.getPath(); | |
| 109 | + var gsectionVector = ''; | |
| 110 | + for(var i=0,p;p=pos[i++];){ | |
| 111 | + gsectionVector += (p.lng + " " + p.lat + ","); | |
| 112 | + } | |
| 113 | + data.coords = gsectionVector.substr(0, gsectionVector.length - 1); | |
| 114 | + | |
| 115 | + console.log('road data', data); | |
| 116 | + | |
| 117 | + show_run_text('正在提交数据...'); | |
| 118 | + //添加 | |
| 119 | + gb_common.$post('/_geo_data/addNewRoadRoute', data, function (rs) { | |
| 120 | + | |
| 121 | + hide_run_text(); | |
| 122 | + UIkit.notification("添加成功!", {status: 'success'}); | |
| 123 | + }); | |
| 124 | + }); | |
| 125 | + return false; | |
| 126 | + }); | |
| 127 | + | |
| 128 | + /** | |
| 93 | 129 | * 路段编辑提交 |
| 94 | 130 | */ |
| 95 | 131 | $(document).on('click', '.road_edit_panel .buffer_edit_body button.submit', function (e) { |
| ... | ... | @@ -145,10 +181,31 @@ var gb_data_submit = function () { |
| 145 | 181 | }); |
| 146 | 182 | } |
| 147 | 183 | |
| 184 | + /** | |
| 185 | + * 撤销路段 | |
| 186 | + * @param road | |
| 187 | + */ | |
| 188 | + var destroyRoad = function (road) { | |
| 189 | + UIkit.modal.confirm('确定撤销路段【'+road.sectionName+'】?').then(function() { | |
| 190 | + show_run_text('正在撤销...'); | |
| 191 | + console.log('road', road); | |
| 192 | + | |
| 193 | + delete road.bdCoords; | |
| 194 | + delete road.cp; | |
| 195 | + gb_common.$post("/_geo_data/destroyRoad", road, function (rs) { | |
| 196 | + | |
| 197 | + gb_road_route.destroyEnd(rs.list, road); | |
| 198 | + hide_run_text(); | |
| 199 | + UIkit.notification("撤销成功!", {status: 'success'}); | |
| 200 | + }); | |
| 201 | + }); | |
| 202 | + }; | |
| 203 | + | |
| 148 | 204 | function getUpDown(){ |
| 149 | 205 | return $('._route_info_wrap>ul>li:first').hasClass('uk-active')?0:1; |
| 150 | 206 | } |
| 151 | 207 | return { |
| 152 | - destroyStation: destroyStation | |
| 208 | + destroyStation: destroyStation, | |
| 209 | + destroyRoad: destroyRoad | |
| 153 | 210 | }; |
| 154 | 211 | }(); |
| 155 | 212 | \ No newline at end of file | ... | ... |