|
@@ -59,6 +59,7 @@ export default class RoadService {
|
|
|
rightEdge.setEdgeParent(road.vectorId);
|
|
|
}
|
|
|
this.setLanes(road.vectorId);
|
|
|
+ this.initRoadWidthTipsPos(road)
|
|
|
return road;
|
|
|
}
|
|
|
|
|
@@ -1548,6 +1549,100 @@ 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 crossLine = mathUtil.createLine1(
|
|
|
+ road.singleLanes[i].start,
|
|
|
+ road.singleLanes[i].end
|
|
|
+ )
|
|
|
+ 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]})
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //最后一个位置
|
|
|
+ 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){//双单车道
|
|
|
+ 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++){
|
|
|
+ let crossLine = mathUtil.createLine1(
|
|
|
+ road.leftLanes[i].start,
|
|
|
+ road.leftLanes[i].end
|
|
|
+ )
|
|
|
+ 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]})
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //最后一个位置
|
|
|
+ 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++){
|
|
|
+ let crossLine = mathUtil.createLine1(
|
|
|
+ road.rightLanes[i].start,
|
|
|
+ road.rightLanes[i].end
|
|
|
+ )
|
|
|
+ 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]})
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //最后一个位置
|
|
|
+ roadWidthTipsPos.push({start:crossList[crossList.length-1],end:rightEdgePoint})
|
|
|
+ road.setRoadWidthTipsPos(roadWidthTipsPos)
|
|
|
+ }else{
|
|
|
+ roadWidthTipsPos.push({start:rightMidDividePoint,end:rightEdgePoint})
|
|
|
+ road.setRoadWidthTipsPos(roadWidthTipsPos)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
// unlock(roadId) {
|
|
|
// let road = dataService.getRoad(roadId);
|
|
|
// let startPoint = dataService.getRoadPoint(road.startId);
|