|
@@ -1,10 +1,11 @@
|
|
|
-import {dataService} from "../Service/DataService.js";
|
|
|
-import {stateService} from "../Service/StateService.js";
|
|
|
-import {coordinate} from "../Coordinate.js";
|
|
|
+import { dataService } from "../Service/DataService.js";
|
|
|
+import { stateService } from "../Service/StateService.js";
|
|
|
+import { coordinate } from "../Coordinate.js";
|
|
|
import Style from "@/graphic/CanvasStyle/index.js";
|
|
|
import VectorType from "../enum/VectorType.js";
|
|
|
-import {mathUtil} from "../Util/MathUtil.js";
|
|
|
+import { mathUtil } from "../Util/MathUtil.js";
|
|
|
import ElementEvents from "../enum/ElementEvents.js";
|
|
|
+import { elementService } from "../Service/ElementService.js";
|
|
|
|
|
|
const help = {
|
|
|
getVectorStyle(vector, geoType = vector.geoType) {
|
|
@@ -36,7 +37,7 @@ const help = {
|
|
|
const styles = help.getVectorStyle(vector, geoType);
|
|
|
for (const style in styles) {
|
|
|
if (typeof styles[style] === "function") {
|
|
|
- styles[style](ctx, vector)
|
|
|
+ styles[style](ctx, vector);
|
|
|
} else {
|
|
|
ctx[style] = styles[style];
|
|
|
}
|
|
@@ -76,7 +77,6 @@ const help = {
|
|
|
ctx.stroke();
|
|
|
}
|
|
|
},
|
|
|
-
|
|
|
};
|
|
|
|
|
|
export default class Draw {
|
|
@@ -140,7 +140,7 @@ export default class Draw {
|
|
|
}
|
|
|
|
|
|
drawRoad(vector, isTemp) {
|
|
|
- console.log(vector)
|
|
|
+ console.log(vector);
|
|
|
if (!isTemp && vector.display && vector.way !== "oneWay") {
|
|
|
const ctx = this.context;
|
|
|
const draw = (midDivide) => {
|
|
@@ -150,7 +150,7 @@ export default class Draw {
|
|
|
ctx.moveTo(startScreen.x, startScreen.y);
|
|
|
ctx.lineTo(endScreen.x, endScreen.y);
|
|
|
ctx.stroke();
|
|
|
- }
|
|
|
+ };
|
|
|
|
|
|
ctx.save();
|
|
|
help.setVectorStyle(ctx, vector);
|
|
@@ -167,7 +167,7 @@ export default class Draw {
|
|
|
? vector.end
|
|
|
: dataService.getRoadPoint(vector.endId);
|
|
|
this.drawText(
|
|
|
- {x: (startReal.x + endReal.x) / 2, y: (startReal.y + endReal.y) / 2},
|
|
|
+ { x: (startReal.x + endReal.x) / 2, y: (startReal.y + endReal.y) / 2 },
|
|
|
vector.vectorId
|
|
|
);
|
|
|
}
|
|
@@ -264,7 +264,7 @@ export default class Draw {
|
|
|
const pt2 = mathUtil.twoOrderBezier(
|
|
|
0.5,
|
|
|
start,
|
|
|
- coordinate.getScreenXY({x: vector.x, y: vector.y}),
|
|
|
+ coordinate.getScreenXY({ x: vector.x, y: vector.y }),
|
|
|
end
|
|
|
);
|
|
|
const pt = mathUtil.twoOrderBezier2(0.5, start, pt2, end);
|
|
@@ -312,9 +312,9 @@ export default class Draw {
|
|
|
this.drawCurveRoadEdge(dataService.getCurveRoadEdge(vector.rightEdgeId));
|
|
|
this.drawCurveRoadEdge(dataService.getCurveRoadEdge(vector.leftEdgeId));
|
|
|
vector.leftLanesCurves &&
|
|
|
- vector.leftLanesCurves.forEach(this.drawCurveLan.bind(this));
|
|
|
+ vector.leftLanesCurves.forEach(this.drawCurveLan.bind(this));
|
|
|
vector.rightLanesCurves &&
|
|
|
- vector.rightLanesCurves.forEach(this.drawCurveLan.bind(this));
|
|
|
+ vector.rightLanesCurves.forEach(this.drawCurveLan.bind(this));
|
|
|
|
|
|
if (import.meta.env.DEV) {
|
|
|
vector.points.forEach(this.drawPoint.bind(this));
|
|
@@ -360,16 +360,16 @@ export default class Draw {
|
|
|
this.drawPoint({
|
|
|
...element.center,
|
|
|
radius: element.radius,
|
|
|
- geoType: element.geoType
|
|
|
- })
|
|
|
+ geoType: element.geoType,
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
drawPoint(vector) {
|
|
|
- const pt = coordinate.getScreenXY({x: vector.x, y: vector.y});
|
|
|
+ const pt = coordinate.getScreenXY({ x: vector.x, y: vector.y });
|
|
|
const ctx = this.context;
|
|
|
const style = help.setVectorStyle(ctx, vector, vector.geoType || "Point");
|
|
|
- const radius = (vector.radius || style.radius) * coordinate.ratio
|
|
|
- ctx.save()
|
|
|
+ const radius = (vector.radius || style.radius) * coordinate.ratio;
|
|
|
+ ctx.save();
|
|
|
ctx.beginPath();
|
|
|
ctx.arc(pt.x, pt.y, radius, 0, Math.PI * 2, true);
|
|
|
ctx.stroke();
|
|
@@ -400,14 +400,34 @@ export default class Draw {
|
|
|
ctx.restore();
|
|
|
}
|
|
|
|
|
|
+ drawLine(vector) {
|
|
|
+ let start = dataService.getPoint(vector.startId);
|
|
|
+ start = coordinate.getScreenXY(start);
|
|
|
+ let end = dataService.getPoint(vector.endId);
|
|
|
+ end = coordinate.getScreenXY(end);
|
|
|
|
|
|
- drawLine(element) {
|
|
|
- const start = element.getType === VectorType.Line
|
|
|
- ? dataService.getLine(element.start)
|
|
|
- : coordinate.getScreenXY(element.start)
|
|
|
- const end = element.getType === VectorType.Line
|
|
|
- ? dataService.getLine(element.end)
|
|
|
- : coordinate.getScreenXY(element.end)
|
|
|
+ this.context.save();
|
|
|
+ const style = help.setVectorStyle(
|
|
|
+ this.context,
|
|
|
+ vector,
|
|
|
+ vector.category || vector.geoType
|
|
|
+ );
|
|
|
+
|
|
|
+ if (style.dash) {
|
|
|
+ this.context.setLineDash(style.dash);
|
|
|
+ }
|
|
|
+ this.context.beginPath();
|
|
|
+ this.context.moveTo(start.x, start.y);
|
|
|
+ this.context.lineTo(end.x, end.y);
|
|
|
+ this.context.stroke();
|
|
|
+ this.context.restore();
|
|
|
+ }
|
|
|
+
|
|
|
+ drawElementLine(element) {
|
|
|
+ let start = elementService.getPoint(element.startId);
|
|
|
+ start = coordinate.getScreenXY(start);
|
|
|
+ let end = elementService.getPoint(element.endId);
|
|
|
+ end = coordinate.getScreenXY(end);
|
|
|
|
|
|
this.context.save();
|
|
|
const style = help.setVectorStyle(
|
|
@@ -425,8 +445,7 @@ export default class Draw {
|
|
|
this.context.stroke();
|
|
|
this.context.restore();
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
|
|
|
const draw = new Draw();
|
|
|
-export {draw};
|
|
|
+export { draw };
|