|
@@ -1117,6 +1117,40 @@ export default class RoadService {
|
|
|
edgeService.updateEdgeForMulRoad(road.startId);
|
|
|
edgeService.updateEdgeForMulRoad(road.endId);
|
|
|
}
|
|
|
+
|
|
|
+ //变宽或者变窄(车道数据不变)
|
|
|
+ updateForWidth(roadId, newWidth) {
|
|
|
+ let road = dataService.getRoad(roadId);
|
|
|
+ let startPoint = dataService.getPoint(road.startId);
|
|
|
+ let endPoint = dataService.getPoint(road.endId);
|
|
|
+ let leftEdge = dataService.getEdge(road.leftEdgeId);
|
|
|
+ let rightEdge = dataService.getEdge(road.rightEdgeId);
|
|
|
+
|
|
|
+ const line = roadService.getMidLine(road);
|
|
|
+ let leftWidth = mathUtil.getDisForPoinLine(leftEdge.start, line);
|
|
|
+ let rightWidth = mathUtil.getDisForPoinLine(rightEdge.start, line);
|
|
|
+
|
|
|
+ leftWidth = (newWidth / road.width) * leftWidth;
|
|
|
+ rightWidth = (newWidth / road.width) * rightWidth;
|
|
|
+
|
|
|
+ let edgePoints = mathUtil.RectangleVertex(
|
|
|
+ startPoint,
|
|
|
+ endPoint,
|
|
|
+ leftWidth * 2
|
|
|
+ );
|
|
|
+ mathUtil.clonePoint(leftEdge.start, edgePoints.leftEdgeStart);
|
|
|
+ mathUtil.clonePoint(leftEdge.end, edgePoints.leftEdgeEnd);
|
|
|
+
|
|
|
+ edgePoints = mathUtil.RectangleVertex(startPoint, endPoint, rightWidth * 2);
|
|
|
+ mathUtil.clonePoint(rightEdge.start, edgePoints.rightEdgeStart);
|
|
|
+ mathUtil.clonePoint(rightEdge.end, edgePoints.rightEdgeEnd);
|
|
|
+
|
|
|
+ edgeService.updateEdgeForMovePoint(road.startId);
|
|
|
+ edgeService.updateEdgeForMovePoint(road.endId);
|
|
|
+ roadService.setLanes(road.vectorId);
|
|
|
+ roadService.setMidDivideForPointId(road.startId);
|
|
|
+ roadService.setMidDivideForPointId(road.endId);
|
|
|
+ }
|
|
|
/****************************************************************************************************************************************************************/
|
|
|
}
|
|
|
|