|
@@ -1,48 +1,48 @@
|
|
|
-import Load from "./Load";
|
|
|
-import { stateService } from "./Service/StateService";
|
|
|
-import { elementService } from "./Service/ElementService";
|
|
|
-import { dataService } from "./Service/DataService";
|
|
|
-import { textService } from "./Service/TextService";
|
|
|
-import { historyService } from "./Service/HistoryService";
|
|
|
-import UIControl from "./Controls/UIControl";
|
|
|
-// import { moveRectangle } from "./Controls/MoveRectangle";
|
|
|
-import { moveText } from "./Controls/MoveText";
|
|
|
-import { moveSVG } from "./Controls/MoveSVG";
|
|
|
-import { moveMagnifier } from "./Controls/MoveMagnifier";
|
|
|
-import { addRoad } from "./Controls/AddRoad";
|
|
|
-import { addCrossRoad } from "./Controls/AddCrossRoad";
|
|
|
-import { addLine } from "./Controls/AddLine";
|
|
|
-import { addPoint } from "./Controls/AddPoint";
|
|
|
-import { addCircle } from "./Controls/AddCircle";
|
|
|
-import { addText } from "./Controls/AddText";
|
|
|
-import { addMagnifier } from "./Controls/AddMagnifier";
|
|
|
-import { addSVG } from "./Controls/AddSVG";
|
|
|
-import { moveRoad } from "./Controls/MoveRoad";
|
|
|
-import { moveLine } from "./Controls/MoveLine";
|
|
|
-import { movePoint } from "./Controls/MovePoint";
|
|
|
-import { moveCircle } from "./Controls/MoveCircle";
|
|
|
-import { coordinate } from "./Coordinate";
|
|
|
-import Render from "./Renderer/Render";
|
|
|
-import { draw } from "./Renderer/Draw";
|
|
|
-import { listenLayer } from "./ListenLayer";
|
|
|
-import LayerEvents from "./enum/LayerEvents.js";
|
|
|
-import UIEvents from "./enum/UIEvents.js";
|
|
|
-import SelectState from "./enum/SelectState.js";
|
|
|
-import VectorType from "./enum/VectorType";
|
|
|
-import { mathUtil } from "./Util/MathUtil";
|
|
|
-import History from "./History/History";
|
|
|
-import mitt from "mitt";
|
|
|
-import { roadService } from "./Service/RoadService";
|
|
|
-import { edgeService } from "./Service/EdgeService";
|
|
|
-import { roadPointService } from "./Service/RoadPointService";
|
|
|
-import { curveRoadService } from "./Service/CurveRoadService";
|
|
|
-import VectorCategory from "./enum/VectorCategory";
|
|
|
-import Settings from "./Settings";
|
|
|
-import Constant from "./Constant";
|
|
|
-import { uiService } from "./Service/UIService";
|
|
|
-import { imageService } from "./Service/ImageService";
|
|
|
-import VectorEvents from "./enum/VectorEvents";
|
|
|
-import { lineService } from "./Service/LineService";
|
|
|
+import Load from './Load';
|
|
|
+import { stateService } from './Service/StateService';
|
|
|
+import { elementService } from './Service/ElementService';
|
|
|
+import { dataService } from './Service/DataService';
|
|
|
+import { textService } from './Service/TextService';
|
|
|
+import { historyService } from './Service/HistoryService';
|
|
|
+import UIControl from './Controls/UIControl';
|
|
|
+import { locationModeControl } from "./Controls/LocationModeControl";
|
|
|
+import { moveText } from './Controls/MoveText';
|
|
|
+import { moveSVG } from './Controls/MoveSVG';
|
|
|
+import { moveMagnifier } from './Controls/MoveMagnifier';
|
|
|
+import { addRoad } from './Controls/AddRoad';
|
|
|
+import { addCrossRoad } from './Controls/AddCrossRoad';
|
|
|
+import { addLine } from './Controls/AddLine';
|
|
|
+import { addPoint } from './Controls/AddPoint';
|
|
|
+import { addCircle } from './Controls/AddCircle';
|
|
|
+import { addText } from './Controls/AddText';
|
|
|
+import { addMagnifier } from './Controls/AddMagnifier';
|
|
|
+import { addSVG } from './Controls/AddSVG';
|
|
|
+import { moveRoad } from './Controls/MoveRoad';
|
|
|
+import { moveLine } from './Controls/MoveLine';
|
|
|
+import { movePoint } from './Controls/MovePoint';
|
|
|
+import { moveCircle } from './Controls/MoveCircle';
|
|
|
+import { coordinate } from './Coordinate';
|
|
|
+import Render from './Renderer/Render';
|
|
|
+import { draw } from './Renderer/Draw';
|
|
|
+import { listenLayer } from './ListenLayer';
|
|
|
+import LayerEvents from './enum/LayerEvents.js';
|
|
|
+import UIEvents from './enum/UIEvents.js';
|
|
|
+import SelectState from './enum/SelectState.js';
|
|
|
+import VectorType from './enum/VectorType';
|
|
|
+import { mathUtil } from './Util/MathUtil';
|
|
|
+import History from './History/History';
|
|
|
+import mitt from 'mitt';
|
|
|
+import { roadService } from './Service/RoadService';
|
|
|
+import { edgeService } from './Service/EdgeService';
|
|
|
+import { roadPointService } from './Service/RoadPointService';
|
|
|
+import { curveRoadService } from './Service/CurveRoadService';
|
|
|
+import VectorCategory from './enum/VectorCategory';
|
|
|
+import Settings from './Settings';
|
|
|
+import Constant from './Constant';
|
|
|
+import { uiService } from './Service/UIService';
|
|
|
+import { imageService } from './Service/ImageService';
|
|
|
+import VectorEvents from './enum/VectorEvents';
|
|
|
+import { lineService } from './Service/LineService';
|
|
|
|
|
|
const minDragDis = 10;
|
|
|
const minZoom = 20;
|
|
@@ -77,24 +77,25 @@ export default class Layer {
|
|
|
}
|
|
|
|
|
|
bindEvents() {
|
|
|
- this.canvas.addEventListener("contextmenu", function (e) {
|
|
|
+ this.canvas.addEventListener('contextmenu', function (e) {
|
|
|
e.preventDefault();
|
|
|
});
|
|
|
- this.canvas.addEventListener("mousedown", this.onMouseDown.bind(this));
|
|
|
- this.canvas.addEventListener("mousemove", this.onMouseMove.bind(this));
|
|
|
- this.canvas.addEventListener("mouseup", this.onMouseUp.bind(this));
|
|
|
+ this.canvas.addEventListener('mousedown', this.onMouseDown.bind(this));
|
|
|
+ this.canvas.addEventListener('mousemove', this.onMouseMove.bind(this));
|
|
|
+ this.canvas.addEventListener('mouseup', this.onMouseUp.bind(this));
|
|
|
|
|
|
- this.canvas.addEventListener("touchstart", this.onMouseDown.bind(this));
|
|
|
- this.canvas.addEventListener("touchmove", this.onMouseMove.bind(this));
|
|
|
- this.canvas.addEventListener("touchend", this.onMouseUp.bind(this));
|
|
|
+ this.canvas.addEventListener('touchstart', this.onMouseDown.bind(this));
|
|
|
+ this.canvas.addEventListener('touchmove', this.onMouseMove.bind(this));
|
|
|
+ this.canvas.addEventListener('touchend', this.onMouseUp.bind(this));
|
|
|
|
|
|
- this.canvas.addEventListener("mousewheel", this.onWheel.bind(this));
|
|
|
- this.canvas.addEventListener("DOMMouseScroll", this.onWheel.bind(this));
|
|
|
- this.canvas.addEventListener("resize", this.reSize.bind(this));
|
|
|
+ this.canvas.addEventListener('mousewheel', this.onWheel.bind(this));
|
|
|
+ this.canvas.addEventListener('DOMMouseScroll', this.onWheel.bind(this));
|
|
|
+ this.canvas.addEventListener('resize', this.reSize.bind(this));
|
|
|
+ document.addEventListener("keydown", this.onKeydown.bind(this));
|
|
|
}
|
|
|
|
|
|
reSize = function () {
|
|
|
- console.log("resize");
|
|
|
+ console.log('resize');
|
|
|
coordinate.updateForCanvas();
|
|
|
this.renderer.autoRedraw();
|
|
|
};
|
|
@@ -130,16 +131,16 @@ export default class Layer {
|
|
|
let selectItem = stateService.getSelectItem();
|
|
|
let focusItem = stateService.getFocusItem();
|
|
|
|
|
|
- this.setEventName("mouseDown");
|
|
|
+ this.setEventName('mouseDown');
|
|
|
const eventName = stateService.getEventName();
|
|
|
switch (eventName) {
|
|
|
case LayerEvents.AddRoad:
|
|
|
stateService.setEventName(LayerEvents.AddingRoad);
|
|
|
- addRoad.setNewRoadPoint("start", position);
|
|
|
+ addRoad.setNewRoadPoint('start', position);
|
|
|
break;
|
|
|
case LayerEvents.AddCurveRoad:
|
|
|
stateService.setEventName(LayerEvents.AddingCurveRoad);
|
|
|
- addRoad.setNewRoadPoint("start", position);
|
|
|
+ addRoad.setNewRoadPoint('start', position);
|
|
|
break;
|
|
|
case LayerEvents.AddLine:
|
|
|
stateService.setEventName(LayerEvents.AddingLine);
|
|
@@ -151,39 +152,30 @@ export default class Layer {
|
|
|
// break;
|
|
|
case LayerEvents.AddPoint:
|
|
|
stateService.setEventName(LayerEvents.MovePoint);
|
|
|
- const newPoint = addPoint.buildPoint(position);
|
|
|
+ const newPoint = addPoint.buildPoint2(position);
|
|
|
if (newPoint) {
|
|
|
- stateService.setSelectItem(
|
|
|
- newPoint.vectorId,
|
|
|
- VectorType.Point,
|
|
|
- SelectState.Select
|
|
|
- );
|
|
|
+ stateService.setSelectItem(newPoint.vectorId, VectorType.Point, SelectState.Select);
|
|
|
this.history.save();
|
|
|
this.renderer.autoRedraw();
|
|
|
} else {
|
|
|
if (Settings.basePointIds.length > 1) {
|
|
|
- this.uiControl.prompt({ msg: "请先选择基准点", time: 1000 });
|
|
|
+ this.uiControl.prompt({ msg: '请先选择基准点', time: 1000 });
|
|
|
} else {
|
|
|
- this.uiControl.prompt({ msg: "请先添加基准点", time: 1000 });
|
|
|
+ this.uiControl.prompt({ msg: '请先添加基准点', time: 1000 });
|
|
|
}
|
|
|
|
|
|
// this.uiControl.prompt({ msg: '请先选择基准点', time: 1000 });
|
|
|
}
|
|
|
break;
|
|
|
case LayerEvents.AddCircle:
|
|
|
-
|
|
|
stateService.setEventName(LayerEvents.AddingCircle);
|
|
|
addCircle.setCenter(position);
|
|
|
-
|
|
|
+
|
|
|
break;
|
|
|
case LayerEvents.AddText:
|
|
|
stateService.setEventName(LayerEvents.MoveText);
|
|
|
addText.buildText(position);
|
|
|
- stateService.setSelectItem(
|
|
|
- addText.newText.vectorId,
|
|
|
- VectorType.Text,
|
|
|
- SelectState.Select
|
|
|
- );
|
|
|
+ stateService.setSelectItem(addText.newText.vectorId, VectorType.Text, SelectState.Select);
|
|
|
addText.clear();
|
|
|
break;
|
|
|
case LayerEvents.AddSVG:
|
|
@@ -197,11 +189,7 @@ export default class Layer {
|
|
|
case LayerEvents.AddMagnifier:
|
|
|
stateService.setEventName(LayerEvents.MoveMagnifier);
|
|
|
addMagnifier.buildMagnifier(position);
|
|
|
- stateService.setSelectItem(
|
|
|
- addMagnifier.newMagnifier.vectorId,
|
|
|
- VectorType.Magnifier,
|
|
|
- SelectState.Select
|
|
|
- );
|
|
|
+ stateService.setSelectItem(addMagnifier.newMagnifier.vectorId, VectorType.Magnifier, SelectState.Select);
|
|
|
addMagnifier.clear();
|
|
|
break;
|
|
|
case VectorEvents.AddLane:
|
|
@@ -209,34 +197,18 @@ export default class Layer {
|
|
|
let road = dataService.getRoad(selectItem.vectorId);
|
|
|
if (road) {
|
|
|
let roadLanCount = road.getLanesCount(selectItem.dir);
|
|
|
- if (selectItem.dir == "left") {
|
|
|
- roadService.updateForAddSubtractLanesCount(
|
|
|
- road.vectorId,
|
|
|
- roadLanCount + 1,
|
|
|
- selectItem.dir
|
|
|
- );
|
|
|
+ if (selectItem.dir == 'left') {
|
|
|
+ roadService.updateForAddSubtractLanesCount(road.vectorId, roadLanCount + 1, selectItem.dir);
|
|
|
} else {
|
|
|
- roadService.updateForAddSubtractLanesCount(
|
|
|
- road.vectorId,
|
|
|
- roadLanCount + 1,
|
|
|
- selectItem.dir
|
|
|
- );
|
|
|
+ roadService.updateForAddSubtractLanesCount(road.vectorId, roadLanCount + 1, selectItem.dir);
|
|
|
}
|
|
|
} else {
|
|
|
road = dataService.getCurveRoad(selectItem.vectorId);
|
|
|
let curveRoadLanCount = road.getLanesCount(selectItem.dir);
|
|
|
- if (selectItem.dir == "left") {
|
|
|
- curveRoadService.updateForAddSubtractLanesCount(
|
|
|
- road.vectorId,
|
|
|
- curveRoadLanCount + 1,
|
|
|
- selectItem.dir
|
|
|
- );
|
|
|
+ if (selectItem.dir == 'left') {
|
|
|
+ curveRoadService.updateForAddSubtractLanesCount(road.vectorId, curveRoadLanCount + 1, selectItem.dir);
|
|
|
} else {
|
|
|
- curveRoadService.updateForAddSubtractLanesCount(
|
|
|
- road.vectorId,
|
|
|
- curveRoadLanCount + 1,
|
|
|
- selectItem.dir
|
|
|
- );
|
|
|
+ curveRoadService.updateForAddSubtractLanesCount(road.vectorId, curveRoadLanCount + 1, selectItem.dir);
|
|
|
}
|
|
|
}
|
|
|
stateService.clearEventName();
|
|
@@ -249,34 +221,18 @@ export default class Layer {
|
|
|
let road = dataService.getRoad(selectItem.vectorId);
|
|
|
if (road) {
|
|
|
let roadLanCount = road.getLanesCount(selectItem.dir);
|
|
|
- if (selectItem.dir == "left") {
|
|
|
- roadService.updateForAddSubtractLanesCount(
|
|
|
- road.vectorId,
|
|
|
- roadLanCount - 1,
|
|
|
- selectItem.dir
|
|
|
- );
|
|
|
+ if (selectItem.dir == 'left') {
|
|
|
+ roadService.updateForAddSubtractLanesCount(road.vectorId, roadLanCount - 1, selectItem.dir);
|
|
|
} else {
|
|
|
- roadService.updateForAddSubtractLanesCount(
|
|
|
- road.vectorId,
|
|
|
- roadLanCount - 1,
|
|
|
- selectItem.dir
|
|
|
- );
|
|
|
+ roadService.updateForAddSubtractLanesCount(road.vectorId, roadLanCount - 1, selectItem.dir);
|
|
|
}
|
|
|
} else {
|
|
|
road = dataService.getCurveRoad(selectItem.vectorId);
|
|
|
let curveRoadLanCount = road.getLanesCount(selectItem.dir);
|
|
|
- if (selectItem.dir == "left") {
|
|
|
- curveRoadService.updateForAddSubtractLanesCount(
|
|
|
- road.vectorId,
|
|
|
- curveRoadLanCount - 1,
|
|
|
- selectItem.dir
|
|
|
- );
|
|
|
+ if (selectItem.dir == 'left') {
|
|
|
+ curveRoadService.updateForAddSubtractLanesCount(road.vectorId, curveRoadLanCount - 1, selectItem.dir);
|
|
|
} else {
|
|
|
- curveRoadService.updateForAddSubtractLanesCount(
|
|
|
- road.vectorId,
|
|
|
- curveRoadLanCount - 1,
|
|
|
- selectItem.dir
|
|
|
- );
|
|
|
+ curveRoadService.updateForAddSubtractLanesCount(road.vectorId, curveRoadLanCount - 1, selectItem.dir);
|
|
|
}
|
|
|
}
|
|
|
stateService.clearEventName();
|
|
@@ -288,18 +244,12 @@ export default class Layer {
|
|
|
if (focusItem && focusItem.vectorId) {
|
|
|
if (focusItem.type == VectorType.CurveRoad) {
|
|
|
const curveRoad = dataService.getCurveRoad(focusItem.vectorId);
|
|
|
- let index = mathUtil.getIndexForCurvesPoints(
|
|
|
- position,
|
|
|
- curveRoad.points
|
|
|
- );
|
|
|
+ let index = mathUtil.getIndexForCurvesPoints(position, curveRoad.points);
|
|
|
if (index != -1) {
|
|
|
curveRoadService.addCPoint(curveRoad, position, index);
|
|
|
} else {
|
|
|
const dis1 = mathUtil.getDistance(curveRoad.points[0], position);
|
|
|
- const dis2 = mathUtil.getDistance(
|
|
|
- curveRoad.points[curveRoad.points.length - 1],
|
|
|
- position
|
|
|
- );
|
|
|
+ const dis2 = mathUtil.getDistance(curveRoad.points[curveRoad.points.length - 1], position);
|
|
|
if (dis1 > dis2) {
|
|
|
index = curveRoad.points.length - 2;
|
|
|
} else {
|
|
@@ -307,10 +257,11 @@ export default class Layer {
|
|
|
}
|
|
|
curveRoadService.addCPoint(curveRoad, position, index);
|
|
|
}
|
|
|
- curveRoadService.updateForMovePoint(
|
|
|
- curveRoad.points[index + 1].vectorId,
|
|
|
- position
|
|
|
- );
|
|
|
+ curveRoadService.setLanes(curveRoad.vectorId);
|
|
|
+ // curveRoadService.updateForMovePoint(
|
|
|
+ // curveRoad.points[index + 1].vectorId,
|
|
|
+ // position
|
|
|
+ // );
|
|
|
} else if (focusItem.type == VectorType.Line) {
|
|
|
let line = dataService.getLine(focusItem.vectorId);
|
|
|
const weight = line.getWeight();
|
|
@@ -323,18 +274,12 @@ export default class Layer {
|
|
|
curveLine.setWeight(weight);
|
|
|
} else if (focusItem.type == VectorType.CurveLine) {
|
|
|
let curveLine = dataService.getCurveLine(focusItem.vectorId);
|
|
|
- let index = mathUtil.getIndexForCurvesPoints(
|
|
|
- position,
|
|
|
- curveLine.points
|
|
|
- );
|
|
|
+ let index = mathUtil.getIndexForCurvesPoints(position, curveLine.points);
|
|
|
if (index != -1) {
|
|
|
lineService.addCPoint(position, index, focusItem.vectorId);
|
|
|
} else {
|
|
|
const dis1 = mathUtil.getDistance(curveLine.points[0], position);
|
|
|
- const dis2 = mathUtil.getDistance(
|
|
|
- curveLine.points[curveLine.points.length - 1],
|
|
|
- position
|
|
|
- );
|
|
|
+ const dis2 = mathUtil.getDistance(curveLine.points[curveLine.points.length - 1], position);
|
|
|
if (dis1 > dis2) {
|
|
|
index = curveLine.points.length - 2;
|
|
|
} else {
|
|
@@ -374,10 +319,10 @@ export default class Layer {
|
|
|
onMouseMove(e) {
|
|
|
let X = e.offsetX || e.layerX;
|
|
|
let Y = e.offsetY || e.layerY;
|
|
|
-
|
|
|
if (e instanceof TouchEvent) {
|
|
|
X = e.touches[0].pageX;
|
|
|
Y = e.touches[0].pageY;
|
|
|
+
|
|
|
//切换到缩放
|
|
|
if (e.touches.length > 1) {
|
|
|
//记录开始的两个触摸点的坐标
|
|
@@ -419,29 +364,20 @@ export default class Layer {
|
|
|
x: X,
|
|
|
y: Y,
|
|
|
});
|
|
|
+
|
|
|
this.mousePosition = {
|
|
|
x: position.x,
|
|
|
y: position.y,
|
|
|
};
|
|
|
const eventName = stateService.getEventName();
|
|
|
- if (
|
|
|
- !this.dragging &&
|
|
|
- Math.abs(X - this.startX) < minDragDis &&
|
|
|
- Math.abs(Y - this.startY) < minDragDis
|
|
|
- ) {
|
|
|
+ if (!this.dragging && Math.abs(X - this.startX) < minDragDis && Math.abs(Y - this.startY) < minDragDis) {
|
|
|
return;
|
|
|
}
|
|
|
this.dragging = true;
|
|
|
- if (
|
|
|
- Math.abs(X - this.startX) > minDragDis ||
|
|
|
- Math.abs(Y - this.startY) > minDragDis
|
|
|
- ) {
|
|
|
+ if (Math.abs(X - this.startX) > minDragDis || Math.abs(Y - this.startY) > minDragDis) {
|
|
|
// 是否拖拽了
|
|
|
if (eventName != null) {
|
|
|
- if (
|
|
|
- eventName == LayerEvents.MoveMagnifier &&
|
|
|
- stateService.getSelectItem().state != 0
|
|
|
- ) {
|
|
|
+ if (eventName == LayerEvents.MoveMagnifier && stateService.getSelectItem().state != 0) {
|
|
|
} else {
|
|
|
stateService.clearFocusItem();
|
|
|
this.uiControl.focusVector = null;
|
|
@@ -462,17 +398,15 @@ export default class Layer {
|
|
|
needAutoRedraw = listenLayer.start(position);
|
|
|
let seleteItem = stateService.getSelectItem();
|
|
|
if (seleteItem != null) {
|
|
|
- console.log("选中:" + seleteItem.vectorId);
|
|
|
+ console.log('选中:' + seleteItem.vectorId);
|
|
|
} else {
|
|
|
}
|
|
|
break;
|
|
|
case LayerEvents.PanBackGround:
|
|
|
stateService.clearItems();
|
|
|
let center = {};
|
|
|
- center.x =
|
|
|
- coordinate.center.x - (dx * coordinate.defaultZoom) / coordinate.zoom;
|
|
|
- center.y =
|
|
|
- coordinate.center.y + (dy * coordinate.defaultZoom) / coordinate.zoom;
|
|
|
+ center.x = coordinate.center.x - (dx * coordinate.defaultZoom) / coordinate.zoom;
|
|
|
+ center.y = coordinate.center.y + (dy * coordinate.defaultZoom) / coordinate.zoom;
|
|
|
let tempCenter = {};
|
|
|
mathUtil.clonePoint(tempCenter, coordinate.center);
|
|
|
mathUtil.clonePoint(coordinate.center, center);
|
|
@@ -567,12 +501,12 @@ export default class Layer {
|
|
|
elementService.setNewRoad(addRoad.startInfo.position, position);
|
|
|
elementService.showNewRoad();
|
|
|
|
|
|
- addRoad.setNewRoadPoint("end", position);
|
|
|
+ addRoad.setNewRoadPoint('end', position);
|
|
|
addRoad.canAdd = addRoad.canAddRoadForEnd(position);
|
|
|
if (!addRoad.canAdd) {
|
|
|
- elementService.setNewRoadState("error");
|
|
|
+ elementService.setNewRoadState('error');
|
|
|
} else {
|
|
|
- elementService.setNewRoadState("normal");
|
|
|
+ elementService.setNewRoadState('normal');
|
|
|
}
|
|
|
elementService.showPoint();
|
|
|
this.showElementLine(position, eventName);
|
|
@@ -666,16 +600,9 @@ export default class Layer {
|
|
|
let road = dataService.getRoad(draggingItem.vectorId);
|
|
|
let start = dataService.getRoadPoint(road.startId);
|
|
|
let end = dataService.getRoadPoint(road.endId);
|
|
|
- if (
|
|
|
- Object.keys(start.getParent()).length == 1 &&
|
|
|
- Object.keys(end.getParent()).length == 1
|
|
|
- ) {
|
|
|
+ if (Object.keys(start.getParent()).length == 1 && Object.keys(end.getParent()).length == 1) {
|
|
|
//拖拽的路只有一条
|
|
|
- moveRoad.moveRoad(
|
|
|
- draggingItem.vectorId,
|
|
|
- (dx * coordinate.defaultZoom) / coordinate.zoom,
|
|
|
- (dy * coordinate.defaultZoom) / coordinate.zoom
|
|
|
- );
|
|
|
+ moveRoad.moveRoad(draggingItem.vectorId, (dx * coordinate.defaultZoom) / coordinate.zoom, (dy * coordinate.defaultZoom) / coordinate.zoom);
|
|
|
}
|
|
|
break;
|
|
|
case LayerEvents.MoveRoadPoint:
|
|
@@ -686,10 +613,7 @@ export default class Layer {
|
|
|
});
|
|
|
if (
|
|
|
listenLayer.modifyPoint &&
|
|
|
- (listenLayer.modifyPoint.linkedRoadPointId ||
|
|
|
- listenLayer.modifyPoint.linkedRoadId ||
|
|
|
- listenLayer.modifyPoint.linkedRoadPointIdX ||
|
|
|
- listenLayer.modifyPoint.linkedRoadPointIdY)
|
|
|
+ (listenLayer.modifyPoint.linkedRoadPointId || listenLayer.modifyPoint.linkedRoadId || listenLayer.modifyPoint.linkedRoadPointIdX || listenLayer.modifyPoint.linkedRoadPointIdY)
|
|
|
) {
|
|
|
position = {
|
|
|
x: listenLayer.modifyPoint.x,
|
|
@@ -699,11 +623,7 @@ export default class Layer {
|
|
|
listenLayer.modifyPoint = null;
|
|
|
}
|
|
|
|
|
|
- let flag = moveRoad.moveingRoadPoint(
|
|
|
- draggingItem.vectorId,
|
|
|
- position,
|
|
|
- listenLayer.modifyPoint
|
|
|
- );
|
|
|
+ let flag = moveRoad.moveingRoadPoint(draggingItem.vectorId, position, listenLayer.modifyPoint);
|
|
|
if (!flag) {
|
|
|
elementService.hideAll();
|
|
|
} else {
|
|
@@ -739,23 +659,19 @@ export default class Layer {
|
|
|
elementService.setNewRoad(addRoad.startInfo.position, position);
|
|
|
elementService.showNewRoad();
|
|
|
|
|
|
- addRoad.setNewRoadPoint("end", position);
|
|
|
+ addRoad.setNewRoadPoint('end', position);
|
|
|
addRoad.canAdd = addRoad.canAddRoadForEnd(position);
|
|
|
if (!addRoad.canAdd) {
|
|
|
- elementService.setNewRoadState("error");
|
|
|
+ elementService.setNewRoadState('error');
|
|
|
} else {
|
|
|
- elementService.setNewRoadState("normal");
|
|
|
+ elementService.setNewRoadState('normal');
|
|
|
}
|
|
|
elementService.showPoint();
|
|
|
this.showElementLine(position, eventName);
|
|
|
break;
|
|
|
case LayerEvents.MoveCurveRoad:
|
|
|
needAutoRedraw = true;
|
|
|
- moveRoad.moveCurveRoad(
|
|
|
- draggingItem.vectorId,
|
|
|
- (dx * coordinate.defaultZoom) / coordinate.zoom,
|
|
|
- (dy * coordinate.defaultZoom) / coordinate.zoom
|
|
|
- );
|
|
|
+ moveRoad.moveCurveRoad(draggingItem.vectorId, (dx * coordinate.defaultZoom) / coordinate.zoom, (dy * coordinate.defaultZoom) / coordinate.zoom);
|
|
|
break;
|
|
|
case LayerEvents.MoveCurveRoadPoint:
|
|
|
if (!draggingItem || !draggingItem.vectorId) {
|
|
@@ -798,21 +714,13 @@ export default class Layer {
|
|
|
break;
|
|
|
case LayerEvents.MoveCurveEdge:
|
|
|
if (listenLayer.modifyPoint) {
|
|
|
- moveRoad.moveCurveEdge(
|
|
|
- draggingItem.vectorId,
|
|
|
- listenLayer.modifyPoint.selectIndex,
|
|
|
- position
|
|
|
- );
|
|
|
+ moveRoad.moveCurveEdge(draggingItem.vectorId, listenLayer.modifyPoint.selectIndex, position);
|
|
|
}
|
|
|
needAutoRedraw = true;
|
|
|
break;
|
|
|
case LayerEvents.MoveLine:
|
|
|
if (draggingItem != null) {
|
|
|
- let flag = moveLine.moveLine(
|
|
|
- draggingItem.vectorId,
|
|
|
- (dx * coordinate.defaultZoom) / coordinate.zoom,
|
|
|
- (dy * coordinate.defaultZoom) / coordinate.zoom
|
|
|
- );
|
|
|
+ let flag = moveLine.moveLine(draggingItem.vectorId, (dx * coordinate.defaultZoom) / coordinate.zoom, (dy * coordinate.defaultZoom) / coordinate.zoom);
|
|
|
if (!flag) {
|
|
|
this.lastX = this.lastX - dx / coordinate.ratio;
|
|
|
this.lastY = this.lastY - dy / coordinate.ratio;
|
|
@@ -827,7 +735,10 @@ export default class Layer {
|
|
|
exceptPointId: draggingItem.vectorId,
|
|
|
exceptLineId: point.parent,
|
|
|
});
|
|
|
- if (listenLayer.modifyPoint) {
|
|
|
+
|
|
|
+
|
|
|
+ // if (listenLayer.modifyPoint) { //原本是这样的,不知用途,下面修改为了修复拖动点经过放大镜导致NaN或者错位
|
|
|
+ if (listenLayer.modifyPoint && listenLayer.modifyPoint.x && listenLayer.modifyPoint.y) {
|
|
|
position = {
|
|
|
x: listenLayer.modifyPoint.x,
|
|
|
y: listenLayer.modifyPoint.y,
|
|
@@ -865,33 +776,16 @@ export default class Layer {
|
|
|
break;
|
|
|
case LayerEvents.MoveCurveLine:
|
|
|
if (draggingItem != null) {
|
|
|
- moveLine.moveCurveLine(
|
|
|
- draggingItem.vectorId,
|
|
|
- (dx * coordinate.defaultZoom) / coordinate.zoom,
|
|
|
- (dy * coordinate.defaultZoom) / coordinate.zoom
|
|
|
- );
|
|
|
+ moveLine.moveCurveLine(draggingItem.vectorId, (dx * coordinate.defaultZoom) / coordinate.zoom, (dy * coordinate.defaultZoom) / coordinate.zoom);
|
|
|
needAutoRedraw = true;
|
|
|
}
|
|
|
break;
|
|
|
case LayerEvents.MoveCircle:
|
|
|
if (draggingItem != null) {
|
|
|
if (draggingItem.state == -1) {
|
|
|
- moveCircle.moveFull(
|
|
|
- draggingItem.vectorId,
|
|
|
- (dx * coordinate.defaultZoom) / coordinate.zoom,
|
|
|
- (dy * coordinate.defaultZoom) / coordinate.zoom
|
|
|
- );
|
|
|
- } else if (
|
|
|
- draggingItem.state == 0 ||
|
|
|
- draggingItem.state == 1 ||
|
|
|
- draggingItem.state == 2 ||
|
|
|
- draggingItem.state == 3
|
|
|
- ) {
|
|
|
- moveCircle.movePoint(
|
|
|
- position,
|
|
|
- draggingItem.vectorId,
|
|
|
- draggingItem.state
|
|
|
- );
|
|
|
+ moveCircle.moveFull(draggingItem.vectorId, (dx * coordinate.defaultZoom) / coordinate.zoom, (dy * coordinate.defaultZoom) / coordinate.zoom);
|
|
|
+ } else if (draggingItem.state == 0 || draggingItem.state == 1 || draggingItem.state == 2 || draggingItem.state == 3) {
|
|
|
+ moveCircle.movePoint(position, draggingItem.vectorId, draggingItem.state);
|
|
|
} else {
|
|
|
debugger;
|
|
|
}
|
|
@@ -910,22 +804,14 @@ export default class Layer {
|
|
|
if (draggingItem.state == -1) {
|
|
|
moveSVG.moveFullSVG(position, draggingItem.vectorId);
|
|
|
} else {
|
|
|
- moveSVG.movePoint(
|
|
|
- position,
|
|
|
- draggingItem.vectorId,
|
|
|
- draggingItem.state
|
|
|
- );
|
|
|
+ moveSVG.movePoint(position, draggingItem.vectorId, draggingItem.state);
|
|
|
}
|
|
|
}
|
|
|
break;
|
|
|
case LayerEvents.MoveMagnifier:
|
|
|
needAutoRedraw = true;
|
|
|
if (draggingItem != null) {
|
|
|
- moveMagnifier.moveFullMagnifier(
|
|
|
- position,
|
|
|
- draggingItem.vectorId,
|
|
|
- draggingItem.state
|
|
|
- );
|
|
|
+ moveMagnifier.moveFullMagnifier(position, draggingItem.vectorId, draggingItem.state);
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
@@ -998,43 +884,23 @@ export default class Layer {
|
|
|
let point = dataService.getRoadPoint(draggingItem.vectorId);
|
|
|
if (point) {
|
|
|
listenLayer.start(point, {
|
|
|
- exceptPointId: draggingItem.vectorId,
|
|
|
+ exceptRoadPointId: draggingItem.vectorId,
|
|
|
exceptRoadIds: point.parent,
|
|
|
});
|
|
|
- if (
|
|
|
- listenLayer.modifyPoint &&
|
|
|
- listenLayer.modifyPoint.hasOwnProperty("linkedRoadPointId")
|
|
|
- ) {
|
|
|
- moveRoad.moveTo(
|
|
|
- draggingItem.vectorId,
|
|
|
- listenLayer.modifyPoint.linkedRoadPointId
|
|
|
- );
|
|
|
- } else if (
|
|
|
- listenLayer.modifyPoint &&
|
|
|
- (listenLayer.modifyPoint.linkedRoadPointIdX ||
|
|
|
- listenLayer.modifyPoint.linkedRoadPointIdY)
|
|
|
- ) {
|
|
|
+
|
|
|
+ if (listenLayer.modifyPoint && listenLayer.modifyPoint.hasOwnProperty('linkedRoadPointId')) {
|
|
|
+ moveRoad.moveTo(draggingItem.vectorId, listenLayer.modifyPoint.linkedRoadPointId);
|
|
|
+ } else if (listenLayer.modifyPoint && (listenLayer.modifyPoint.linkedRoadPointIdX || listenLayer.modifyPoint.linkedRoadPointIdY)) {
|
|
|
mathUtil.clonePoint(point, listenLayer.modifyPoint);
|
|
|
- } else if (
|
|
|
- listenLayer.modifyPoint &&
|
|
|
- listenLayer.modifyPoint.hasOwnProperty("linkedRoadId")
|
|
|
- ) {
|
|
|
+ } else if (listenLayer.modifyPoint && listenLayer.modifyPoint.hasOwnProperty('linkedRoadId')) {
|
|
|
point = roadPointService.create({
|
|
|
x: listenLayer.modifyPoint.x,
|
|
|
y: listenLayer.modifyPoint.y,
|
|
|
});
|
|
|
- roadService.splitRoad(
|
|
|
- listenLayer.modifyPoint.linkedRoadId,
|
|
|
- point.vectorId,
|
|
|
- "start"
|
|
|
- );
|
|
|
+ roadService.splitRoad(listenLayer.modifyPoint.linkedRoadId, point.vectorId, 'start');
|
|
|
moveRoad.moveTo(draggingItem.vectorId, point.vectorId);
|
|
|
} else if (moveRoad.splitRoadId != null) {
|
|
|
- roadService.splitRoad(
|
|
|
- moveRoad.splitRoadId,
|
|
|
- draggingItem.vectorId,
|
|
|
- "start"
|
|
|
- );
|
|
|
+ roadService.splitRoad(moveRoad.splitRoadId, draggingItem.vectorId, 'start');
|
|
|
}
|
|
|
//draggingItem.vectorId所在的墙面与其他墙角相交
|
|
|
moveRoad.updateForAbsorbRoadPoints();
|
|
@@ -1173,11 +1039,8 @@ export default class Layer {
|
|
|
break;
|
|
|
case LayerEvents.AddPoint:
|
|
|
if (
|
|
|
- (Settings.selectBasePointId != null &&
|
|
|
- (Settings.selectLocationMode == Constant.angleLocationMode ||
|
|
|
- Settings.selectLocationMode == Constant.allLocationMode)) ||
|
|
|
- (Settings.baseLineId != null &&
|
|
|
- Settings.selectLocationMode == Constant.normalLocationMode)
|
|
|
+ (Settings.selectBasePointId != null && (Settings.selectLocationMode == Constant.angleLocationMode || Settings.selectLocationMode == Constant.allLocationMode)) ||
|
|
|
+ (Settings.baseLineId != null && Settings.selectLocationMode == Constant.normalLocationMode)
|
|
|
) {
|
|
|
this.uiControl.showConfirm();
|
|
|
needAutoRedraw = true;
|
|
@@ -1191,7 +1054,7 @@ export default class Layer {
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
- this.setEventName("mouseUp");
|
|
|
+ this.setEventName('mouseUp');
|
|
|
stateService.clearDraggingItem();
|
|
|
if (needAutoRedraw) {
|
|
|
this.renderer.autoRedraw();
|
|
@@ -1201,11 +1064,9 @@ export default class Layer {
|
|
|
onWheel(e) {
|
|
|
e.preventDefault();
|
|
|
const type = e.type;
|
|
|
- if (type == "DOMMouseScroll" || type == "mousewheel") {
|
|
|
+ if (type == 'DOMMouseScroll' || type == 'mousewheel') {
|
|
|
// 当在canvas用滚轮滚动时
|
|
|
- const delta = e.wheelDelta
|
|
|
- ? (e.wheelDelta / 120) * 20
|
|
|
- : (-(e.detail || 0) / 3) * 20;
|
|
|
+ const delta = e.wheelDelta ? (e.wheelDelta / 120) * 20 : (-(e.detail || 0) / 3) * 20;
|
|
|
const zoom = coordinate.zoom + delta;
|
|
|
let X = e.offsetX || e.layerX;
|
|
|
let Y = e.offsetY || e.layerY;
|
|
@@ -1242,7 +1103,7 @@ export default class Layer {
|
|
|
setEventName(eventType) {
|
|
|
let eventName = stateService.getEventName();
|
|
|
|
|
|
- if (eventType == "mouseDown") {
|
|
|
+ if (eventType == 'mouseDown') {
|
|
|
if (eventName == null) {
|
|
|
const selectItem = stateService.getSelectItem();
|
|
|
if (selectItem == null) {
|
|
@@ -1279,7 +1140,7 @@ export default class Layer {
|
|
|
stateService.setEventName(LayerEvents.MoveSVG);
|
|
|
}
|
|
|
}
|
|
|
- } else if (eventType == "mouseUp") {
|
|
|
+ } else if (eventType == 'mouseUp') {
|
|
|
if (eventName == LayerEvents.AddingRoad) {
|
|
|
if (Settings.isMobile) {
|
|
|
stateService.clearEventName();
|
|
@@ -1311,11 +1172,8 @@ export default class Layer {
|
|
|
} else if (
|
|
|
(eventName == LayerEvents.AddPoint &&
|
|
|
Settings.selectBasePointId != null &&
|
|
|
- (Settings.selectLocationMode == Constant.angleLocationMode ||
|
|
|
- Settings.selectLocationMode == Constant.allLocationMode)) ||
|
|
|
- (eventName == LayerEvents.AddPoint &&
|
|
|
- Settings.baseLineId != null &&
|
|
|
- Settings.selectLocationMode == Constant.normalLocationMode)
|
|
|
+ (Settings.selectLocationMode == Constant.angleLocationMode || Settings.selectLocationMode == Constant.allLocationMode)) ||
|
|
|
+ (eventName == LayerEvents.AddPoint && Settings.baseLineId != null && Settings.selectLocationMode == Constant.normalLocationMode)
|
|
|
) {
|
|
|
} else {
|
|
|
stateService.clearEventName();
|
|
@@ -1332,10 +1190,7 @@ export default class Layer {
|
|
|
|
|
|
stopAddVector() {
|
|
|
let eventName = stateService.getEventName();
|
|
|
- if (
|
|
|
- eventName != LayerEvents.AddingRoad &&
|
|
|
- eventName != LayerEvents.AddingLine
|
|
|
- ) {
|
|
|
+ if (eventName != LayerEvents.AddingRoad && eventName != LayerEvents.AddingLine) {
|
|
|
stateService.clearEventName();
|
|
|
} else if (eventName == LayerEvents.AddingRoad) {
|
|
|
stateService.setEventName(LayerEvents.AddRoad);
|
|
@@ -1473,57 +1328,23 @@ export default class Layer {
|
|
|
let otherPoint1 = null;
|
|
|
let otherPoint2 = null;
|
|
|
if (listenLayer.modifyPoint && listenLayer.modifyPoint.linkedRoadPointIdX) {
|
|
|
- otherPoint1 = dataService.getRoadPoint(
|
|
|
- listenLayer.modifyPoint.linkedRoadPointIdX
|
|
|
- );
|
|
|
- } else if (
|
|
|
- listenLayer.modifyPoint &&
|
|
|
- listenLayer.modifyPoint.linkedCurveRoadPointIdX
|
|
|
- ) {
|
|
|
- otherPoint1 = dataService.getCurveRoadPoint(
|
|
|
- listenLayer.modifyPoint.linkedCurvePointIdX
|
|
|
- );
|
|
|
- } else if (
|
|
|
- listenLayer.modifyPoint &&
|
|
|
- listenLayer.modifyPoint.linkedPointIdX
|
|
|
- ) {
|
|
|
- otherPoint1 = dataService.getPoint(
|
|
|
- listenLayer.modifyPoint.linkedPointIdX
|
|
|
- );
|
|
|
- } else if (
|
|
|
- listenLayer.modifyPoint &&
|
|
|
- listenLayer.modifyPoint.linkedCurvePointIdX
|
|
|
- ) {
|
|
|
- otherPoint1 = dataService.getCurvePoint(
|
|
|
- listenLayer.modifyPoint.linkedCurvePointIdX
|
|
|
- );
|
|
|
+ otherPoint1 = dataService.getRoadPoint(listenLayer.modifyPoint.linkedRoadPointIdX);
|
|
|
+ } else if (listenLayer.modifyPoint && listenLayer.modifyPoint.linkedCurveRoadPointIdX) {
|
|
|
+ otherPoint1 = dataService.getCurveRoadPoint(listenLayer.modifyPoint.linkedCurvePointIdX);
|
|
|
+ } else if (listenLayer.modifyPoint && listenLayer.modifyPoint.linkedPointIdX) {
|
|
|
+ otherPoint1 = dataService.getPoint(listenLayer.modifyPoint.linkedPointIdX);
|
|
|
+ } else if (listenLayer.modifyPoint && listenLayer.modifyPoint.linkedCurvePointIdX) {
|
|
|
+ otherPoint1 = dataService.getCurvePoint(listenLayer.modifyPoint.linkedCurvePointIdX);
|
|
|
}
|
|
|
|
|
|
if (listenLayer.modifyPoint && listenLayer.modifyPoint.linkedRoadPointIdY) {
|
|
|
- otherPoint2 = dataService.getRoadPoint(
|
|
|
- listenLayer.modifyPoint.linkedRoadPointIdY
|
|
|
- );
|
|
|
- } else if (
|
|
|
- listenLayer.modifyPoint &&
|
|
|
- listenLayer.modifyPoint.linkedCurvePointIdY
|
|
|
- ) {
|
|
|
- otherPoint2 = dataService.getCurveRoadPoint(
|
|
|
- listenLayer.modifyPoint.linkedCurvePointIdY
|
|
|
- );
|
|
|
- } else if (
|
|
|
- listenLayer.modifyPoint &&
|
|
|
- listenLayer.modifyPoint.linkedPointIdY
|
|
|
- ) {
|
|
|
- otherPoint2 = dataService.getPoint(
|
|
|
- listenLayer.modifyPoint.linkedPointIdY
|
|
|
- );
|
|
|
- } else if (
|
|
|
- listenLayer.modifyPoint &&
|
|
|
- listenLayer.modifyPoint.linkedCurvePointIdY
|
|
|
- ) {
|
|
|
- otherPoint2 = dataService.getCurvePoint(
|
|
|
- listenLayer.modifyPoint.linkedCurvePointIdY
|
|
|
- );
|
|
|
+ otherPoint2 = dataService.getRoadPoint(listenLayer.modifyPoint.linkedRoadPointIdY);
|
|
|
+ } else if (listenLayer.modifyPoint && listenLayer.modifyPoint.linkedCurvePointIdY) {
|
|
|
+ otherPoint2 = dataService.getCurveRoadPoint(listenLayer.modifyPoint.linkedCurvePointIdY);
|
|
|
+ } else if (listenLayer.modifyPoint && listenLayer.modifyPoint.linkedPointIdY) {
|
|
|
+ otherPoint2 = dataService.getPoint(listenLayer.modifyPoint.linkedPointIdY);
|
|
|
+ } else if (listenLayer.modifyPoint && listenLayer.modifyPoint.linkedCurvePointIdY) {
|
|
|
+ otherPoint2 = dataService.getCurvePoint(listenLayer.modifyPoint.linkedCurvePointIdY);
|
|
|
}
|
|
|
|
|
|
let otherPoint = {};
|
|
@@ -1533,10 +1354,28 @@ export default class Layer {
|
|
|
}
|
|
|
if (otherPoint2) {
|
|
|
otherPoint.y = otherPoint2.y;
|
|
|
- if (!otherPoint.hasOwnProperty("x")) {
|
|
|
+ if (!otherPoint.hasOwnProperty('x')) {
|
|
|
otherPoint.x = otherPoint2.x;
|
|
|
}
|
|
|
}
|
|
|
elementService.execute(otherPoint, point);
|
|
|
}
|
|
|
+
|
|
|
+ //测试用
|
|
|
+ onKeydown(e) {
|
|
|
+ let focusItem = stateService.getFocusItem();
|
|
|
+ if (focusItem) {
|
|
|
+ console.log("键盘(foucus有效):" + e.code);
|
|
|
+ //添加固定点
|
|
|
+ if (e.code == "KeyQ") {
|
|
|
+ stateService.setEventName(LayerEvents.AddPoint);
|
|
|
+ }
|
|
|
+ //一键测量
|
|
|
+ if (e.code == "KeyA") {
|
|
|
+ locationModeControl.setAngle();
|
|
|
+ this.renderer.autoRedraw();
|
|
|
+ this.history.save();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|