xushiting 2 роки тому
батько
коміт
a4ba53fecc

+ 6 - 1
src/graphic/History/HistoryUtil.js

@@ -255,7 +255,8 @@ export default class HistoryUtil {
       mathUtil.equalPoint(curveRoadEdge1.end, curveRoadEdge2.end) &&
       mathUtil.equalPoints(curveRoadEdge1.points, curveRoadEdge2.points) &&
       curveRoadEdge1.parent == curveRoadEdge2.parent &&
-      curveRoadEdge1.style == curveRoadEdge2.style
+      curveRoadEdge1.style == curveRoadEdge2.style &&
+      curveRoadEdge1.weight == curveRoadEdge2.weight
     ) {
       return false;
     } else {
@@ -501,6 +502,7 @@ export default class HistoryUtil {
     );
     curveRoadEdgeInfo.parent = curveRoadEdge2.parent;
     curveRoadEdgeInfo.style = curveRoadEdge2.style;
+    curveRoadEdgeInfo.weight = curveRoadEdge2.weight;
     this.setCurveRoadEdgeInfo(curveRoadEdgeInfo);
   }
 
@@ -753,6 +755,8 @@ export default class HistoryUtil {
     data.end = JSON.parse(JSON.stringify(curveRoadEdge.end));
     data.points = JSON.parse(JSON.stringify(curveRoadEdge.points));
     data.curves = JSON.parse(JSON.stringify(curveRoadEdge.curves));
+    data.style = curveRoadEdge.style;
+    data.weight = curveRoadEdge.weight;
     return data;
   }
 
@@ -968,6 +972,7 @@ export default class HistoryUtil {
     curveRoadEdge.curves = JSON.parse(JSON.stringify(curveRoadEdgeInfo.curves));
     curveRoadEdge.type = curveRoadEdgeInfo.type;
     curveRoadEdge.style = curveRoadEdgeInfo.style;
+    curveRoadEdge.weight = curveRoadEdgeInfo.weight;
   }
 
   setCurveRoadInfo(curveRoadInfo) {

+ 57 - 7
src/graphic/Load.js

@@ -18,8 +18,10 @@ import { historyService } from "./Service/HistoryService.js";
 import { uiService } from "./Service/UIService";
 import { crossPointService } from "./Service/CrossPointService.js";
 import Road from "./Geometry/Road.js";
+import CurveRoad from "./Geometry/CurveRoad.js";
 import { edgeService } from "./Service/EdgeService.js";
 import { curvePointService } from "./Service/CurvePointService.js";
+import { curveEdgeService } from "./Service/CurveEdgeService.js";
 
 export default class Load {
   constructor(layer) {
@@ -248,16 +250,63 @@ export default class Load {
           );
         }
       }
+
+      if (dataLocal.curveRoadEdges) {
+        for (let key in dataLocal.curveRoadEdges) {
+          let curveRoadEdgeData = dataLocal.curveRoadEdges[key];
+          let curveRoadEdge = curveEdgeService.create(
+            curveRoadEdgeData.start,
+            curveRoadEdgeData.end,
+            curveRoadEdgeData.vectorId,
+            curveRoadEdgeData.parentId,
+            curveRoadEdgeData.points
+          );
+          curveRoadEdge.setStyle(curveRoadEdgeData.style);
+          curveRoadEdge.setWeight(curveRoadEdgeData.weight);
+          curveEdgeService.setCurves(curveRoadEdge);
+        }
+      }
+
       if (dataLocal.curveRoads) {
         for (let key in dataLocal.curveRoads) {
-          console.log(dataLocal.curveRoads[key].points);
-          console.log(
-            mathUtil.getCurvesByPoints(dataLocal.curveRoads[key].points, 0.2)
+          let curveRoadData = dataLocal.curveRoads[key];
+          let curveRoad = new CurveRoad(
+            curveRoadData.startId,
+            curveRoadData.endId,
+            curveRoadData.vectorId
+          );
+          dataService.addCurveRoad(curveRoad);
+
+          curveRoad.leftEdgeId = curveRoadData.leftEdgeId;
+          curveRoad.rightEdgeId = curveRoadData.rightEdgeId;
+
+          curveRoad.points = [];
+          for (let i = 0; i < curveRoadData.points.length; ++i) {
+            curveRoad.points[i] = dataService.getCurvePoint(
+              curveRoadData.points[i].vectorId
+            );
+          }
+
+          curveRoad.curves = JSON.parse(JSON.stringify(curveRoadData.curves));
+          curveRoad.way = curveRoadData.way;
+          curveRoad.singleCurveRoadWidth = curveRoadData.singleCurveRoadWidth;
+          curveRoad.singleCurveRoadDrivewayCount =
+            curveRoadData.singleCurveRoadDrivewayCount;
+          curveRoad.singleLanesCurves = JSON.parse(
+            JSON.stringify(curveRoadData.singleLanesCurves)
           );
-          let curveRoad = curveRoadService.create(
-            dataLocal.curveRoads[key].startId,
-            dataLocal.curveRoads[key].endId,
-            dataLocal.curveRoads[key].vectorId
+          curveRoad.leftWidth = curveRoadData.leftWidth;
+          curveRoad.rightWidth = curveRoadData.rightWidth;
+          curveRoad.leftDrivewayCount = curveRoadData.leftDrivewayCount;
+          curveRoad.rightDrivewayCount = curveRoadData.rightDrivewayCount;
+          curveRoad.midDivide = JSON.parse(
+            JSON.stringify(curveRoadData.midDivide)
+          );
+          curveRoad.leftLanesCurves = JSON.parse(
+            JSON.stringify(curveRoadData.leftLanesCurves)
+          );
+          curveRoad.rightLanesCurves = JSON.parse(
+            JSON.stringify(curveRoadData.rightLanesCurves)
           );
         }
       }
@@ -293,6 +342,7 @@ export default class Load {
           text.setAngle(dataLocal.texts[key].angle || 0);
         }
       }
+
       if (dataLocal.hasOwnProperty("currentId")) {
         dataService.setCurrentId(dataLocal.currentId);
       }

+ 11 - 8
src/graphic/Service/CurveRoadService.js

@@ -1141,14 +1141,17 @@ export default class CurveRoadService extends RoadService {
       for (let i = 0; i < curveRoad.rightLanesCurves.length; ++i) {
         lineService.createCurveLineByPoints(curveRoad.rightLanesCurves[i]);
       }
-      let leftMidDivide = lineService.createCurveLineByPoints(
-        curveRoad.midDivide.leftMidDivide
-      );
-      leftMidDivide.setStyle(VectorStyle.SingleDashedLine);
-      let rightMidDivide = lineService.createCurveLineByPoints(
-        curveRoad.midDivide.rightMidDivide
-      );
-      rightMidDivide.setStyle(VectorStyle.SingleDashedLine);
+      // let leftMidDivide = lineService.createCurveLineByPoints(
+      //   curveRoad.midDivide.leftMidDivide
+      // );
+      // leftMidDivide.setStyle(VectorStyle.SingleDashedLine);
+      // let rightMidDivide = lineService.createCurveLineByPoints(
+      //   curveRoad.midDivide.rightMidDivide
+      // );
+      // rightMidDivide.setStyle(VectorStyle.SingleDashedLine);
+
+      let mid = lineService.createCurveLineByPoints(curveRoad.points);
+      mid.setStyle(VectorStyle.SingleDashedLine);
     }
   }
 }