|
@@ -36,6 +36,12 @@ export default class ListenLayer {
|
|
|
state: null,
|
|
|
};
|
|
|
|
|
|
+ this.crossControlPointInfo = {
|
|
|
+ crossControlPointId: null,
|
|
|
+ type: null,
|
|
|
+ distance: null,
|
|
|
+ };
|
|
|
+
|
|
|
this.tagInfo = {
|
|
|
tagId: null,
|
|
|
state: null,
|
|
@@ -54,7 +60,8 @@ export default class ListenLayer {
|
|
|
exceptPointId,
|
|
|
exceptRoadIds,
|
|
|
exceptCurvePointId,
|
|
|
- exceptCurveRoadId
|
|
|
+ exceptCurveRoadId,
|
|
|
+ exceptCrossControlPointId
|
|
|
) {
|
|
|
let flag = false;
|
|
|
this.clear();
|
|
@@ -62,12 +69,19 @@ export default class ListenLayer {
|
|
|
let roadInfo = this.isSelectRoad(position, exceptRoadIds);
|
|
|
let curvePointInfo = this.isSelectCurvePoint(position, exceptCurvePointId);
|
|
|
let pointInfo = this.isSelectPoint(position, exceptPointId);
|
|
|
+ //交叉口拐弯处的控制点
|
|
|
+ let controlPointInfo = this.isSelectCrossControlPoint(
|
|
|
+ position,
|
|
|
+ exceptPointId
|
|
|
+ );
|
|
|
+
|
|
|
this.setModifyPoint(
|
|
|
position,
|
|
|
pointInfo,
|
|
|
curvePointInfo,
|
|
|
roadInfo,
|
|
|
- curveRoadInfo
|
|
|
+ curveRoadInfo,
|
|
|
+ controlPointInfo
|
|
|
);
|
|
|
// let flag1 = this.equalAndClone(this.curveRoadInfo, curveRoadInfo);
|
|
|
// let flag2 = this.equalAndClone(this.roadInfo, roadInfo);
|
|
@@ -326,7 +340,41 @@ export default class ListenLayer {
|
|
|
return curveRoadInfo;
|
|
|
}
|
|
|
|
|
|
- setModifyPoint(position, pointInfo, curvePointInfo, roadInfo, curveRoadInfo) {
|
|
|
+ isSelectCrossControlPoint(position, exceptCrossControlPointId) {
|
|
|
+ let crossControlPointInfo = {
|
|
|
+ crossControlPointId: null,
|
|
|
+ type: null,
|
|
|
+ distance: null,
|
|
|
+ };
|
|
|
+ const controlPoints = dataService.getControlPoints();
|
|
|
+ for (const controlPointId in controlPoints) {
|
|
|
+ if (controlPointId == exceptCrossControlPointId) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ const controlPoint = dataService.getControlPoint2(controlPointId);
|
|
|
+ const distance = mathUtil.getDistance(position, controlPoint);
|
|
|
+ if (distance < Constant.minAdsorbPix) {
|
|
|
+ crossControlPointInfo = {
|
|
|
+ crossControlPointId: controlPointId,
|
|
|
+ type: VectorType.ControlPoint,
|
|
|
+ distance: distance,
|
|
|
+ x: controlPoint.x,
|
|
|
+ y: controlPoint.y,
|
|
|
+ };
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return crossControlPointInfo;
|
|
|
+ }
|
|
|
+
|
|
|
+ setModifyPoint(
|
|
|
+ position,
|
|
|
+ pointInfo,
|
|
|
+ curvePointInfo,
|
|
|
+ roadInfo,
|
|
|
+ curveRoadInfo,
|
|
|
+ controlPointInfo
|
|
|
+ ) {
|
|
|
//优先级最高
|
|
|
if (pointInfo.pointId || curvePointInfo.curvePointId) {
|
|
|
this.modifyPoint = {};
|
|
@@ -370,6 +418,12 @@ export default class ListenLayer {
|
|
|
this.modifyPoint.x = curveRoadInfo.x;
|
|
|
this.modifyPoint.y = curveRoadInfo.y;
|
|
|
}
|
|
|
+ } else if (controlPointInfo.crossControlPointId) {
|
|
|
+ this.modifyPoint = {};
|
|
|
+ this.modifyPoint.linkedCrossControlPointId =
|
|
|
+ controlPointInfo.crossControlPointId;
|
|
|
+ this.modifyPoint.x = controlPointInfo.x;
|
|
|
+ this.modifyPoint.y = controlPointInfo.y;
|
|
|
} else if (pointInfo.linkedPointIdX) {
|
|
|
this.modifyPoint = {};
|
|
|
this.modifyPoint.linkedPointIdX = pointInfo.linkedPointIdX;
|
|
@@ -428,6 +482,12 @@ export default class ListenLayer {
|
|
|
VectorType.CurveRoad,
|
|
|
SelectState.Select
|
|
|
);
|
|
|
+ } else if (this.modifyPoint.linkedCrossControlPointId) {
|
|
|
+ stateService.setSelectItem(
|
|
|
+ this.modifyPoint.linkedCrossControlPointId,
|
|
|
+ VectorType.ControlPoint,
|
|
|
+ SelectState.Select
|
|
|
+ );
|
|
|
}
|
|
|
|
|
|
let newSelectItem = stateService.getSelectItem();
|
|
@@ -485,6 +545,12 @@ export default class ListenLayer {
|
|
|
state: null,
|
|
|
};
|
|
|
|
|
|
+ this.crossControlPointInfo = {
|
|
|
+ crossControlPointId: null,
|
|
|
+ type: null,
|
|
|
+ distance: null,
|
|
|
+ };
|
|
|
+
|
|
|
this.tagInfo = {
|
|
|
tagId: null,
|
|
|
state: null,
|