|
@@ -19,7 +19,11 @@ export default class RoadService {
|
|
|
let endPoint = dataService.getPoint(endId);
|
|
|
endPoint.setPointParent(road.vectorId, "end");
|
|
|
|
|
|
- let edgePoints = mathUtil.RectangleVertex(startPoint, endPoint, road.width);
|
|
|
+ let edgePoints = mathUtil.RectangleVertex(
|
|
|
+ startPoint,
|
|
|
+ endPoint,
|
|
|
+ road.leftWidth + road.rightWidth
|
|
|
+ );
|
|
|
let leftEdge = edgeService.create(
|
|
|
edgePoints.leftEdgeStart,
|
|
|
edgePoints.leftEdgeEnd,
|
|
@@ -475,7 +479,7 @@ export default class RoadService {
|
|
|
isContain(road, point) {
|
|
|
const startPoint = dataService.getPoint(road.startId);
|
|
|
const endPoint = dataService.getPoint(road.endId);
|
|
|
- const minDis = road.width / 2;
|
|
|
+ const minDis = Constant.minAdsorbPix / 2;
|
|
|
return mathUtil.isContainForSegment(point, startPoint, endPoint, minDis);
|
|
|
}
|
|
|
|
|
@@ -1109,45 +1113,39 @@ export default class RoadService {
|
|
|
road.rightDrivewayCount = newCount;
|
|
|
}
|
|
|
|
|
|
- let join = mathUtil.getJoinLinePoint(
|
|
|
- leftEdge.start,
|
|
|
- mathUtil.createLine1(rightEdge.start, rightEdge.end)
|
|
|
- );
|
|
|
- road.setWidth(mathUtil.getDistance(leftEdge.start, join));
|
|
|
+ let line = roadService.getMidLine(road);
|
|
|
+ if (dir == "left") {
|
|
|
+ let join = mathUtil.getJoinLinePoint(leftEdge.start, line);
|
|
|
+ road.setWidth(mathUtil.getDistance(leftEdge.start, join), dir);
|
|
|
+ } else if (dir == "right") {
|
|
|
+ let join = mathUtil.getJoinLinePoint(rightEdge.start, line);
|
|
|
+ road.setWidth(mathUtil.getDistance(rightEdge.start, join), dir);
|
|
|
+ }
|
|
|
+
|
|
|
edgeService.updateEdgeForMulRoad(road.startId);
|
|
|
edgeService.updateEdgeForMulRoad(road.endId);
|
|
|
}
|
|
|
|
|
|
//变宽或者变窄(车道数据不变)
|
|
|
- updateForWidth(roadId, newWidth) {
|
|
|
+ updateForWidth(roadId, newWidth, dir) {
|
|
|
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);
|
|
|
+ let edgePoints = mathUtil.RectangleVertex(startPoint, endPoint, newWidth);
|
|
|
+ if (dir == "left") {
|
|
|
+ mathUtil.clonePoint(leftEdge.start, edgePoints.leftEdgeStart);
|
|
|
+ mathUtil.clonePoint(leftEdge.end, edgePoints.leftEdgeEnd);
|
|
|
+ } else if (dir == "right") {
|
|
|
+ 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.setLanes(road.vectorId, dir);
|
|
|
roadService.setMidDivideForPointId(road.startId);
|
|
|
roadService.setMidDivideForPointId(road.endId);
|
|
|
}
|