Browse Source

修改交叉点

xushiting 2 years ago
parent
commit
5732b0ab30

+ 7 - 7
src/graphic/CanvasStyle/default.js

@@ -19,7 +19,7 @@ const Lane = {
 const Arrow = {
 const Arrow = {
   lineWidth: 2,
   lineWidth: 2,
   strokeStyle: "red",
   strokeStyle: "red",
-}
+};
 
 
 const Magnifier = {
 const Magnifier = {
   strokeStyle: "#2F8FFF",
   strokeStyle: "#2F8FFF",
@@ -30,9 +30,9 @@ const Magnifier = {
     radius: 100,
     radius: 100,
     realRadius: 50,
     realRadius: 50,
     strokeStyle: "#2F8FFF",
     strokeStyle: "#2F8FFF",
-    lineWidth: 3
-  }
-}
+    lineWidth: 3,
+  },
+};
 
 
 const CurveRoad = {
 const CurveRoad = {
   ...Road,
   ...Road,
@@ -83,7 +83,7 @@ const CurveRoadPoint = {
   ...Point,
   ...Point,
 };
 };
 
 
-const ControlPoint = {
+const CrossPoint = {
   ...Point,
   ...Point,
   strokeStyle: "#3290FF",
   strokeStyle: "#3290FF",
   radius: 8,
   radius: 8,
@@ -93,7 +93,7 @@ const Circle = {
   strokeStyle: "red",
   strokeStyle: "red",
   fillStyle: "rgba(0,0,0,0)",
   fillStyle: "rgba(0,0,0,0)",
   lineWidth: 2,
   lineWidth: 2,
-  radius: 30
+  radius: 30,
 };
 };
 
 
 const Measure = {
 const Measure = {
@@ -163,7 +163,7 @@ export default {
   BaseLine,
   BaseLine,
   Circle,
   Circle,
   Text,
   Text,
-  ControlPoint,
+  CrossPoint,
   CurveRoadPoint,
   CurveRoadPoint,
   GuideLine,
   GuideLine,
   Magnifier,
   Magnifier,

+ 7 - 7
src/graphic/CanvasStyle/focus.js

@@ -10,11 +10,11 @@ const NormalLine = {
   ...def.NormalLine,
   ...def.NormalLine,
   lineWidth: 2,
   lineWidth: 2,
   strokeStyle: "#3290FF",
   strokeStyle: "#3290FF",
-}
+};
 
 
 const Magnifier = {
 const Magnifier = {
-  ...def.Magnifier
-}
+  ...def.Magnifier,
+};
 
 
 const CurveRoad = {
 const CurveRoad = {
   ...def.CurveRoad,
   ...def.CurveRoad,
@@ -42,8 +42,8 @@ const CurveRoadPoint = {
   ...Point,
   ...Point,
 };
 };
 
 
-const ControlPoint = {
-  ...def.ControlPoint,
+const CrossPoint = {
+  ...def.CrossPoint,
   fillStyle: "#3290FF",
   fillStyle: "#3290FF",
 };
 };
 
 
@@ -61,7 +61,7 @@ const CurveRoadEdge = {
 const Arrow = {
 const Arrow = {
   lineWidth: 2,
   lineWidth: 2,
   strokeStyle: "red",
   strokeStyle: "red",
-}
+};
 export default {
 export default {
   Road,
   Road,
   Text,
   Text,
@@ -69,7 +69,7 @@ export default {
   Arrow,
   Arrow,
   RoadPoint,
   RoadPoint,
   CurveRoadPoint,
   CurveRoadPoint,
-  ControlPoint,
+  CrossPoint,
   CurveRoad,
   CurveRoad,
   RoadEdge,
   RoadEdge,
   Magnifier,
   Magnifier,

+ 6 - 6
src/graphic/CanvasStyle/select.js

@@ -10,11 +10,11 @@ const NormalLine = {
   ...def.NormalLine,
   ...def.NormalLine,
   lineWidth: 2,
   lineWidth: 2,
   strokeStyle: "#3290FF",
   strokeStyle: "#3290FF",
-}
+};
 const Arrow = {
 const Arrow = {
   lineWidth: 2,
   lineWidth: 2,
   strokeStyle: "red",
   strokeStyle: "red",
-}
+};
 const CurveRoad = {
 const CurveRoad = {
   ...def.CurveRoad,
   ...def.CurveRoad,
   ...Road,
   ...Road,
@@ -53,8 +53,8 @@ const CurveRoadPoint = {
   ...Point,
   ...Point,
 };
 };
 
 
-const ControlPoint = {
-  ...def.ControlPoint,
+const CrossPoint = {
+  ...def.CrossPoint,
   fillStyle: "#3290FF",
   fillStyle: "#3290FF",
 };
 };
 
 
@@ -64,10 +64,10 @@ export default {
   Point,
   Point,
   RoadPoint,
   RoadPoint,
   CurveRoadPoint,
   CurveRoadPoint,
-  ControlPoint,
+  CrossPoint,
   CurveRoad,
   CurveRoad,
   RoadEdge,
   RoadEdge,
   NormalLine,
   NormalLine,
   CurveRoadEdge,
   CurveRoadEdge,
-  Arrow
+  Arrow,
 };
 };

+ 3 - 3
src/graphic/Controls/MoveRoad.js

@@ -5,7 +5,7 @@ import { mathUtil } from "../Util/MathUtil";
 import { curveRoadService } from "../Service/CurveRoadService";
 import { curveRoadService } from "../Service/CurveRoadService";
 import { coordinate } from "../Coordinate";
 import { coordinate } from "../Coordinate";
 import { edgeService } from "../Service/EdgeService";
 import { edgeService } from "../Service/EdgeService";
-import { controlPointService } from "../Service/ControlPointService";
+import { crossPointService } from "../Service/CrossPointService";
 
 
 export default class MoveRoad {
 export default class MoveRoad {
   constructor() {
   constructor() {
@@ -1145,8 +1145,8 @@ export default class MoveRoad {
     curveRoadService.updateForMovePoint(pointId, position);
     curveRoadService.updateForMovePoint(pointId, position);
   }
   }
 
 
-  moveControlPoint(controlPointId, position) {
-    controlPointService.updateForMovePoint(controlPointId, position);
+  moveCrossPoint(crossPointId, position) {
+    crossPointService.updateForMovePoint(crossPointId, position);
   }
   }
 
 
   moveEdge(edgeId, position) {
   moveEdge(edgeId, position) {

+ 3 - 3
src/graphic/Geometry/ControlPoint.js

@@ -2,7 +2,7 @@ import Constant from "../Constant.js";
 import { dataService } from "../Service/DataService.js";
 import { dataService } from "../Service/DataService.js";
 import { mathUtil } from "../Util/MathUtil.js";
 import { mathUtil } from "../Util/MathUtil.js";
 import VectorType from "../enum/VectorType.js";
 import VectorType from "../enum/VectorType.js";
-import Geometry from "./Geometry";
+import Geometry from "./Geometry.js";
 
 
 // 二次贝塞尔曲线
 // 二次贝塞尔曲线
 // var ctx=c.getContext("2d");
 // var ctx=c.getContext("2d");
@@ -11,7 +11,7 @@ import Geometry from "./Geometry";
 // ctx.quadraticCurveTo(20,100,20,20);
 // ctx.quadraticCurveTo(20,100,20,20);
 // ctx.stroke();
 // ctx.stroke();
 
 
-export default class ControlPoint extends Geometry {
+export default class CrossPoint extends Geometry {
   constructor(position, vectorId) {
   constructor(position, vectorId) {
     super();
     super();
     //控制点坐标
     //控制点坐标
@@ -30,7 +30,7 @@ export default class ControlPoint extends Geometry {
 
 
     this.extremePoint = null; //极值
     this.extremePoint = null; //极值
     this.curves = [];
     this.curves = [];
-    this.geoType = VectorType.ControlPoint;
+    this.geoType = VectorType.CrossPoint;
     this.setId(vectorId);
     this.setId(vectorId);
 
 
     this.setPosition(position);
     this.setPosition(position);

+ 48 - 5
src/graphic/History/Change.js

@@ -37,8 +37,8 @@ export default class Change {
     this.lastData.curveRoads = JSON.parse(
     this.lastData.curveRoads = JSON.parse(
       JSON.stringify(dataService.getCurveRoads())
       JSON.stringify(dataService.getCurveRoads())
     );
     );
-    this.lastData.controlPoints = JSON.parse(
-      JSON.stringify(dataService.getControlPoints())
+    this.lastData.crossPoints = JSON.parse(
+      JSON.stringify(dataService.getCrossPoints())
     );
     );
   }
   }
 
 
@@ -56,7 +56,7 @@ export default class Change {
     this.compareRoadEdges();
     this.compareRoadEdges();
     this.compareRoads();
     this.compareRoads();
     this.compareCurveRoads();
     this.compareCurveRoads();
-    this.compareControlPoints();
+    this.compareCrossPoints();
     if (
     if (
       this.currentData.points.length == 0 &&
       this.currentData.points.length == 0 &&
       this.currentData.lines.length == 0 &&
       this.currentData.lines.length == 0 &&
@@ -65,7 +65,8 @@ export default class Change {
       this.currentData.magnifiers.length == 0 &&
       this.currentData.magnifiers.length == 0 &&
       this.currentData.roadPoints.length == 0 &&
       this.currentData.roadPoints.length == 0 &&
       this.currentData.roadEdges.length == 0 &&
       this.currentData.roadEdges.length == 0 &&
-      this.currentData.roads.length == 0
+      this.currentData.roads.length == 0 &&
+      this.currentData.crossPoints.length == 0
     ) {
     ) {
       this.saveCurrentInfo();
       this.saveCurrentInfo();
       return false;
       return false;
@@ -476,7 +477,49 @@ export default class Change {
 
 
   compareCurveRoads() {}
   compareCurveRoads() {}
 
 
-  compareControlPoints() {}
+  compareCrossPoints() {
+    this.currentData.crossPoints = [];
+    const crossPoints = dataService.getCrossPoints();
+
+    for (const key in crossPoints) {
+      const crossPoint = crossPoints[key];
+      const lastCrossPoint = this.lastData.crossPoints[key];
+
+      // 不存在意味着增加
+      if (!lastCrossPoint) {
+        const item = {
+          handle: HistoryEvents.AddCrossPoint,
+          crossPoint: historyUtil.getDataForCrossPoint(crossPoint),
+        };
+        this.currentData.crossPoints.push(item);
+      } else {
+        if (
+          !historyUtil.isDifferentForCrossPoints(crossPoint, lastCrossPoint)
+        ) {
+          delete this.lastData.crossPoints[key];
+          continue;
+        } else {
+          const item = {
+            handle: HistoryEvents.ModifyCrossPoint,
+            preCrossPoint: historyUtil.getDataForCrossPoint(lastCrossPoint),
+            curCrossPoint: historyUtil.getDataForCrossPoint(crossPoint),
+          };
+          this.currentData.crossPoints.push(item);
+        }
+      }
+      delete this.lastData.crossPoints[key];
+    }
+
+    for (const key in this.lastData.crossPoints) {
+      const item = {
+        handle: HistoryEvents.DeleteCrossPoint,
+        crossPoint: historyUtil.getDataForCrossPoint(
+          this.lastData.crossPoints[key]
+        ),
+      };
+      this.currentData.crossPoints.push(item);
+    }
+  }
 }
 }
 
 
 const change = new Change();
 const change = new Change();

+ 56 - 0
src/graphic/History/History.js

@@ -13,6 +13,7 @@ import { circleService } from "../Service/CircleService";
 import { pointService } from "../Service/PointService";
 import { pointService } from "../Service/PointService";
 import { edgeService } from "../Service/EdgeService";
 import { edgeService } from "../Service/EdgeService";
 import { magnifierService } from "../Service/MagnifierService";
 import { magnifierService } from "../Service/MagnifierService";
+import { crossPointService } from "../Service/CrossPointService";
 
 
 export default class History {
 export default class History {
   constructor(layer) {
   constructor(layer) {
@@ -103,6 +104,7 @@ export default class History {
       this.goPreForRoadPoints(item.roadPoints);
       this.goPreForRoadPoints(item.roadPoints);
       this.goPreForRoadEdges(item.roadEdges);
       this.goPreForRoadEdges(item.roadEdges);
       this.goPreForRoads(item.roads);
       this.goPreForRoads(item.roads);
+      this.goPreForCrossPoints(item.crossPoints);
       historyService.undoHistoryRecord();
       historyService.undoHistoryRecord();
       change.saveCurrentInfo();
       change.saveCurrentInfo();
       this.setState();
       this.setState();
@@ -291,6 +293,34 @@ export default class History {
     }
     }
   }
   }
 
 
+  goPreForCrossPoints(itemForCrossPoints) {
+    for (let i = 0; i < itemForCrossPoints.length; ++i) {
+      const item = itemForCrossPoints[i];
+      if (item.handle == HistoryEvents.AddCrossPoint) {
+        dataService.deleteCrossPoint(item.crossPoint.id);
+      } else if (item.handle == HistoryEvents.DeleteCrossPoint) {
+        crossPointService.create;
+        let newCrossPoint = roadService.create(
+          item.crossPoint.position,
+          item.crossPoint.id
+        );
+        historyUtil.assignCrossPointFromCrossPoint(
+          newCrossPoint,
+          item.crossPoint
+        );
+      } else if (item.handle == HistoryEvents.ModifyCrossPoint) {
+        const preCrossPoint = item.preCrossPoint;
+        let currentCrossPoint = dataService.getCrossPoint2(
+          item.curCrossPoint.id
+        );
+        historyUtil.assignCrossPointFromCrossPoint(
+          currentCrossPoint,
+          preCrossPoint
+        );
+      }
+    }
+  }
+
   goNextForPoints(itemForPoints) {
   goNextForPoints(itemForPoints) {
     for (let i = 0; i < itemForPoints.length; ++i) {
     for (let i = 0; i < itemForPoints.length; ++i) {
       const item = itemForPoints[i];
       const item = itemForPoints[i];
@@ -471,6 +501,31 @@ export default class History {
     }
     }
   }
   }
 
 
+  goNextForCrossPoints(itemForCrossPoints) {
+    for (let i = 0; i < itemForCrossPoints.length; ++i) {
+      const item = itemForCrossPoints[i];
+      if (item.handle == HistoryEvents.AddCrossPoint) {
+        let vCrossPoint = crossPointService.create(
+          item.crossPoint.position,
+          item.crossPoint.id
+        );
+        historyUtil.assignCrossPointFromCrossPoint(
+          vCrossPoint,
+          item.crossPoint
+        );
+      } else if (item.handle == HistoryEvents.DeleteCrossPoint) {
+        dataService.deleteCrossPoint(item.crossPoint.id);
+      } else if (item.handle == HistoryEvents.ModifyCrossPoint) {
+        const currentCrossPoint = item.curCrossPoint;
+        let preCrossPoint = dataService.getCrossPoint2(item.curCrossPoint.id);
+        historyUtil.assignCrossPointFromCrossPoint(
+          preCrossPoint,
+          currentCrossPoint
+        );
+      }
+    }
+  }
+
   // 恢复
   // 恢复
   goNextState() {
   goNextState() {
     historyService.redoHistoryRecord();
     historyService.redoHistoryRecord();
@@ -487,6 +542,7 @@ export default class History {
       this.goNextForRoadPoints(item.roadPoints);
       this.goNextForRoadPoints(item.roadPoints);
       this.goNextForRoadEdges(item.roadEdges);
       this.goNextForRoadEdges(item.roadEdges);
       this.goNextForRoads(item.roads);
       this.goNextForRoads(item.roads);
+      this.goNextForCrossPoints(item.crossPoints);
       change.saveCurrentInfo();
       change.saveCurrentInfo();
       this.setState();
       this.setState();
     } else {
     } else {

+ 56 - 8
src/graphic/History/HistoryUtil.js

@@ -144,14 +144,20 @@ export default class HistoryUtil {
     }
     }
   }
   }
 
 
-  // // road2赋值给road1
-  // assignRoadFromRoad(road1, road2) {
-  //   const roadInfo = {};
-  //   roadInfo.vectorId = road1.vectorId;
-  //   roadInfo.start = road2.startId;
-  //   roadInfo.end = road2.endId;
-  //   this.setRoadInfo(roadInfo);
-  // }
+  isDifferentForCrossPoints(crossPoint1, crossPoint2) {
+    if (
+      mathUtil.equalPoint(crossPoint1, crossPoint2) &&
+      mathUtil.equalPoint(crossPoint1.extremePoint, crossPoint2.extremePoint) &&
+      crossPoint1.edgeInfo1.id == crossPoint2.edgeInfo1.id &&
+      crossPoint1.edgeInfo1.dir == crossPoint2.edgeInfo1.dir &&
+      crossPoint1.edgeInfo2.id == crossPoint2.edgeInfo2.id &&
+      crossPoint1.edgeInfo2.dir == crossPoint2.edgeInfo2.dir
+    ) {
+      return false;
+    } else {
+      return true;
+    }
+  }
 
 
   assignPointFromPoint(point1, point2) {
   assignPointFromPoint(point1, point2) {
     const pointInfo = {};
     const pointInfo = {};
@@ -252,6 +258,24 @@ export default class HistoryUtil {
     this.setRoadInfo(roadInfo);
     this.setRoadInfo(roadInfo);
   }
   }
 
 
+  assignCrossPointFromCrossPoint(crossPoint1, crossPoint2) {
+    const crossPointInfo = {};
+    crossPointInfo.vectorId = crossPoint1.vectorId;
+    crossPointInfo.position = { x: crossPoint2.x, y: crossPoint2.y };
+    crossPointInfo.edgeInfo1 = JSON.parse(
+      JSON.stringify(crossPoint2.edgeInfo1)
+    );
+    crossPointInfo.edgeInfo2 = JSON.parse(
+      JSON.stringify(crossPoint2.edgeInfo2)
+    );
+    crossPointInfo.extremePoint = {
+      x: crossPoint2.extremePoint.x,
+      y: crossPoint2.extremePoint.y,
+    };
+    crossPointInfo.curves = JSON.parse(JSON.stringify(crossPoint2.curves));
+    this.setCrossPointInfo(crossPointInfo);
+  }
+
   getDataForPoint(point) {
   getDataForPoint(point) {
     const data = {};
     const data = {};
     data.id = point.vectorId;
     data.id = point.vectorId;
@@ -363,6 +387,20 @@ export default class HistoryUtil {
     return data;
     return data;
   }
   }
 
 
+  getDataForCrossPoint(crossPoint) {
+    const data = {};
+    data.id = crossPoint.vectorId;
+    data.type = crossPoint.geoType;
+    data.position = {};
+    mathUtil.clonePoint(data.position, crossPoint);
+    data.extremePoint = {};
+    mathUtil.clonePoint(data.extremePoint, crossPoint.extremePoint);
+
+    data.edgeInfo1 = JSON.parse(JSON.stringify(crossPoint.edgeInfo1));
+    data.edgeInfo2 = JSON.parse(JSON.stringify(crossPoint.edgeInfo2));
+    return data;
+  }
+
   setPointInfo(pointInfo) {
   setPointInfo(pointInfo) {
     let point = dataService.getPoint(pointInfo.vectorId);
     let point = dataService.getPoint(pointInfo.vectorId);
     mathUtil.clonePoint(point, pointInfo.position);
     mathUtil.clonePoint(point, pointInfo.position);
@@ -449,6 +487,16 @@ export default class HistoryUtil {
       road.rightLanes = JSON.parse(JSON.stringify(roadInfo.rightLanes));
       road.rightLanes = JSON.parse(JSON.stringify(roadInfo.rightLanes));
     }
     }
   }
   }
+
+  setCrossPointInfo(crossPointInfo) {
+    let crossPoint = dataService.getCrossPoint2(crossPointInfo.vectorId);
+    crossPoint.vectorId = crossPointInfo.vectorId;
+    mathUtil.clonePoint(crossPoint, crossPointInfo.position);
+    mathUtil.clonePoint(crossPoint.extremePoint, crossPointInfo.extremePoint);
+    crossPoint.edgeInfo1 = JSON.parse(JSON.stringify(crossPointInfo.edgeInfo1));
+    crossPoint.edgeInfo2 = JSON.parse(JSON.stringify(crossPointInfo.edgeInfo2));
+    crossPoint.curves = JSON.parse(JSON.stringify(crossPointInfo.curves));
+  }
 }
 }
 
 
 const historyUtil = new HistoryUtil();
 const historyUtil = new HistoryUtil();

+ 6 - 6
src/graphic/Layer.js

@@ -479,11 +479,11 @@ export default class Layer {
         moveRoad.moveCurveRoadPoint(draggingItem.vectorId, position);
         moveRoad.moveCurveRoadPoint(draggingItem.vectorId, position);
         needAutoRedraw = true;
         needAutoRedraw = true;
         break;
         break;
-      case LayerEvents.MoveControlPoint:
+      case LayerEvents.MoveCrossPoint:
         if (!draggingItem || !draggingItem.vectorId) {
         if (!draggingItem || !draggingItem.vectorId) {
           return;
           return;
         }
         }
-        moveRoad.moveControlPoint(draggingItem.vectorId, position);
+        moveRoad.moveCrossPoint(draggingItem.vectorId, position);
         needAutoRedraw = true;
         needAutoRedraw = true;
         break;
         break;
       case LayerEvents.MoveEdge:
       case LayerEvents.MoveEdge:
@@ -736,7 +736,7 @@ export default class Layer {
         needAutoRedraw = true;
         needAutoRedraw = true;
         this.history.save();
         this.history.save();
         break;
         break;
-      case LayerEvents.MoveControlPoint:
+      case LayerEvents.MoveCrossPoint:
         needAutoRedraw = true;
         needAutoRedraw = true;
         this.history.save();
         this.history.save();
         break;
         break;
@@ -803,7 +803,7 @@ export default class Layer {
         const road = dataService.getRoad(focusItem.vectorId);
         const road = dataService.getRoad(focusItem.vectorId);
         roadService.subtraRoadFromIntersect(road.startId, focusItem.vectorId);
         roadService.subtraRoadFromIntersect(road.startId, focusItem.vectorId);
         roadService.subtraRoadFromIntersect(road.endId, focusItem.vectorId);
         roadService.subtraRoadFromIntersect(road.endId, focusItem.vectorId);
-        //dataService.deleteControlPoint()
+        //dataService.deleteCrossPoint()
         dataService.deleteRoad(focusItem.vectorId);
         dataService.deleteRoad(focusItem.vectorId);
         this.renderer.autoRedraw();
         this.renderer.autoRedraw();
         this.history.save();
         this.history.save();
@@ -981,8 +981,8 @@ export default class Layer {
           stateService.setEventName(LayerEvents.MoveCurveRoad);
           stateService.setEventName(LayerEvents.MoveCurveRoad);
         } else if (selectItem.type == VectorType.CurveRoadPoint) {
         } else if (selectItem.type == VectorType.CurveRoadPoint) {
           stateService.setEventName(LayerEvents.MoveCurveRoadPoint);
           stateService.setEventName(LayerEvents.MoveCurveRoadPoint);
-        } else if (selectItem.type == VectorType.ControlPoint) {
-          stateService.setEventName(LayerEvents.MoveControlPoint);
+        } else if (selectItem.type == VectorType.CrossPoint) {
+          stateService.setEventName(LayerEvents.MoveCrossPoint);
         } else if (selectItem.type == VectorType.RoadEdge) {
         } else if (selectItem.type == VectorType.RoadEdge) {
           stateService.setEventName(LayerEvents.MoveEdge);
           stateService.setEventName(LayerEvents.MoveEdge);
         } else if (selectItem.type == VectorType.CurveRoadEdge) {
         } else if (selectItem.type == VectorType.CurveRoadEdge) {

+ 26 - 29
src/graphic/ListenLayer.js

@@ -26,7 +26,7 @@ export default class ListenLayer {
           exceptRoadIds,
           exceptRoadIds,
           exceptCurveRoadPointId,
           exceptCurveRoadPointId,
           exceptCurveRoadId,
           exceptCurveRoadId,
-          exceptCrossControlPointId,
+          exceptCrossCrossPointId,
           exceptTextId,
           exceptTextId,
   }  
   }  
    * @returns 
    * @returns 
@@ -69,9 +69,9 @@ export default class ListenLayer {
       exceptVectorIds.exceptCircleId
       exceptVectorIds.exceptCircleId
     );
     );
     //交叉口拐弯处的控制点
     //交叉口拐弯处的控制点
-    selectInfo.controlPointInfo = this.isSelectCrossControlPoint(
+    selectInfo.crossPointInfo = this.isSelectCrossCrossPoint(
       position,
       position,
-      exceptVectorIds.exceptCrossControlPointId
+      exceptVectorIds.exceptCrossCrossPointId
     );
     );
     selectInfo.textInfo = this.isSelectText(
     selectInfo.textInfo = this.isSelectText(
       position,
       position,
@@ -710,34 +710,31 @@ export default class ListenLayer {
     }
     }
   }
   }
 
 
-  isSelectCrossControlPoint(position, exceptCrossControlPointId) {
-    let crossControlPointInfo = {
-      crossControlPointId: null,
+  isSelectCrossCrossPoint(position, exceptCrossCrossPointId) {
+    let crossCrossPointInfo = {
+      crossCrossPointId: null,
       type: null,
       type: null,
       distance: null,
       distance: null,
     };
     };
-    const controlPoints = dataService.getControlPoints();
-    for (const controlPointId in controlPoints) {
-      if (controlPointId == exceptCrossControlPointId) {
+    const crossPoints = dataService.getCrossPoints();
+    for (const crossPointId in crossPoints) {
+      if (crossPointId == exceptCrossCrossPointId) {
         continue;
         continue;
       }
       }
-      const controlPoint = dataService.getControlPoint2(controlPointId);
-      const distance = mathUtil.getDistance(
-        position,
-        controlPoint.extremePoint
-      );
+      const crossPoint = dataService.getCrossPoint2(crossPointId);
+      const distance = mathUtil.getDistance(position, crossPoint.extremePoint);
       if (distance < Constant.minAdsorbPix) {
       if (distance < Constant.minAdsorbPix) {
-        crossControlPointInfo = {
-          crossControlPointId: controlPointId,
-          type: VectorType.ControlPoint,
+        crossCrossPointInfo = {
+          crossCrossPointId: crossPointId,
+          type: VectorType.CrossPoint,
           distance: distance,
           distance: distance,
-          x: controlPoint.extremePoint.x,
-          y: controlPoint.extremePoint.y,
+          x: crossPoint.extremePoint.x,
+          y: crossPoint.extremePoint.y,
         };
         };
       }
       }
     }
     }
 
 
-    return crossControlPointInfo;
+    return crossCrossPointInfo;
   }
   }
 
 
   isSelectText(position, exceptTextId) {
   isSelectText(position, exceptTextId) {
@@ -800,7 +797,7 @@ export default class ListenLayer {
         curveRoadPointInfo,
         curveRoadPointInfo,
         roadEdgeInfo,
         roadEdgeInfo,
         curveRoadEdgeInfo,
         curveRoadEdgeInfo,
-        controlPointInfo,
+        crossPointInfo,
         pointInfo,
         pointInfo,
         roadPointInfo
         roadPointInfo
       }  
       }  
@@ -886,12 +883,12 @@ export default class ListenLayer {
         this.modifyPoint.x = info.curveRoadEdgeInfo.x;
         this.modifyPoint.x = info.curveRoadEdgeInfo.x;
         this.modifyPoint.y = info.curveRoadEdgeInfo.y;
         this.modifyPoint.y = info.curveRoadEdgeInfo.y;
       }
       }
-    } else if (info && info.controlPointInfo.crossControlPointId) {
+    } else if (info && info.crossPointInfo.crossCrossPointId) {
       this.modifyPoint = {};
       this.modifyPoint = {};
-      this.modifyPoint.linkedCrossControlPointId =
-        info.controlPointInfo.crossControlPointId;
-      this.modifyPoint.x = info.controlPointInfo.x;
-      this.modifyPoint.y = info.controlPointInfo.y;
+      this.modifyPoint.linkedCrossCrossPointId =
+        info.crossPointInfo.crossCrossPointId;
+      this.modifyPoint.x = info.crossPointInfo.x;
+      this.modifyPoint.y = info.crossPointInfo.y;
     } else if (info && info.textInfo.textId) {
     } else if (info && info.textInfo.textId) {
       this.modifyPoint = {};
       this.modifyPoint = {};
       this.modifyPoint.textId = info.textInfo.textId;
       this.modifyPoint.textId = info.textInfo.textId;
@@ -1031,10 +1028,10 @@ export default class ListenLayer {
         VectorType.CurveRoad,
         VectorType.CurveRoad,
         SelectState.Select
         SelectState.Select
       );
       );
-    } else if (this.modifyPoint.linkedCrossControlPointId) {
+    } else if (this.modifyPoint.linkedCrossCrossPointId) {
       stateService.setSelectItem(
       stateService.setSelectItem(
-        this.modifyPoint.linkedCrossControlPointId,
-        VectorType.ControlPoint,
+        this.modifyPoint.linkedCrossCrossPointId,
+        VectorType.CrossPoint,
         SelectState.Select
         SelectState.Select
       );
       );
     } else if (this.modifyPoint.textId) {
     } else if (this.modifyPoint.textId) {

+ 2 - 2
src/graphic/Renderer/Draw.js

@@ -284,7 +284,7 @@ export default class Draw {
     }
     }
   }
   }
 
 
-  drawControlPoint(vector) {
+  drawCrossPoint(vector) {
     const start = coordinate.getScreenXY(
     const start = coordinate.getScreenXY(
       dataService
       dataService
         .getRoadEdge(vector.edgeInfo1.id)
         .getRoadEdge(vector.edgeInfo1.id)
@@ -312,7 +312,7 @@ export default class Draw {
       // pt.y,
       // pt.y,
       extremePoint.x,
       extremePoint.x,
       extremePoint.y,
       extremePoint.y,
-      Style.ControlPoint.radius * coordinate.ratio,
+      Style.CrossPoint.radius * coordinate.ratio,
       0,
       0,
       Math.PI * 2,
       Math.PI * 2,
       true
       true

+ 5 - 5
src/graphic/Renderer/Render.js

@@ -32,8 +32,8 @@ export default class Render {
       case VectorType.RoadPoint:
       case VectorType.RoadPoint:
         draw.drawRoadPoint(vector);
         draw.drawRoadPoint(vector);
         return;
         return;
-      case VectorType.ControlPoint:
-        draw.drawControlPoint(vector);
+      case VectorType.CrossPoint:
+        draw.drawCrossPoint(vector);
         return;
         return;
       case VectorType.Line:
       case VectorType.Line:
         draw.drawLine(vector); //需要修改,有几种情况:测量,校准,基准
         draw.drawLine(vector); //需要修改,有几种情况:测量,校准,基准
@@ -129,9 +129,9 @@ export default class Render {
       this.drawGeometry(curveRoads[key]);
       this.drawGeometry(curveRoads[key]);
     }
     }
 
 
-    let controlPoints = dataService.getControlPoints();
-    for (let key in controlPoints) {
-      this.drawGeometry(controlPoints[key]);
+    let crossPoints = dataService.getCrossPoints();
+    for (let key in crossPoints) {
+      this.drawGeometry(crossPoints[key]);
     }
     }
 
 
     let lines = dataService.getLines();
     let lines = dataService.getLines();

+ 32 - 35
src/graphic/Service/ControlPointService.js

@@ -1,23 +1,20 @@
-import ControlPoint from "../Geometry/ControlPoint.js";
+import CrossPoint from "../Geometry/CrossPoint.js";
 import { dataService } from "./DataService.js";
 import { dataService } from "./DataService.js";
-import { mathUtil } from "../Util/MathUtil";
+import { mathUtil } from "../Util/MathUtil.js";
 import { edgeService } from "./EdgeService.js";
 import { edgeService } from "./EdgeService.js";
 import { roadService } from "./RoadService.js";
 import { roadService } from "./RoadService.js";
 
 
-export default class ControlPointService {
+export default class CrossPointService {
   constructor() {}
   constructor() {}
 
 
   //暂时没有添加到vectorData里
   //暂时没有添加到vectorData里
   create(position, vectorId) {
   create(position, vectorId) {
-    let controlPoint = new ControlPoint(position, vectorId);
-    return controlPoint;
+    let crossPoint = new CrossPoint(position, vectorId);
+    return crossPoint;
   }
   }
 
 
   update(realRosition, point1, point2, edge1, edge2, dir1, dir2) {
   update(realRosition, point1, point2, edge1, edge2, dir1, dir2) {
-    let controlPoint = dataService.getControlPoint(
-      edge1.vectorId,
-      edge2.vectorId
-    );
+    let crossPoint = dataService.getCrossPoint(edge1.vectorId, edge2.vectorId);
     const line1 = edgeService.getLine(edge1);
     const line1 = edgeService.getLine(edge1);
     const line2 = edgeService.getLine(edge2);
     const line2 = edgeService.getLine(edge2);
     let position = mathUtil.getPositionForExtendedLine(point1, point2);
     let position = mathUtil.getPositionForExtendedLine(point1, point2);
@@ -36,43 +33,43 @@ export default class ControlPointService {
       position2 = mathUtil.getJoinLinePoint(_position, line2);
       position2 = mathUtil.getJoinLinePoint(_position, line2);
     }
     }
 
 
-    if (controlPoint == null) {
+    if (crossPoint == null) {
       //新建控制点
       //新建控制点
-      controlPoint = this.create(realRosition);
+      crossPoint = this.create(realRosition);
       //需要删除之前的控制点
       //需要删除之前的控制点
-      dataService.deleteControlPointForEdge(edge1.vectorId, dir1);
-      dataService.deleteControlPointForEdge(edge2.vectorId, dir2);
-      dataService.deleteControlPoint(edge1.vectorId, edge2.vectorId);
+      dataService.deleteCrossPointForEdge(edge1.vectorId, dir1);
+      dataService.deleteCrossPointForEdge(edge2.vectorId, dir2);
+      dataService.deleteCrossPoint(edge1.vectorId, edge2.vectorId);
       //设置控制点的信息
       //设置控制点的信息
-      controlPoint.setEdgeInfo(edge1.vectorId, dir1, edge2.vectorId, dir2);
+      crossPoint.setEdgeInfo(edge1.vectorId, dir1, edge2.vectorId, dir2);
       //添加到数据集里
       //添加到数据集里
-      dataService.addControlPoint(controlPoint);
+      dataService.addCrossPoint(crossPoint);
     }
     }
     //更新控制点坐标
     //更新控制点坐标
     else {
     else {
-      controlPoint.setPosition(realRosition);
+      crossPoint.setPosition(realRosition);
     }
     }
     edge1.setPosition(position1, dir1);
     edge1.setPosition(position1, dir1);
     edge2.setPosition(position2, dir2);
     edge2.setPosition(position2, dir2);
-    controlPoint.setExtremePoint();
+    crossPoint.setExtremePoint();
   }
   }
 
 
   //newleft,end------------road.leftEdgeId,end
   //newleft,end------------road.leftEdgeId,end
-  replaceEdgeId(controlPoint, oldEdgeId, newEdgeId) {
-    if (controlPoint == null) {
+  replaceEdgeId(crossPoint, oldEdgeId, newEdgeId) {
+    if (crossPoint == null) {
       return;
       return;
     }
     }
-    dataService.deleteControlPoint(
-      controlPoint.edgeInfo1.id,
-      controlPoint.edgeInfo2.id
+    dataService.deleteCrossPoint(
+      crossPoint.edgeInfo1.id,
+      crossPoint.edgeInfo2.id
     );
     );
-    if (controlPoint.edgeInfo1.id == oldEdgeId) {
-      controlPoint.edgeInfo1.id = newEdgeId;
-    } else if (controlPoint.edgeInfo2.id == oldEdgeId) {
-      controlPoint.edgeInfo2.id = newEdgeId;
+    if (crossPoint.edgeInfo1.id == oldEdgeId) {
+      crossPoint.edgeInfo1.id = newEdgeId;
+    } else if (crossPoint.edgeInfo2.id == oldEdgeId) {
+      crossPoint.edgeInfo2.id = newEdgeId;
     }
     }
-    controlPoint.setExtremePoint();
-    dataService.addControlPoint(controlPoint);
+    crossPoint.setExtremePoint();
+    dataService.addCrossPoint(crossPoint);
   }
   }
 
 
   //角度小,road宽的时候,可能edge顺序会倒,但是road的顺序不会
   //角度小,road宽的时候,可能edge顺序会倒,但是road的顺序不会
@@ -118,12 +115,12 @@ export default class ControlPointService {
     }
     }
   }
   }
 
 
-  updateForMovePoint(controlPointId, newPosition) {
-    let controlPoint = dataService.getControlPoint2(controlPointId);
-    mathUtil.clonePoint(controlPoint.extremePoint, newPosition);
-    controlPoint.setCurves();
+  updateForMovePoint(crossPointId, newPosition) {
+    let crossPoint = dataService.getCrossPoint2(crossPointId);
+    mathUtil.clonePoint(crossPoint.extremePoint, newPosition);
+    crossPoint.setCurves();
   }
   }
 }
 }
 
 
-const controlPointService = new ControlPointService();
-export { controlPointService };
+const crossPointService = new CrossPointService();
+export { crossPointService };

+ 43 - 43
src/graphic/Service/DataService.js

@@ -51,7 +51,7 @@ export class DataService {
     this.vectorData.curveRoads = {};
     this.vectorData.curveRoads = {};
     this.vectorData.curveRoadEdges = {};
     this.vectorData.curveRoadEdges = {};
     //直路交叉的时候,产生的曲线控制点
     //直路交叉的时候,产生的曲线控制点
-    this.vectorData.controlPoints = {};
+    this.vectorData.crossPoints = {};
     //直线,起点和终点都是point的id
     //直线,起点和终点都是point的id
     this.vectorData.lines = {};
     this.vectorData.lines = {};
     //弯曲线条
     //弯曲线条
@@ -363,81 +363,81 @@ export class DataService {
   /**
   /**
    * 对控制点的操作
    * 对控制点的操作
    */
    */
-  getControlPoints() {
-    return this.vectorData.controlPoints;
+  getCrossPoints() {
+    return this.vectorData.crossPoints;
   }
   }
 
 
-  getControlPoint(edgeId1, edgeId2) {
-    if (this.vectorData.controlPoints[edgeId1 + "-" + edgeId2]) {
-      return this.vectorData.controlPoints[edgeId1 + "-" + edgeId2];
-    } else if (this.vectorData.controlPoints[edgeId2 + "-" + edgeId1]) {
-      return this.vectorData.controlPoints[edgeId2 + "-" + edgeId1];
+  getCrossPoint(edgeId1, edgeId2) {
+    if (this.vectorData.crossPoints[edgeId1 + "-" + edgeId2]) {
+      return this.vectorData.crossPoints[edgeId1 + "-" + edgeId2];
+    } else if (this.vectorData.crossPoints[edgeId2 + "-" + edgeId1]) {
+      return this.vectorData.crossPoints[edgeId2 + "-" + edgeId1];
     } else {
     } else {
       return null;
       return null;
     }
     }
   }
   }
 
 
-  getControlPoint2(key) {
-    return this.vectorData.controlPoints[key];
+  getCrossPoint2(key) {
+    return this.vectorData.crossPoints[key];
   }
   }
 
 
-  getControlPointForEdgeId(edgeId, dir) {
-    for (let key in this.vectorData.controlPoints) {
-      const controlPoint = this.vectorData.controlPoints[key];
+  getCrossPointForEdgeId(edgeId, dir) {
+    for (let key in this.vectorData.crossPoints) {
+      const crossPoint = this.vectorData.crossPoints[key];
       if (
       if (
-        controlPoint.edgeInfo1.id == edgeId &&
-        controlPoint.edgeInfo1.dir == dir
+        crossPoint.edgeInfo1.id == edgeId &&
+        crossPoint.edgeInfo1.dir == dir
       ) {
       ) {
-        return this.vectorData.controlPoints[key];
+        return this.vectorData.crossPoints[key];
       } else if (
       } else if (
-        controlPoint.edgeInfo2.id == edgeId &&
-        controlPoint.edgeInfo2.dir == dir
+        crossPoint.edgeInfo2.id == edgeId &&
+        crossPoint.edgeInfo2.dir == dir
       ) {
       ) {
-        return this.vectorData.controlPoints[key];
+        return this.vectorData.crossPoints[key];
       }
       }
     }
     }
   }
   }
 
 
-  addControlPoint(controlPoint) {
-    this.vectorData.controlPoints[
-      controlPoint.edgeInfo1.id + "-" + controlPoint.edgeInfo2.id
-    ] = controlPoint;
+  addCrossPoint(crossPoint) {
+    this.vectorData.crossPoints[
+      crossPoint.edgeInfo1.id + "-" + crossPoint.edgeInfo2.id
+    ] = crossPoint;
   }
   }
 
 
-  deleteControlPoint(edgeId1, edgeId2) {
+  deleteCrossPoint(edgeId1, edgeId2) {
     let key = edgeId1 + "-" + edgeId2;
     let key = edgeId1 + "-" + edgeId2;
-    if (!this.vectorData.controlPoints[key]) {
+    if (!this.vectorData.crossPoints[key]) {
       key = edgeId2 + "-" + edgeId1;
       key = edgeId2 + "-" + edgeId1;
     }
     }
-    if (this.vectorData.controlPoints[key]) {
-      delete this.vectorData.controlPoints[key];
+    if (this.vectorData.crossPoints[key]) {
+      delete this.vectorData.crossPoints[key];
     }
     }
   }
   }
 
 
-  deleteControlPointForEdge(edgeId, dir) {
-    let dControlPointIds = [];
-    for (let key in this.vectorData.controlPoints) {
-      const controlPoint = this.vectorData.controlPoints[key];
+  deleteCrossPointForEdge(edgeId, dir) {
+    let dCrossPointIds = [];
+    for (let key in this.vectorData.crossPoints) {
+      const crossPoint = this.vectorData.crossPoints[key];
       if (
       if (
-        controlPoint.edgeInfo1.id == edgeId ||
-        controlPoint.edgeInfo2.id == edgeId
+        crossPoint.edgeInfo1.id == edgeId ||
+        crossPoint.edgeInfo2.id == edgeId
       ) {
       ) {
-        dControlPointIds.push(key);
+        dCrossPointIds.push(key);
       }
       }
     }
     }
 
 
-    for (let i = 0; i < dControlPointIds.length; ++i) {
-      const controlPoint = this.vectorData.controlPoints[dControlPointIds[i]];
+    for (let i = 0; i < dCrossPointIds.length; ++i) {
+      const crossPoint = this.vectorData.crossPoints[dCrossPointIds[i]];
       if (
       if (
-        controlPoint.edgeInfo1.id == edgeId &&
-        controlPoint.edgeInfo1.dir == dir
+        crossPoint.edgeInfo1.id == edgeId &&
+        crossPoint.edgeInfo1.dir == dir
       ) {
       ) {
-        delete this.vectorData.controlPoints[dControlPointIds[i]];
+        delete this.vectorData.crossPoints[dCrossPointIds[i]];
       } else if (
       } else if (
-        controlPoint.edgeInfo2.id == edgeId &&
-        controlPoint.edgeInfo2.dir == dir
+        crossPoint.edgeInfo2.id == edgeId &&
+        crossPoint.edgeInfo2.dir == dir
       ) {
       ) {
-        delete this.vectorData.controlPoints[dControlPointIds[i]];
+        delete this.vectorData.crossPoints[dCrossPointIds[i]];
       }
       }
     }
     }
   }
   }
@@ -543,7 +543,7 @@ export class DataService {
     this.vectorData.curveRoads = {};
     this.vectorData.curveRoads = {};
     this.vectorData.curveRoadEdges = {};
     this.vectorData.curveRoadEdges = {};
     //直路交叉的时候,产生的曲线控制点
     //直路交叉的时候,产生的曲线控制点
-    this.vectorData.controlPoints = {};
+    this.vectorData.crossPoints = {};
     //直线,起点和终点都是point的id
     //直线,起点和终点都是point的id
     this.vectorData.lines = {};
     this.vectorData.lines = {};
     //弯曲线条
     //弯曲线条

+ 81 - 111
src/graphic/Service/EdgeService.js

@@ -2,7 +2,7 @@ import RoadEdge from "../Geometry/RoadEdge.js";
 import Constant from "../Constant.js";
 import Constant from "../Constant.js";
 import { dataService } from "./DataService.js";
 import { dataService } from "./DataService.js";
 import { roadService } from "./RoadService.js";
 import { roadService } from "./RoadService.js";
-import { controlPointService } from "./ControlPointService.js";
+import { crossPointService } from "./CrossPointService.js";
 import { mathUtil } from "../Util/MathUtil.js";
 import { mathUtil } from "../Util/MathUtil.js";
 
 
 export default class EdgeService {
 export default class EdgeService {
@@ -146,15 +146,15 @@ export default class EdgeService {
 
 
       if (angle > Constant.maxAngle || angle < Constant.minAngle) {
       if (angle > Constant.maxAngle || angle < Constant.minAngle) {
         //要删除控制点
         //要删除控制点
-        dataService.deleteControlPoint(leftEdge1.vectorId, rightEdge2.vectorId);
-        dataService.deleteControlPoint(rightEdge1.vectorId, leftEdge2.vectorId);
+        dataService.deleteCrossPoint(leftEdge1.vectorId, rightEdge2.vectorId);
+        dataService.deleteCrossPoint(rightEdge1.vectorId, leftEdge2.vectorId);
       } else {
       } else {
         points.push(startPoint1);
         points.push(startPoint1);
         points.push(endPoint1);
         points.push(endPoint1);
         points.push(endPoint2);
         points.push(endPoint2);
         if (mathUtil.isClockwise(points)) {
         if (mathUtil.isClockwise(points)) {
-          //需要考虑控制点ControlPointService
-          controlPointService.update(
+          //需要考虑控制点CrossPointService
+          crossPointService.update(
             newEdgePoint1,
             newEdgePoint1,
             startPoint1,
             startPoint1,
             newEdgePoint1,
             newEdgePoint1,
@@ -163,7 +163,7 @@ export default class EdgeService {
             "start",
             "start",
             "start"
             "start"
           );
           );
-          controlPointService.update(
+          crossPointService.update(
             newEdgePoint2,
             newEdgePoint2,
             newEdgePoint2,
             newEdgePoint2,
             startPoint1,
             startPoint1,
@@ -173,8 +173,8 @@ export default class EdgeService {
             "start"
             "start"
           );
           );
         } else {
         } else {
-          //需要考虑控制点ControlPointService
-          controlPointService.update(
+          //需要考虑控制点CrossPointService
+          crossPointService.update(
             newEdgePoint2,
             newEdgePoint2,
             startPoint1,
             startPoint1,
             newEdgePoint2,
             newEdgePoint2,
@@ -183,7 +183,7 @@ export default class EdgeService {
             "start",
             "start",
             "start"
             "start"
           );
           );
-          controlPointService.update(
+          crossPointService.update(
             newEdgePoint1,
             newEdgePoint1,
             newEdgePoint1,
             newEdgePoint1,
             startPoint1,
             startPoint1,
@@ -216,18 +216,15 @@ export default class EdgeService {
 
 
       if (angle > Constant.maxAngle || angle < Constant.minAngle) {
       if (angle > Constant.maxAngle || angle < Constant.minAngle) {
         //要删除控制点
         //要删除控制点
-        dataService.deleteControlPoint(leftEdge1.vectorId, leftEdge2.vectorId);
-        dataService.deleteControlPoint(
-          rightEdge1.vectorId,
-          rightEdge2.vectorId
-        );
+        dataService.deleteCrossPoint(leftEdge1.vectorId, leftEdge2.vectorId);
+        dataService.deleteCrossPoint(rightEdge1.vectorId, rightEdge2.vectorId);
       } else {
       } else {
         points.push(startPoint1);
         points.push(startPoint1);
         points.push(endPoint1);
         points.push(endPoint1);
         points.push(startPoint2);
         points.push(startPoint2);
         if (mathUtil.isClockwise(points)) {
         if (mathUtil.isClockwise(points)) {
-          //需要考虑控制点ControlPointService
-          controlPointService.update(
+          //需要考虑控制点CrossPointService
+          crossPointService.update(
             newEdgePoint1,
             newEdgePoint1,
             startPoint1,
             startPoint1,
             newEdgePoint1,
             newEdgePoint1,
@@ -236,7 +233,7 @@ export default class EdgeService {
             "start",
             "start",
             "end"
             "end"
           );
           );
-          controlPointService.update(
+          crossPointService.update(
             newEdgePoint2,
             newEdgePoint2,
             newEdgePoint2,
             newEdgePoint2,
             startPoint1,
             startPoint1,
@@ -246,8 +243,8 @@ export default class EdgeService {
             "end"
             "end"
           );
           );
         } else {
         } else {
-          //需要考虑控制点ControlPointService
-          controlPointService.update(
+          //需要考虑控制点CrossPointService
+          crossPointService.update(
             newEdgePoint2,
             newEdgePoint2,
             startPoint1,
             startPoint1,
             newEdgePoint2,
             newEdgePoint2,
@@ -256,7 +253,7 @@ export default class EdgeService {
             "start",
             "start",
             "end"
             "end"
           );
           );
-          controlPointService.update(
+          crossPointService.update(
             newEdgePoint1,
             newEdgePoint1,
             newEdgePoint1,
             newEdgePoint1,
             startPoint1,
             startPoint1,
@@ -291,18 +288,15 @@ export default class EdgeService {
       mathUtil.clonePoint(rightEdge2.start, newEdgePoint2);
       mathUtil.clonePoint(rightEdge2.start, newEdgePoint2);
       if (angle > Constant.maxAngle || angle < Constant.minAngle) {
       if (angle > Constant.maxAngle || angle < Constant.minAngle) {
         //要删除控制点
         //要删除控制点
-        dataService.deleteControlPoint(leftEdge1.vectorId, leftEdge2.vectorId);
-        dataService.deleteControlPoint(
-          rightEdge1.vectorId,
-          rightEdge2.vectorId
-        );
+        dataService.deleteCrossPoint(leftEdge1.vectorId, leftEdge2.vectorId);
+        dataService.deleteCrossPoint(rightEdge1.vectorId, rightEdge2.vectorId);
       } else {
       } else {
         points.push(endPoint1);
         points.push(endPoint1);
         points.push(startPoint1);
         points.push(startPoint1);
         points.push(endPoint2);
         points.push(endPoint2);
         if (!mathUtil.isClockwise(points)) {
         if (!mathUtil.isClockwise(points)) {
-          //需要考虑控制点ControlPointService
-          controlPointService.update(
+          //需要考虑控制点CrossPointService
+          crossPointService.update(
             newEdgePoint1,
             newEdgePoint1,
             endPoint1,
             endPoint1,
             newEdgePoint1,
             newEdgePoint1,
@@ -311,7 +305,7 @@ export default class EdgeService {
             "end",
             "end",
             "start"
             "start"
           );
           );
-          controlPointService.update(
+          crossPointService.update(
             newEdgePoint2,
             newEdgePoint2,
             newEdgePoint2,
             newEdgePoint2,
             endPoint1,
             endPoint1,
@@ -321,8 +315,8 @@ export default class EdgeService {
             "start"
             "start"
           );
           );
         } else {
         } else {
-          //需要考虑控制点ControlPointService
-          controlPointService.update(
+          //需要考虑控制点CrossPointService
+          crossPointService.update(
             newEdgePoint2,
             newEdgePoint2,
             endPoint1,
             endPoint1,
             newEdgePoint2,
             newEdgePoint2,
@@ -331,7 +325,7 @@ export default class EdgeService {
             "end",
             "end",
             "start"
             "start"
           );
           );
-          controlPointService.update(
+          crossPointService.update(
             newEdgePoint1,
             newEdgePoint1,
             newEdgePoint1,
             newEdgePoint1,
             endPoint1,
             endPoint1,
@@ -362,15 +356,15 @@ export default class EdgeService {
 
 
       if (angle > Constant.maxAngle || angle < Constant.minAngle) {
       if (angle > Constant.maxAngle || angle < Constant.minAngle) {
         //要删除控制点
         //要删除控制点
-        dataService.deleteControlPoint(leftEdge1.vectorId, rightEdge2.vectorId);
-        dataService.deleteControlPoint(rightEdge1.vectorId, leftEdge2.vectorId);
+        dataService.deleteCrossPoint(leftEdge1.vectorId, rightEdge2.vectorId);
+        dataService.deleteCrossPoint(rightEdge1.vectorId, leftEdge2.vectorId);
       } else {
       } else {
         points.push(endPoint1);
         points.push(endPoint1);
         points.push(startPoint1);
         points.push(startPoint1);
         points.push(startPoint2);
         points.push(startPoint2);
         if (!mathUtil.isClockwise(points)) {
         if (!mathUtil.isClockwise(points)) {
-          //需要考虑控制点ControlPointService
-          controlPointService.update(
+          //需要考虑控制点CrossPointService
+          crossPointService.update(
             newEdgePoint1,
             newEdgePoint1,
             endPoint1,
             endPoint1,
             newEdgePoint1,
             newEdgePoint1,
@@ -379,7 +373,7 @@ export default class EdgeService {
             "end",
             "end",
             "end"
             "end"
           );
           );
-          controlPointService.update(
+          crossPointService.update(
             newEdgePoint2,
             newEdgePoint2,
             newEdgePoint2,
             newEdgePoint2,
             endPoint1,
             endPoint1,
@@ -389,8 +383,8 @@ export default class EdgeService {
             "end"
             "end"
           );
           );
         } else {
         } else {
-          //需要考虑控制点ControlPointService
-          controlPointService.update(
+          //需要考虑控制点CrossPointService
+          crossPointService.update(
             newEdgePoint2,
             newEdgePoint2,
             endPoint1,
             endPoint1,
             newEdgePoint2,
             newEdgePoint2,
@@ -399,7 +393,7 @@ export default class EdgeService {
             "end",
             "end",
             "end"
             "end"
           );
           );
-          controlPointService.update(
+          crossPointService.update(
             newEdgePoint1,
             newEdgePoint1,
             newEdgePoint1,
             newEdgePoint1,
             endPoint1,
             endPoint1,
@@ -484,19 +478,16 @@ export default class EdgeService {
         mathUtil.clonePoint(leftEdge1.start, newEdgePoint1);
         mathUtil.clonePoint(leftEdge1.start, newEdgePoint1);
         mathUtil.clonePoint(rightEdge2.start, newEdgePoint1);
         mathUtil.clonePoint(rightEdge2.start, newEdgePoint1);
         //要删除控制点
         //要删除控制点
-        dataService.deleteControlPoint(leftEdge1.vectorId, rightEdge2.vectorId);
+        dataService.deleteCrossPoint(leftEdge1.vectorId, rightEdge2.vectorId);
         //不能按照下面的方式计算,因为一个edge可以属于两个控制点,毕竟有两个端点
         //不能按照下面的方式计算,因为一个edge可以属于两个控制点,毕竟有两个端点
-        // dataService.deleteControlPointForEdge(leftEdge1.vectorId);
-        // dataService.deleteControlPointForEdge(rightEdge2.vectorId);
+        // dataService.deleteCrossPointForEdge(leftEdge1.vectorId);
+        // dataService.deleteCrossPointForEdge(rightEdge2.vectorId);
         if (angle > Constant.maxAngle || angle < Constant.minAngle) {
         if (angle > Constant.maxAngle || angle < Constant.minAngle) {
           //要删除控制点
           //要删除控制点
-          dataService.deleteControlPoint(
-            leftEdge1.vectorId,
-            rightEdge2.vectorId
-          );
+          dataService.deleteCrossPoint(leftEdge1.vectorId, rightEdge2.vectorId);
         } else {
         } else {
-          //需要考虑控制点ControlPointService
-          controlPointService.update(
+          //需要考虑控制点CrossPointService
+          crossPointService.update(
             newEdgePoint1,
             newEdgePoint1,
             startPoint1,
             startPoint1,
             newEdgePoint1,
             newEdgePoint1,
@@ -513,18 +504,15 @@ export default class EdgeService {
         mathUtil.clonePoint(rightEdge1.start, newEdgePoint2);
         mathUtil.clonePoint(rightEdge1.start, newEdgePoint2);
         mathUtil.clonePoint(leftEdge2.start, newEdgePoint2);
         mathUtil.clonePoint(leftEdge2.start, newEdgePoint2);
         //要删除控制点
         //要删除控制点
-        dataService.deleteControlPoint(leftEdge2.vectorId, rightEdge1.vectorId);
-        // dataService.deleteControlPointForEdge(leftEdge2.vectorId);
-        // dataService.deleteControlPointForEdge(rightEdge1.vectorId);
+        dataService.deleteCrossPoint(leftEdge2.vectorId, rightEdge1.vectorId);
+        // dataService.deleteCrossPointForEdge(leftEdge2.vectorId);
+        // dataService.deleteCrossPointForEdge(rightEdge1.vectorId);
         if (angle > Constant.maxAngle || angle < Constant.minAngle) {
         if (angle > Constant.maxAngle || angle < Constant.minAngle) {
           //要删除控制点
           //要删除控制点
-          dataService.deleteControlPoint(
-            leftEdge2.vectorId,
-            rightEdge1.vectorId
-          );
+          dataService.deleteCrossPoint(leftEdge2.vectorId, rightEdge1.vectorId);
         } else {
         } else {
-          //需要考虑控制点ControlPointService
-          controlPointService.update(
+          //需要考虑控制点CrossPointService
+          crossPointService.update(
             newEdgePoint2,
             newEdgePoint2,
             startPoint1,
             startPoint1,
             newEdgePoint2,
             newEdgePoint2,
@@ -561,18 +549,15 @@ export default class EdgeService {
         mathUtil.clonePoint(leftEdge1.start, newEdgePoint1);
         mathUtil.clonePoint(leftEdge1.start, newEdgePoint1);
         mathUtil.clonePoint(leftEdge2.end, newEdgePoint1);
         mathUtil.clonePoint(leftEdge2.end, newEdgePoint1);
         //要删除控制点
         //要删除控制点
-        dataService.deleteControlPoint(leftEdge1.vectorId, leftEdge2.vectorId);
-        // dataService.deleteControlPointForEdge(leftEdge1.vectorId);
-        // dataService.deleteControlPointForEdge(leftEdge2.vectorId);
+        dataService.deleteCrossPoint(leftEdge1.vectorId, leftEdge2.vectorId);
+        // dataService.deleteCrossPointForEdge(leftEdge1.vectorId);
+        // dataService.deleteCrossPointForEdge(leftEdge2.vectorId);
         if (angle > Constant.maxAngle || angle < Constant.minAngle) {
         if (angle > Constant.maxAngle || angle < Constant.minAngle) {
           //要删除控制点
           //要删除控制点
-          dataService.deleteControlPoint(
-            leftEdge1.vectorId,
-            leftEdge2.vectorId
-          );
+          dataService.deleteCrossPoint(leftEdge1.vectorId, leftEdge2.vectorId);
         } else {
         } else {
-          //需要考虑控制点ControlPointService
-          controlPointService.update(
+          //需要考虑控制点CrossPointService
+          crossPointService.update(
             newEdgePoint1,
             newEdgePoint1,
             startPoint1,
             startPoint1,
             newEdgePoint1,
             newEdgePoint1,
@@ -587,21 +572,18 @@ export default class EdgeService {
         mathUtil.clonePoint(rightEdge1.start, newEdgePoint2);
         mathUtil.clonePoint(rightEdge1.start, newEdgePoint2);
         mathUtil.clonePoint(rightEdge2.end, newEdgePoint2);
         mathUtil.clonePoint(rightEdge2.end, newEdgePoint2);
         //要删除控制点
         //要删除控制点
-        dataService.deleteControlPoint(
-          rightEdge1.vectorId,
-          rightEdge2.vectorId
-        );
-        // dataService.deleteControlPointForEdge(rightEdge1.vectorId);
-        // dataService.deleteControlPointForEdge(rightEdge2.vectorId);
+        dataService.deleteCrossPoint(rightEdge1.vectorId, rightEdge2.vectorId);
+        // dataService.deleteCrossPointForEdge(rightEdge1.vectorId);
+        // dataService.deleteCrossPointForEdge(rightEdge2.vectorId);
         if (angle > Constant.maxAngle || angle < Constant.minAngle) {
         if (angle > Constant.maxAngle || angle < Constant.minAngle) {
           //要删除控制点
           //要删除控制点
-          dataService.deleteControlPoint(
+          dataService.deleteCrossPoint(
             rightEdge1.vectorId,
             rightEdge1.vectorId,
             rightEdge2.vectorId
             rightEdge2.vectorId
           );
           );
         } else {
         } else {
-          //需要考虑控制点ControlPointService
-          controlPointService.update(
+          //需要考虑控制点CrossPointService
+          crossPointService.update(
             newEdgePoint2,
             newEdgePoint2,
             startPoint1,
             startPoint1,
             newEdgePoint2,
             newEdgePoint2,
@@ -638,18 +620,15 @@ export default class EdgeService {
         mathUtil.clonePoint(leftEdge1.end, newEdgePoint1);
         mathUtil.clonePoint(leftEdge1.end, newEdgePoint1);
         mathUtil.clonePoint(leftEdge2.start, newEdgePoint1);
         mathUtil.clonePoint(leftEdge2.start, newEdgePoint1);
         //要删除控制点
         //要删除控制点
-        dataService.deleteControlPoint(leftEdge1.vectorId, leftEdge2.vectorId);
-        // dataService.deleteControlPointForEdge(leftEdge1.vectorId);
-        // dataService.deleteControlPointForEdge(leftEdge2.vectorId);
+        dataService.deleteCrossPoint(leftEdge1.vectorId, leftEdge2.vectorId);
+        // dataService.deleteCrossPointForEdge(leftEdge1.vectorId);
+        // dataService.deleteCrossPointForEdge(leftEdge2.vectorId);
         if (angle > Constant.maxAngle || angle < Constant.minAngle) {
         if (angle > Constant.maxAngle || angle < Constant.minAngle) {
           //要删除控制点
           //要删除控制点
-          dataService.deleteControlPoint(
-            leftEdge1.vectorId,
-            leftEdge2.vectorId
-          );
+          dataService.deleteCrossPoint(leftEdge1.vectorId, leftEdge2.vectorId);
         } else {
         } else {
-          //需要考虑控制点ControlPointService
-          controlPointService.update(
+          //需要考虑控制点CrossPointService
+          crossPointService.update(
             newEdgePoint1,
             newEdgePoint1,
             endPoint1,
             endPoint1,
             newEdgePoint1,
             newEdgePoint1,
@@ -664,21 +643,18 @@ export default class EdgeService {
         mathUtil.clonePoint(rightEdge1.end, newEdgePoint2);
         mathUtil.clonePoint(rightEdge1.end, newEdgePoint2);
         mathUtil.clonePoint(rightEdge2.start, newEdgePoint2);
         mathUtil.clonePoint(rightEdge2.start, newEdgePoint2);
         //要删除控制点
         //要删除控制点
-        dataService.deleteControlPoint(
-          rightEdge1.vectorId,
-          rightEdge2.vectorId
-        );
-        // dataService.deleteControlPointForEdge(rightEdge1.vectorId);
-        // dataService.deleteControlPointForEdge(rightEdge2.vectorId);
+        dataService.deleteCrossPoint(rightEdge1.vectorId, rightEdge2.vectorId);
+        // dataService.deleteCrossPointForEdge(rightEdge1.vectorId);
+        // dataService.deleteCrossPointForEdge(rightEdge2.vectorId);
         if (angle > Constant.maxAngle || angle < Constant.minAngle) {
         if (angle > Constant.maxAngle || angle < Constant.minAngle) {
           //要删除控制点
           //要删除控制点
-          dataService.deleteControlPoint(
+          dataService.deleteCrossPoint(
             rightEdge1.vectorId,
             rightEdge1.vectorId,
             rightEdge2.vectorId
             rightEdge2.vectorId
           );
           );
         } else {
         } else {
-          //需要考虑控制点ControlPointService
-          controlPointService.update(
+          //需要考虑控制点CrossPointService
+          crossPointService.update(
             newEdgePoint2,
             newEdgePoint2,
             endPoint1,
             endPoint1,
             newEdgePoint2,
             newEdgePoint2,
@@ -715,18 +691,15 @@ export default class EdgeService {
         mathUtil.clonePoint(leftEdge1.end, newEdgePoint1);
         mathUtil.clonePoint(leftEdge1.end, newEdgePoint1);
         mathUtil.clonePoint(rightEdge2.end, newEdgePoint1);
         mathUtil.clonePoint(rightEdge2.end, newEdgePoint1);
         //要删除控制点
         //要删除控制点
-        dataService.deleteControlPoint(leftEdge1.vectorId, leftEdge2.vectorId);
-        // dataService.deleteControlPointForEdge(leftEdge1.vectorId);
-        // dataService.deleteControlPointForEdge(leftEdge2.vectorId);
+        dataService.deleteCrossPoint(leftEdge1.vectorId, leftEdge2.vectorId);
+        // dataService.deleteCrossPointForEdge(leftEdge1.vectorId);
+        // dataService.deleteCrossPointForEdge(leftEdge2.vectorId);
         if (angle > Constant.maxAngle || angle < Constant.minAngle) {
         if (angle > Constant.maxAngle || angle < Constant.minAngle) {
           //要删除控制点
           //要删除控制点
-          dataService.deleteControlPoint(
-            leftEdge1.vectorId,
-            leftEdge2.vectorId
-          );
+          dataService.deleteCrossPoint(leftEdge1.vectorId, leftEdge2.vectorId);
         } else {
         } else {
-          //需要考虑控制点ControlPointService
-          controlPointService.update(
+          //需要考虑控制点CrossPointService
+          crossPointService.update(
             newEdgePoint1,
             newEdgePoint1,
             endPoint1,
             endPoint1,
             newEdgePoint1,
             newEdgePoint1,
@@ -741,18 +714,15 @@ export default class EdgeService {
         mathUtil.clonePoint(rightEdge1.end, newEdgePoint2);
         mathUtil.clonePoint(rightEdge1.end, newEdgePoint2);
         mathUtil.clonePoint(leftEdge2.end, newEdgePoint2);
         mathUtil.clonePoint(leftEdge2.end, newEdgePoint2);
         //要删除控制点
         //要删除控制点
-        dataService.deleteControlPoint(rightEdge1.vectorId, leftEdge2.vectorId);
-        // dataService.deleteControlPointForEdge(leftEdge2.vectorId);
-        // dataService.deleteControlPointForEdge(rightEdge1.vectorId);
+        dataService.deleteCrossPoint(rightEdge1.vectorId, leftEdge2.vectorId);
+        // dataService.deleteCrossPointForEdge(leftEdge2.vectorId);
+        // dataService.deleteCrossPointForEdge(rightEdge1.vectorId);
         if (angle > Constant.maxAngle || angle < Constant.minAngle) {
         if (angle > Constant.maxAngle || angle < Constant.minAngle) {
           //要删除控制点
           //要删除控制点
-          dataService.deleteControlPoint(
-            rightEdge1.vectorId,
-            leftEdge2.vectorId
-          );
+          dataService.deleteCrossPoint(rightEdge1.vectorId, leftEdge2.vectorId);
         } else {
         } else {
-          //需要考虑控制点ControlPointService
-          controlPointService.update(
+          //需要考虑控制点CrossPointService
+          crossPointService.update(
             newEdgePoint2,
             newEdgePoint2,
             endPoint1,
             endPoint1,
             newEdgePoint2,
             newEdgePoint2,

+ 10 - 18
src/graphic/Service/RoadService.js

@@ -5,7 +5,7 @@ import { roadPointService } from "./RoadPointService.js";
 import { edgeService } from "./EdgeService.js";
 import { edgeService } from "./EdgeService.js";
 import { mathUtil } from "../Util/MathUtil.js";
 import { mathUtil } from "../Util/MathUtil.js";
 import Constant from "../Constant";
 import Constant from "../Constant";
-import { controlPointService } from "./ControlPointService.js";
+import { crossPointService } from "./CrossPointService.js";
 import { lineService } from "./LineService.js";
 import { lineService } from "./LineService.js";
 export default class RoadService {
 export default class RoadService {
   constructor() {}
   constructor() {}
@@ -119,17 +119,13 @@ export default class RoadService {
     // 更新断开后两个road之间的edge
     // 更新断开后两个road之间的edge
     edgeService.updateEdgeForTwoRoad(roadId, newRoad.vectorId);
     edgeService.updateEdgeForTwoRoad(roadId, newRoad.vectorId);
 
 
-    // 需要更新controlPoints
+    // 需要更新crossPoints
     if (dir == "start") {
     if (dir == "start") {
-      let cpt = dataService.getControlPointForEdgeId(road.leftEdgeId, "end");
-      controlPointService.replaceEdgeId(
-        cpt,
-        road.leftEdgeId,
-        newRoad.leftEdgeId
-      );
+      let cpt = dataService.getCrossPointForEdgeId(road.leftEdgeId, "end");
+      crossPointService.replaceEdgeId(cpt, road.leftEdgeId, newRoad.leftEdgeId);
 
 
-      cpt = dataService.getControlPointForEdgeId(road.rightEdgeId, "end");
-      controlPointService.replaceEdgeId(
+      cpt = dataService.getCrossPointForEdgeId(road.rightEdgeId, "end");
+      crossPointService.replaceEdgeId(
         cpt,
         cpt,
         road.rightEdgeId,
         road.rightEdgeId,
         newRoad.rightEdgeId
         newRoad.rightEdgeId
@@ -146,15 +142,11 @@ export default class RoadService {
         mathUtil.clonePoint(rightEdge.start, oldRightEdgeStartPoint);
         mathUtil.clonePoint(rightEdge.start, oldRightEdgeStartPoint);
       }
       }
     } else if (dir == "end") {
     } else if (dir == "end") {
-      let cpt = dataService.getControlPointForEdgeId(road.leftEdgeId, "start");
-      controlPointService.replaceEdgeId(
-        cpt,
-        road.leftEdgeId,
-        newRoad.leftEdgeId
-      );
+      let cpt = dataService.getCrossPointForEdgeId(road.leftEdgeId, "start");
+      crossPointService.replaceEdgeId(cpt, road.leftEdgeId, newRoad.leftEdgeId);
 
 
-      cpt = dataService.getControlPointForEdgeId(road.rightEdgeId, "start");
-      controlPointService.replaceEdgeId(
+      cpt = dataService.getCrossPointForEdgeId(road.rightEdgeId, "start");
+      crossPointService.replaceEdgeId(
         cpt,
         cpt,
         road.rightEdgeId,
         road.rightEdgeId,
         newRoad.rightEdgeId
         newRoad.rightEdgeId

+ 4 - 0
src/graphic/enum/HistoryEvents.js

@@ -34,5 +34,9 @@ const HistoryEvents = {
   AddSVG: "addSVG",
   AddSVG: "addSVG",
   DeleteSVG: "deleteSVG",
   DeleteSVG: "deleteSVG",
   ModifySVG: "modifySVG",
   ModifySVG: "modifySVG",
+
+  AddCrossPoint: "AddCrossPoint",
+  DeleteCrossPoint: "deleteCrossPoint",
+  ModifyCrossPoint: "modifyCrossPoint",
 };
 };
 export default HistoryEvents;
 export default HistoryEvents;

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

@@ -20,7 +20,7 @@ const LayerEvents = {
   AddingCircle: "addingCircle",
   AddingCircle: "addingCircle",
   MoveCircle: "moveCircle",
   MoveCircle: "moveCircle",
 
 
-  MoveControlPoint: "moveControlPoint",
+  MoveCrossPoint: "moveCrossPoint",
   MoveEdge: "moveEdge",
   MoveEdge: "moveEdge",
   MoveCurveEdge: "moveCurveEdge",
   MoveCurveEdge: "moveCurveEdge",
 
 

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

@@ -118,9 +118,9 @@ const UIEvents = {
 
 
   // ------------选中组件时的UI控制-----------
   // ------------选中组件时的UI控制-----------
   // 加控制点
   // 加控制点
-  AddControlPoint: "AddControlPoint",
+  AddCrossPoint: "AddCrossPoint",
   // 减控制点
   // 减控制点
-  MinusControlPoint: "MinusControlPoint",
+  MinusCrossPoint: "MinusCrossPoint",
   // 复制
   // 复制
   Copy: "copy",
   Copy: "copy",
   // 删除
   // 删除

+ 1 - 1
src/graphic/enum/VectorType.js

@@ -1,5 +1,5 @@
 const VectorType = {
 const VectorType = {
-  ControlPoint: "ControlPoint",
+  CrossPoint: "CrossPoint",
   Circle: "Circle",
   Circle: "Circle",
   Img: "Img",
   Img: "Img",
   Point: "Point",
   Point: "Point",