|
@@ -59,7 +59,7 @@ export default class RoadService {
|
|
|
rightEdge.setEdgeParent(road.vectorId);
|
|
|
}
|
|
|
this.setLanes(road.vectorId);
|
|
|
- this.initRoadWidthTipsPos(road)
|
|
|
+ this.initRoadWidthTipsPos(road);
|
|
|
return road;
|
|
|
}
|
|
|
|
|
@@ -96,7 +96,7 @@ export default class RoadService {
|
|
|
newRoad.singleRoadWidth = road.singleRoadWidth;
|
|
|
newRoad.leftWidth = road.leftWidth;
|
|
|
newRoad.rightWidth = road.rightWidth;
|
|
|
-
|
|
|
+
|
|
|
let edgePoints;
|
|
|
if (newRoad.way == Constant.oneWay) {
|
|
|
edgePoints = mathUtil.RectangleVertex(
|
|
@@ -149,14 +149,14 @@ export default class RoadService {
|
|
|
newRoad.singleRoadDrivewayCount = road.singleRoadDrivewayCount;
|
|
|
newRoad.leftDrivewayCount = road.leftDrivewayCount;
|
|
|
newRoad.rightDrivewayCount = road.rightDrivewayCount;
|
|
|
- if(oldLeftEdge.roadSide){
|
|
|
- leftEdge.initRoadSide()
|
|
|
+ if (oldLeftEdge.roadSide) {
|
|
|
+ leftEdge.initRoadSide();
|
|
|
}
|
|
|
- if(oldRightEdge.roadSide){
|
|
|
- rightEdge.initRoadSide()
|
|
|
+ if (oldRightEdge.roadSide) {
|
|
|
+ rightEdge.initRoadSide();
|
|
|
}
|
|
|
this.setLanes(newRoad.vectorId);
|
|
|
- this.initRoadWidthTipsPos(newRoad)
|
|
|
+ this.initRoadWidthTipsPos(newRoad);
|
|
|
return newRoad.vectorId;
|
|
|
}
|
|
|
|
|
@@ -1092,8 +1092,8 @@ export default class RoadService {
|
|
|
//单车道不考虑dir1
|
|
|
setLanes(roadId, dir1, dir2) {
|
|
|
let road = dataService.getRoad(roadId);
|
|
|
- if(!road){
|
|
|
- return
|
|
|
+ if (!road) {
|
|
|
+ return;
|
|
|
}
|
|
|
if (road.way == Constant.oneWay) {
|
|
|
this.setOneWayLanes(road, dir1, dir2);
|
|
@@ -1511,6 +1511,17 @@ export default class RoadService {
|
|
|
this.setLanes(roadId, dir);
|
|
|
}
|
|
|
|
|
|
+ updateMeasureLineForWidth() {
|
|
|
+ const road = dataService.getRoad(roadId);
|
|
|
+ const startPoint = dataService.getRoadPoint(road.startId);
|
|
|
+ const endPoint = dataService.getRoadPoint(road.endId);
|
|
|
+ const leftEdge = dataService.getRoadEdge(road.leftEdgeId);
|
|
|
+ const rightEdge = dataService.getRoadEdge(road.rightEdgeId);
|
|
|
+ if (road.way == Constant.oneWay) {
|
|
|
+ } else if (road.way == Constant.twoWay) {
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
//将道路转换成线条
|
|
|
convertToLines(roadId) {
|
|
|
let road = dataService.getRoad(roadId);
|
|
@@ -1557,95 +1568,136 @@ export default class RoadService {
|
|
|
}
|
|
|
|
|
|
initRoadWidthTipsPos(road) {
|
|
|
- let leftEdge = dataService.getRoadEdge(road.leftEdgeId)
|
|
|
- let rightEdge = dataService.getRoadEdge(road.rightEdgeId)
|
|
|
- let leftEdgePoint = mathUtil.getLinePointPos(leftEdge.start,leftEdge.end)
|
|
|
- let rightEdgePoint = mathUtil.getLinePointPos(rightEdge.start,rightEdge.end)
|
|
|
- let edgeLine = mathUtil.createLine1(leftEdgePoint,rightEdgePoint)
|
|
|
- let roadWidthTipsPos = []
|
|
|
- if(road.way == Constant.oneWay){//单车道
|
|
|
- if(road.singleLanes.length){
|
|
|
- let crossList = []
|
|
|
- for(let i=0;i<road.singleLanes.length;i++){
|
|
|
+ let leftEdge = dataService.getRoadEdge(road.leftEdgeId);
|
|
|
+ let rightEdge = dataService.getRoadEdge(road.rightEdgeId);
|
|
|
+ let leftEdgePoint = mathUtil.getLinePointPos(leftEdge.start, leftEdge.end);
|
|
|
+ let rightEdgePoint = mathUtil.getLinePointPos(
|
|
|
+ rightEdge.start,
|
|
|
+ rightEdge.end
|
|
|
+ );
|
|
|
+ let edgeLine = mathUtil.createLine1(leftEdgePoint, rightEdgePoint);
|
|
|
+ let roadWidthTipsPos = [];
|
|
|
+ if (road.way == Constant.oneWay) {
|
|
|
+ //单车道
|
|
|
+ if (road.singleLanes.length) {
|
|
|
+ let crossList = [];
|
|
|
+ for (let i = 0; i < road.singleLanes.length; i++) {
|
|
|
let crossLine = mathUtil.createLine1(
|
|
|
road.singleLanes[i].start,
|
|
|
road.singleLanes[i].end
|
|
|
- )
|
|
|
- let crossPoint = mathUtil.getIntersectionPoint(edgeLine,crossLine)
|
|
|
- crossList.push(crossPoint)
|
|
|
+ );
|
|
|
+ let crossPoint = mathUtil.getIntersectionPoint(edgeLine, crossLine);
|
|
|
+ crossList.push(crossPoint);
|
|
|
}
|
|
|
- for(let i=0;i<crossList.length;i++){
|
|
|
- if(i==0){ //第一个位置
|
|
|
- roadWidthTipsPos.push({start:rightEdgePoint,end:crossList[i]})
|
|
|
- }else{//以此类推
|
|
|
- roadWidthTipsPos.push({start:crossList[i-1],end:crossList[i]})
|
|
|
+ for (let i = 0; i < crossList.length; i++) {
|
|
|
+ if (i == 0) {
|
|
|
+ //第一个位置
|
|
|
+ roadWidthTipsPos.push({ start: rightEdgePoint, end: crossList[i] });
|
|
|
+ } else {
|
|
|
+ //以此类推
|
|
|
+ roadWidthTipsPos.push({
|
|
|
+ start: crossList[i - 1],
|
|
|
+ end: crossList[i],
|
|
|
+ });
|
|
|
}
|
|
|
}
|
|
|
//最后一个位置
|
|
|
- roadWidthTipsPos.push({start:crossList[crossList.length-1],end:leftEdgePoint})
|
|
|
- road.setRoadWidthTipsPos(roadWidthTipsPos)
|
|
|
- }else{
|
|
|
- roadWidthTipsPos.push({start:leftEdgePoint,end:rightEdgePoint})
|
|
|
- road.setRoadWidthTipsPos(roadWidthTipsPos)
|
|
|
+ roadWidthTipsPos.push({
|
|
|
+ start: crossList[crossList.length - 1],
|
|
|
+ end: leftEdgePoint,
|
|
|
+ });
|
|
|
+ road.setRoadWidthTipsPos(roadWidthTipsPos);
|
|
|
+ } else {
|
|
|
+ roadWidthTipsPos.push({ start: leftEdgePoint, end: rightEdgePoint });
|
|
|
+ road.setRoadWidthTipsPos(roadWidthTipsPos);
|
|
|
}
|
|
|
- }else if(road.way == Constant.twoWay){//双单车道
|
|
|
+ } else if (road.way == Constant.twoWay) {
|
|
|
+ //双单车道
|
|
|
let leftMidDividePoint = mathUtil.getLinePointPos(
|
|
|
road.midDivide.leftMidDivide.start,
|
|
|
road.midDivide.leftMidDivide.end
|
|
|
- )
|
|
|
+ );
|
|
|
let rightMidDividePoint = mathUtil.getLinePointPos(
|
|
|
road.midDivide.rightMidDivide.start,
|
|
|
road.midDivide.rightMidDivide.end
|
|
|
- )
|
|
|
-
|
|
|
+ );
|
|
|
+
|
|
|
// leftLanes,rightLanes
|
|
|
- if(road.leftLanes.length){
|
|
|
- let crossList = []
|
|
|
- for(let i=0;i<road.leftLanes.length;i++){
|
|
|
+ if (road.leftLanes.length) {
|
|
|
+ let crossList = [];
|
|
|
+ for (let i = 0; i < road.leftLanes.length; i++) {
|
|
|
let crossLine = mathUtil.createLine1(
|
|
|
road.leftLanes[i].start,
|
|
|
road.leftLanes[i].end
|
|
|
- )
|
|
|
- let crossPoint = mathUtil.getIntersectionPoint(edgeLine,crossLine)
|
|
|
- crossList.push(crossPoint)
|
|
|
+ );
|
|
|
+ let crossPoint = mathUtil.getIntersectionPoint(edgeLine, crossLine);
|
|
|
+ crossList.push(crossPoint);
|
|
|
}
|
|
|
- for(let i=0;i<crossList.length;i++){
|
|
|
- if(i==0){ //第一个位置
|
|
|
- roadWidthTipsPos.push({start:leftMidDividePoint,end:crossList[i]})
|
|
|
- }else{//以此类推
|
|
|
- roadWidthTipsPos.push({start:crossList[i-1],end:crossList[i]})
|
|
|
+ for (let i = 0; i < crossList.length; i++) {
|
|
|
+ if (i == 0) {
|
|
|
+ //第一个位置
|
|
|
+ roadWidthTipsPos.push({
|
|
|
+ start: leftMidDividePoint,
|
|
|
+ end: crossList[i],
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ //以此类推
|
|
|
+ roadWidthTipsPos.push({
|
|
|
+ start: crossList[i - 1],
|
|
|
+ end: crossList[i],
|
|
|
+ });
|
|
|
}
|
|
|
}
|
|
|
//最后一个位置
|
|
|
- roadWidthTipsPos.push({start:crossList[crossList.length-1],end:leftEdgePoint})
|
|
|
- road.setRoadWidthTipsPos(roadWidthTipsPos)
|
|
|
- }else{
|
|
|
- roadWidthTipsPos.push({start:leftEdgePoint,end:leftMidDividePoint})
|
|
|
- road.setRoadWidthTipsPos(roadWidthTipsPos)
|
|
|
+ roadWidthTipsPos.push({
|
|
|
+ start: crossList[crossList.length - 1],
|
|
|
+ end: leftEdgePoint,
|
|
|
+ });
|
|
|
+ road.setRoadWidthTipsPos(roadWidthTipsPos);
|
|
|
+ } else {
|
|
|
+ roadWidthTipsPos.push({
|
|
|
+ start: leftEdgePoint,
|
|
|
+ end: leftMidDividePoint,
|
|
|
+ });
|
|
|
+ road.setRoadWidthTipsPos(roadWidthTipsPos);
|
|
|
}
|
|
|
- if(road.rightLanes.length){
|
|
|
- let crossList = []
|
|
|
- for(let i=0;i<road.rightLanes.length;i++){
|
|
|
+ if (road.rightLanes.length) {
|
|
|
+ let crossList = [];
|
|
|
+ for (let i = 0; i < road.rightLanes.length; i++) {
|
|
|
let crossLine = mathUtil.createLine1(
|
|
|
road.rightLanes[i].start,
|
|
|
road.rightLanes[i].end
|
|
|
- )
|
|
|
- let crossPoint = mathUtil.getIntersectionPoint(edgeLine,crossLine)
|
|
|
- crossList.push(crossPoint)
|
|
|
+ );
|
|
|
+ let crossPoint = mathUtil.getIntersectionPoint(edgeLine, crossLine);
|
|
|
+ crossList.push(crossPoint);
|
|
|
}
|
|
|
- for(let i=0;i<crossList.length;i++){
|
|
|
- if(i==0){ //第一个位置
|
|
|
- roadWidthTipsPos.push({start:rightMidDividePoint,end:crossList[i]})
|
|
|
- }else{//以此类推
|
|
|
- roadWidthTipsPos.push({start:crossList[i-1],end:crossList[i]})
|
|
|
+ for (let i = 0; i < crossList.length; i++) {
|
|
|
+ if (i == 0) {
|
|
|
+ //第一个位置
|
|
|
+ roadWidthTipsPos.push({
|
|
|
+ start: rightMidDividePoint,
|
|
|
+ end: crossList[i],
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ //以此类推
|
|
|
+ roadWidthTipsPos.push({
|
|
|
+ start: crossList[i - 1],
|
|
|
+ end: crossList[i],
|
|
|
+ });
|
|
|
}
|
|
|
}
|
|
|
//最后一个位置
|
|
|
- roadWidthTipsPos.push({start:crossList[crossList.length-1],end:rightEdgePoint})
|
|
|
- road.setRoadWidthTipsPos(roadWidthTipsPos)
|
|
|
- }else{
|
|
|
- roadWidthTipsPos.push({start:rightMidDividePoint,end:rightEdgePoint})
|
|
|
- road.setRoadWidthTipsPos(roadWidthTipsPos)
|
|
|
+ roadWidthTipsPos.push({
|
|
|
+ start: crossList[crossList.length - 1],
|
|
|
+ end: rightEdgePoint,
|
|
|
+ });
|
|
|
+ road.setRoadWidthTipsPos(roadWidthTipsPos);
|
|
|
+ } else {
|
|
|
+ roadWidthTipsPos.push({
|
|
|
+ start: rightMidDividePoint,
|
|
|
+ end: rightEdgePoint,
|
|
|
+ });
|
|
|
+ road.setRoadWidthTipsPos(roadWidthTipsPos);
|
|
|
}
|
|
|
}
|
|
|
}
|