|
@@ -200,55 +200,36 @@ export default class ListenLayer {
|
|
distance: null,
|
|
distance: null,
|
|
};
|
|
};
|
|
const circles = dataService.getCircles();
|
|
const circles = dataService.getCircles();
|
|
|
|
+ let distance;
|
|
for (const circleId in circles) {
|
|
for (const circleId in circles) {
|
|
if (circleId == exceptCircleId) {
|
|
if (circleId == exceptCircleId) {
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
const circle = dataService.getCircle(circleId);
|
|
const circle = dataService.getCircle(circleId);
|
|
- const distance = mathUtil.getDistance(position, circle.center);
|
|
|
|
- if (distance < circle.radius - Constant.minAdsorbPix) {
|
|
|
|
- if (circleInfo.circleId == null || distance < circleInfo.distance) {
|
|
|
|
|
|
+ for (let i = 0; i < circle.points.length; ++i) {
|
|
|
|
+ distance = mathUtil.getDistance(position, circle.points[i]);
|
|
|
|
+ if (distance < Constant.minAdsorbPix) {
|
|
circleInfo = {
|
|
circleInfo = {
|
|
circleId: circleId,
|
|
circleId: circleId,
|
|
type: VectorType.Circle,
|
|
type: VectorType.Circle,
|
|
distance: distance,
|
|
distance: distance,
|
|
- select: SelectState.Select,
|
|
|
|
- x: circle.center.x,
|
|
|
|
- y: circle.center.y,
|
|
|
|
|
|
+ x: circle.points[i].x,
|
|
|
|
+ y: circle.points[i].y,
|
|
|
|
+ index: i,
|
|
};
|
|
};
|
|
|
|
+ return circleInfo;
|
|
}
|
|
}
|
|
- } else if (
|
|
|
|
- distance > circle.radius - Constant.minAdsorbPix &&
|
|
|
|
- distance < circle.radius + Constant.minAdsorbPix
|
|
|
|
- ) {
|
|
|
|
|
|
+ }
|
|
|
|
+ distance = mathUtil.getDistance(position, circle.center);
|
|
|
|
+ if (distance < circle.radius) {
|
|
if (circleInfo.circleId == null || distance < circleInfo.distance) {
|
|
if (circleInfo.circleId == null || distance < circleInfo.distance) {
|
|
- const joins = mathUtil.getInsertPointBetweenCircleAndLine(
|
|
|
|
- circle.center.x,
|
|
|
|
- circle.center.y,
|
|
|
|
- position.x,
|
|
|
|
- position.y,
|
|
|
|
- circle.center.x,
|
|
|
|
- circle.center.y,
|
|
|
|
- circle.radius
|
|
|
|
- );
|
|
|
|
- let join = {};
|
|
|
|
- if (
|
|
|
|
- mathUtil.getDistance(joins[0], position) <
|
|
|
|
- mathUtil.getDistance(joins[1], position)
|
|
|
|
- ) {
|
|
|
|
- join.x = joins[0].x;
|
|
|
|
- join.y = joins[0].y;
|
|
|
|
- } else {
|
|
|
|
- join.x = joins[1].x;
|
|
|
|
- join.y = joins[1].y;
|
|
|
|
- }
|
|
|
|
circleInfo = {
|
|
circleInfo = {
|
|
circleId: circleId,
|
|
circleId: circleId,
|
|
type: VectorType.Circle,
|
|
type: VectorType.Circle,
|
|
- distance: Math.abs(distance - circle.radius),
|
|
|
|
- select: SelectState.CircleRing, //选中环
|
|
|
|
- x: join.x,
|
|
|
|
- y: join.y,
|
|
|
|
|
|
+ distance: distance,
|
|
|
|
+ x: circle.center.x,
|
|
|
|
+ y: circle.center.y,
|
|
|
|
+ index: -1,
|
|
};
|
|
};
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -959,7 +940,7 @@ export default class ListenLayer {
|
|
} else if (info && info.circleInfo.circleId) {
|
|
} else if (info && info.circleInfo.circleId) {
|
|
this.modifyPoint = {};
|
|
this.modifyPoint = {};
|
|
this.modifyPoint.linkedCircleId = info.circleInfo.circleId;
|
|
this.modifyPoint.linkedCircleId = info.circleInfo.circleId;
|
|
- this.modifyPoint.select = info.circleInfo.select;
|
|
|
|
|
|
+ this.modifyPoint.index = info.circleInfo.index;
|
|
this.modifyPoint.x = info.circleInfo.x;
|
|
this.modifyPoint.x = info.circleInfo.x;
|
|
this.modifyPoint.y = info.circleInfo.y;
|
|
this.modifyPoint.y = info.circleInfo.y;
|
|
} else if (info && info.roadPointInfo.linkedRoadPointIdX) {
|
|
} else if (info && info.roadPointInfo.linkedRoadPointIdX) {
|
|
@@ -1092,7 +1073,7 @@ export default class ListenLayer {
|
|
stateService.setSelectItem(
|
|
stateService.setSelectItem(
|
|
this.modifyPoint.linkedCircleId,
|
|
this.modifyPoint.linkedCircleId,
|
|
VectorType.Circle,
|
|
VectorType.Circle,
|
|
- this.modifyPoint.select
|
|
|
|
|
|
+ this.modifyPoint.index
|
|
);
|
|
);
|
|
}
|
|
}
|
|
|
|
|