소스 검색

打算修改crossPoint,主要是这一块:EdgeService:updateSingleEdgeForTwoRoad。
先保存

xushiting 2 년 전
부모
커밋
5041528b63

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 1 - 1
server/test/SS-t-P1d6CwREny2/attach/sceneStore


+ 9 - 1
src/graphic/Controls/UIControl.js

@@ -83,6 +83,8 @@ export default class UIControl {
           stateService.setEventName(LayerEvents.AddCurveRoad);
         } else if (uiService.isBelongLine(selectUI)) {
           stateService.setEventName(LayerEvents.AddLine);
+        } else if (selectUI == UIEvents.CurveLine) {
+          stateService.setEventName(LayerEvents.AddCurveLine);
         } else if (uiService.isBelongPoint(selectUI)) {
           stateService.setEventName(LayerEvents.AddPoint);
         } else if (selectUI == UIEvents.Circle) {
@@ -135,6 +137,8 @@ export default class UIControl {
           Settings.baseLineId = null;
         }
         break;
+      case VectorType.CurveLine:
+        break;
       case VectorType.Circle:
         dataService.deleteCircle(vectorId);
         break;
@@ -153,6 +157,8 @@ export default class UIControl {
       case VectorType.Line:
         lineService.copy(vectorId);
         break;
+      case VectorType.CurveLine:
+        break;
       case VectorType.Circle:
         circleService.copy(vectorId);
         break;
@@ -292,7 +298,9 @@ export default class UIControl {
   /******************************************************************************************************************************************************************/
 
   prompt(msg) {
-    this._prompts.push(Message.success(typeof msg === 'string' ? { msg } : msg));
+    this._prompts.push(
+      Message.success(typeof msg === "string" ? { msg } : msg)
+    );
   }
 
   // 进入持续添加出确认与取消框

+ 2 - 0
src/graphic/Geometry/CurveLine.js

@@ -6,6 +6,8 @@ import Constant from "../Constant.js";
 export default class CurveLine extends Geometry {
   constructor(points, vectorId) {
     super();
+    this.startId = startId;
+    this.endId = endId;
     this.points = points;
     this.geoType = VectorType.CurveLine;
     this.setId(vectorId);

+ 86 - 22
src/graphic/History/HistoryUtil.js

@@ -364,13 +364,15 @@ export default class HistoryUtil {
     curveRoadInfo.endId = curveRoad2.endId;
     curveRoadInfo.leftEdgeId = curveRoad2.leftEdgeId;
     curveRoadInfo.rightEdgeId = curveRoad2.rightEdgeId;
+    curveRoadInfo.points = JSON.parse(JSON.stringify(curveRoad2.points));
+    curveRoadInfo.curves = JSON.parse(JSON.stringify(curveRoad2.curves));
     curveRoadInfo.way = curveRoad2.way;
     if (curveRoad2.way == Constant.oneWay) {
-      curveRoadInfo.singleRoadWidth = curveRoad2.singleRoadWidth;
-      curveRoadInfo.singleRoadDrivewayCount =
-        curveRoad2.singleRoadDrivewayCount;
-      curveRoadInfo.singleLanes = JSON.parse(
-        JSON.stringify(curveRoad2.singleLanes)
+      curveRoadInfo.singleCurveRoadWidth = curveRoad2.singleCurveRoadWidth;
+      curveRoadInfo.singleCurveRoadDrivewayCount =
+        curveRoad2.singleCurveRoadDrivewayCount;
+      curveRoadInfo.singleLanesCurves = JSON.parse(
+        JSON.stringify(curveRoad2.singleLanesCurves)
       );
     } else if (curveRoad2.way == Constant.twoWay) {
       curveRoadInfo.leftWidth = curveRoad2.leftWidth;
@@ -380,11 +382,11 @@ export default class HistoryUtil {
       curveRoadInfo.midDivide = JSON.parse(
         JSON.stringify(curveRoad2.midDivide)
       );
-      curveRoadInfo.leftLanes = JSON.parse(
-        JSON.stringify(curveRoad2.leftLanes)
+      curveRoadInfo.leftLanesCurves = JSON.parse(
+        JSON.stringify(curveRoad2.leftLanesCurves)
       );
-      curveRoadInfo.rightLanes = JSON.parse(
-        JSON.stringify(curveRoad2.rightLanes)
+      curveRoadInfo.rightLanesCurves = JSON.parse(
+        JSON.stringify(curveRoad2.rightLanesCurves)
       );
     }
     curveRoadInfo.points = [];
@@ -533,6 +535,63 @@ export default class HistoryUtil {
     return data;
   }
 
+  getDataForCurveRoadPoint(curveRoadPoint) {
+    const data = {};
+    data.id = curveRoadPoint.vectorId;
+    data.type = curveRoadPoint.geoType;
+    data.position = {};
+    mathUtil.clonePoint(data.position, curveRoadPoint);
+    data.parent = curveRoadPoint.parent;
+    data.index = curveRoadPoint.index;
+    return data;
+  }
+
+  getDataForCurveRoadEdge(curveRoadEdge) {
+    const data = {};
+    data.id = curveRoadEdge.vectorId;
+    data.type = curveRoadEdge.geoType;
+    data.parent = curveRoadEdge.parent;
+    data.start = JSON.parse(JSON.stringify(curveRoadEdge.start));
+    data.end = JSON.parse(JSON.stringify(curveRoadEdge.end));
+    data.points = JSON.parse(JSON.stringify(curveRoadEdge.points));
+    data.curves = JSON.parse(JSON.stringify(curveRoadEdge.curves));
+    return data;
+  }
+
+  getDataForCurveRoad(curveRoad) {
+    const data = {};
+    data.id = curveRoad.vectorId;
+    data.type = curveRoad.geoType;
+    data.startId = curveRoad.startId;
+    data.endId = curveRoad.endId;
+    data.leftEdgeId = curveRoad.leftEdgeId;
+    data.rightEdgeId = curveRoad.rightEdgeId;
+    data.points = JSON.parse(JSON.stringify(curveRoad.points));
+    data.curves = JSON.parse(JSON.stringify(curveRoad.curves));
+
+    data.way = curveRoad.way;
+    if (curveRoad.way == Constant.oneWay) {
+      data.singleCurveRoadWidth = curveRoad.singleRoadWidth;
+      data.singleCurveRoadDrivewayCount = curveRoad.singleRoadDrivewayCount;
+      data.singleLanesCurves = JSON.parse(
+        JSON.stringify(curveRoad.singleLanesCurves)
+      );
+    } else if (curveRoad.way == Constant.twoWay) {
+      data.leftWidth = curveRoad.leftWidth;
+      data.rightWidth = curveRoad.rightWidth;
+      data.leftDrivewayCount = curveRoad.leftDrivewayCount;
+      data.rightDrivewayCount = curveRoad.rightDrivewayCount;
+      data.midDivide = JSON.parse(JSON.stringify(curveRoad.midDivide));
+      data.leftLanesCurves = JSON.parse(
+        JSON.stringify(curveRoad.leftLanesCurves)
+      );
+      data.rightLanesCurves = JSON.parse(
+        JSON.stringify(curveRoad.rightLanesCurves)
+      );
+    }
+    return data;
+  }
+
   getDataForCrossPoint(crossPoint) {
     const data = {};
     data.id = crossPoint.vectorId;
@@ -669,17 +728,20 @@ export default class HistoryUtil {
     curveRoad.endId = curveRoadInfo.endId;
     curveRoad.leftEdgeId = curveRoadInfo.leftEdgeId;
     curveRoad.rightEdgeId = curveRoadInfo.rightEdgeId;
-    for (let i = 0; i < curveRoadInfo.points.length; ++i) {
-      curveRoad.points[i] = dataService.getCurveRoadPoint(
-        curveRoadInfo.points[i]
-      );
-    }
-    curveRoad.way = curveRoadInfo.way;
+    // for (let i = 0; i < curveRoadInfo.points.length; ++i) {
+    //   curveRoad.points[i] = dataService.getCurveRoadPoint(
+    //     curveRoadInfo.points[i]
+    //   );
+    // }
+    curveRoad.points = JSON.parse(JSON.stringify(curveRoadInfo.points));
+    curveRoad.curves = JSON.parse(JSON.stringify(curveRoadInfo.midDivide));
+
     if (curveRoad.way == Constant.oneWay) {
-      curveRoad.singleRoadWidth = curveRoadInfo.singleRoadWidth;
-      curveRoad.singleRoadDrivewayCount = curveRoadInfo.singleRoadDrivewayCount;
-      curveRoad.singleLanes = JSON.parse(
-        JSON.stringify(curveRoadInfo.singleLanes)
+      curveRoad.singleCurveRoadWidth = curveRoadInfo.singleCurveRoadWidth;
+      curveRoad.singleCurveRoadDrivewayCount =
+        curveRoadInfo.singleCurveRoadDrivewayCount;
+      curveRoad.singleLanesCurves = JSON.parse(
+        JSON.stringify(curveRoadInfo.singleLanesCurves)
       );
     } else if (curveRoad.way == Constant.twoWay) {
       curveRoad.leftWidth = curveRoadInfo.leftWidth;
@@ -687,9 +749,11 @@ export default class HistoryUtil {
       curveRoad.leftDrivewayCount = curveRoadInfo.leftDrivewayCount;
       curveRoad.rightDrivewayCount = curveRoadInfo.rightDrivewayCount;
       curveRoad.midDivide = JSON.parse(JSON.stringify(curveRoadInfo.midDivide));
-      curveRoad.leftLanes = JSON.parse(JSON.stringify(curveRoadInfo.leftLanes));
-      curveRoad.rightLanes = JSON.parse(
-        JSON.stringify(curveRoadInfo.rightLanes)
+      curveRoad.leftLanesCurves = JSON.parse(
+        JSON.stringify(curveRoadInfo.leftLanesCurves)
+      );
+      curveRoad.rightLanesCurves = JSON.parse(
+        JSON.stringify(curveRoadInfo.rightLanesCurves)
       );
     }
   }

+ 6 - 0
src/graphic/Layer.js

@@ -138,6 +138,10 @@ export default class Layer {
         stateService.setEventName(LayerEvents.AddingLine);
         addLine.setNewLinePoint(position);
         break;
+      case LayerEvents.AddCurveLine:
+        stateService.setEventName(LayerEvents.AddCurveLine);
+        addLine.setNewLinePoint(position);
+        break;
       case LayerEvents.AddPoint:
         stateService.setEventName(LayerEvents.MovePoint);
         const newPoint = addPoint.buildPoint(position);
@@ -319,6 +323,8 @@ export default class Layer {
           elementService.execute(listenLayer.modifyPoint, position);
         }
         break;
+      case LayerEvents.AddCurveLine:
+        break;
       case LayerEvents.AddCircle:
         needAutoRedraw = true;
         listenLayer.start(position);

+ 2 - 1
src/graphic/enum/LayerEvents.js

@@ -27,8 +27,9 @@ const LayerEvents = {
   MoveEdge: "moveEdge",
   MoveCurveEdge: "moveCurveEdge",
 
+  AddCurveLine: "addCurveLine",
+  AddingCurveLine: "addingCurveLine",
   MoveCurveLine: "moveCurveLine",
-  MoveLine: "moveLine",
 
   AddText: "addText",
   MoveText: "moveText",

+ 2 - 0
src/graphic/enum/UIEvents.js

@@ -1,6 +1,8 @@
 const UIEvents = {
   // 画线
   Line: "line",
+  // 画曲线
+  CurveLine: "Curveline",
   // 画圆
   Circle: "Circle",
   // 图例