HistoryUtil.js 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083
  1. import { mathUtil } from "../Util/MathUtil";
  2. import { dataService } from "../Service/DataService";
  3. import { textService } from "../Service/TextService";
  4. import Constant from "../Constant";
  5. import Settings from "../Settings";
  6. export default class HistoryUtil {
  7. constructor() {}
  8. isDifferentForPoints(point1, point2) {
  9. if (
  10. point1.x == point2.x &&
  11. point1.y == point2.y &&
  12. mathUtil.equalJSON(point1.parent, point1.parent) &&
  13. point1.category == point2.category &&
  14. point1.locationMode == point2.locationMode &&
  15. point1.linkedBasePointId == point2.linkedBasePointId &&
  16. point1.linkedTextId == point2.linkedTextId
  17. ) {
  18. return false;
  19. } else {
  20. return true;
  21. }
  22. }
  23. isDifferentForLines(line1, line2) {
  24. if (
  25. line1.startId == line2.startId &&
  26. line1.endId == line2.endId &&
  27. line1.category == line2.category &&
  28. line1.locationMode == line2.locationMode &&
  29. line1.linkedFixPointId == line2.linkedFixPointId &&
  30. line1.linkedBasePointId == line2.linkedBasePointId &&
  31. line1.style == line2.style &&
  32. line1.weight == line2.weight &&
  33. line1.zebraCrossStyle == line2.zebraCrossStyle
  34. ) {
  35. return false;
  36. } else {
  37. return true;
  38. }
  39. }
  40. isDifferentForCurvePoints(curvePoint1, curvePoint2) {
  41. if (
  42. curvePoint1.x == curvePoint2.x &&
  43. curvePoint1.y == curvePoint2.y &&
  44. curvePoint1.parent == curvePoint2.parent &&
  45. curvePoint1.index == curvePoint2.index
  46. ) {
  47. return false;
  48. } else {
  49. return true;
  50. }
  51. }
  52. isDifferentForCurveLines(curveLine1, curveLine2) {
  53. if (
  54. curveLine1.startId == curveLine2.startId &&
  55. curveLine1.endId == curveLine2.endId &&
  56. mathUtil.equalJSON(curveLine1.points, curveLine2.points)
  57. ) {
  58. return false;
  59. } else {
  60. return true;
  61. }
  62. }
  63. isDifferentForCircles(circle1, circle2) {
  64. if (
  65. mathUtil.equalPoint(circle1.center, circle2.center) &&
  66. circle1.radiusX == circle2.radiusX &&
  67. circle1.radiusY == circle2.radiusY &&
  68. circle1.color == circle2.color
  69. ) {
  70. return false;
  71. } else {
  72. return true;
  73. }
  74. }
  75. isDifferentForTexts(text1, text2) {
  76. if (
  77. mathUtil.equalPoint(text1.center, text2.center) &&
  78. text1.value == text2.value &&
  79. text1.angle == text2.angle &&
  80. text1.fontSize == text2.fontSize &&
  81. text1.color == text2.color &&
  82. text1.linkedPointId == text2.linkedPointId
  83. ) {
  84. return false;
  85. } else {
  86. return true;
  87. }
  88. }
  89. isDifferentForMagnifiers(magnifier1, magnifier2) {
  90. if (
  91. mathUtil.equalPoint(magnifier1.position, magnifier2.position) &&
  92. magnifier1.photoUrl == magnifier2.photoUrl &&
  93. mathUtil.equalPoint(magnifier1.popPosition, magnifier2.popPosition)
  94. ) {
  95. return false;
  96. } else {
  97. return true;
  98. }
  99. }
  100. isDifferentForSVGs(svg1, svg2) {
  101. if (
  102. mathUtil.equalPoint(svg1.center, svg2.center) &&
  103. svg1.type == svg2.type &&
  104. svg1.angle == svg2.angle &&
  105. svg1.scale == svg2.scale
  106. ) {
  107. return false;
  108. } else {
  109. return true;
  110. }
  111. }
  112. isDifferentForRoadPoints(roadPoint1, roadPoint2) {
  113. if (
  114. mathUtil.equalPoint(roadPoint1, roadPoint2) &&
  115. mathUtil.equalJSON(roadPoint1.parent, roadPoint2.parent)
  116. ) {
  117. return false;
  118. } else {
  119. return true;
  120. }
  121. }
  122. isDifferentForRoadEdges(roadEdge1, roadEdge2) {
  123. if (
  124. mathUtil.equalPoint(roadEdge1.start, roadEdge2.start) &&
  125. mathUtil.equalPoint(roadEdge1.end, roadEdge2.end) &&
  126. roadEdge1.parent == roadEdge2.parent &&
  127. roadEdge1.style == roadEdge2.style &&
  128. roadEdge1.roadSide == roadEdge2.roadSide
  129. ) {
  130. return false;
  131. } else {
  132. return true;
  133. }
  134. }
  135. isDifferentForRoads(road1, road2) {
  136. if (
  137. road1.startId == road2.startId &&
  138. road1.endId == road2.endId &&
  139. road1.leftEdgeId == road2.leftEdgeId &&
  140. road1.rightEdgeId == road2.rightEdgeId &&
  141. road1.way == road2.way &&
  142. road1.roadWidthTipsPos == road2.roadWidthTipsPos
  143. ) {
  144. if (road1.way == Constant.oneWay) {
  145. if (
  146. road1.singleRoadWidth == road2.singleRoadWidth &&
  147. road1.singleRoadDrivewayCount == road2.singleRoadDrivewayCount &&
  148. road1.singleLanes.length == road2.singleLanes.length
  149. ) {
  150. for (let i = 0; i < road1.singleLanes.length; ++i) {
  151. if (
  152. !mathUtil.equalPoint(
  153. road1.singleLanes[i].start,
  154. road2.singleLanes[i].start
  155. ) ||
  156. !mathUtil.equalPoint(
  157. road1.singleLanes[i].end,
  158. road2.singleLanes[i].end
  159. )
  160. ) {
  161. return true;
  162. }
  163. }
  164. return false;
  165. } else {
  166. return true;
  167. }
  168. } else if (road1.way == Constant.twoWay) {
  169. if (
  170. road1.leftWidth == road2.leftWidth &&
  171. road1.rightWidth == road2.rightWidth &&
  172. road1.leftDrivewayCount == road2.leftDrivewayCount &&
  173. road1.rightDrivewayCount == road2.rightDrivewayCount &&
  174. road1.midDivide.midDivideWidth == road2.midDivide.midDivideWidth &&
  175. mathUtil.equalPoint(
  176. road1.midDivide.leftMidDivide.start,
  177. road2.midDivide.leftMidDivide.start
  178. ) &&
  179. mathUtil.equalPoint(
  180. road1.midDivide.leftMidDivide.end,
  181. road2.midDivide.leftMidDivide.end
  182. ) &&
  183. mathUtil.equalPoint(
  184. road1.midDivide.rightMidDivide.start,
  185. road2.midDivide.rightMidDivide.start
  186. ) &&
  187. mathUtil.equalPoint(
  188. road1.midDivide.rightMidDivide.end,
  189. road2.midDivide.rightMidDivide.end
  190. ) &&
  191. road1.leftLanes.length == road2.leftLanes.length &&
  192. road1.rightLanes.length == road2.rightLanes.length
  193. ) {
  194. for (let i = 0; i < road1.leftLanes.length; ++i) {
  195. if (
  196. !mathUtil.equalPoint(
  197. road1.leftLanes[i].start,
  198. road2.leftLanes[i].start
  199. ) ||
  200. !mathUtil.equalPoint(
  201. road1.leftLanes[i].end,
  202. road2.leftLanes[i].end
  203. )
  204. ) {
  205. return true;
  206. }
  207. }
  208. for (let i = 0; i < road1.rightLanes.length; ++i) {
  209. if (
  210. !mathUtil.equalPoint(
  211. road1.rightLanes[i].start,
  212. road2.rightLanes[i].start
  213. ) ||
  214. !mathUtil.equalPoint(
  215. road1.rightLanes[i].end,
  216. road2.rightLanes[i].end
  217. )
  218. ) {
  219. return true;
  220. }
  221. }
  222. return false;
  223. } else {
  224. return true;
  225. }
  226. } else {
  227. return true;
  228. }
  229. } else {
  230. return true;
  231. }
  232. }
  233. isDifferentForCurveRoadPoints(curveRoadPoint1, curveRoadPoint2) {
  234. if (
  235. mathUtil.equalPoint(curveRoadPoint1, curveRoadPoint2) &&
  236. mathUtil.equalJSON(curveRoadPoint1.parent, curveRoadPoint2.parent) &&
  237. curveRoadPoint1.index == curveRoadPoint2.index
  238. ) {
  239. return false;
  240. } else {
  241. return true;
  242. }
  243. }
  244. isDifferentForCurveRoadEdges(curveRoadEdge1, curveRoadEdge2) {
  245. if (
  246. mathUtil.equalPoint(curveRoadEdge1.start, curveRoadEdge2.start) &&
  247. mathUtil.equalPoint(curveRoadEdge1.end, curveRoadEdge2.end) &&
  248. mathUtil.equalPoints(curveRoadEdge1.points, curveRoadEdge2.points) &&
  249. curveRoadEdge1.parent == curveRoadEdge2.parent &&
  250. curveRoadEdge1.style == curveRoadEdge2.style &&
  251. curveRoadEdge1.weight == curveRoadEdge2.weight
  252. // &&
  253. // curveRoadEdge1.roadSide == curveRoadEdge2.roadSide
  254. ) {
  255. return false;
  256. } else {
  257. return true;
  258. }
  259. }
  260. isDifferentForCurveRoads(curveRoad1, curveRoad2) {
  261. if (
  262. curveRoad1.startId == curveRoad2.startId &&
  263. curveRoad1.endId == curveRoad2.endId &&
  264. mathUtil.equalPoints(curveRoad1.points, curveRoad2.points) &&
  265. curveRoad1.leftEdgeId == curveRoad2.leftEdgeId &&
  266. curveRoad1.rightEdgeId == curveRoad2.rightEdgeId &&
  267. curveRoad1.way == curveRoad2.way
  268. ) {
  269. if (curveRoad1.way == Constant.oneWay) {
  270. if (
  271. curveRoad1.singleRoadWidth == curveRoad2.singleRoadWidth &&
  272. curveRoad1.singleRoadDrivewayCount ==
  273. curveRoad2.singleRoadDrivewayCount
  274. ) {
  275. return false;
  276. } else {
  277. return true;
  278. }
  279. } else if (curveRoad1.way == Constant.twoWay) {
  280. if (
  281. curveRoad1.leftWidth == curveRoad2.leftWidth &&
  282. curveRoad1.rightWidth == curveRoad2.rightWidth &&
  283. curveRoad1.leftDrivewayCount == curveRoad2.leftDrivewayCount &&
  284. curveRoad1.rightDrivewayCount == curveRoad2.rightDrivewayCount &&
  285. curveRoad1.midDivide.midDivideWidth ==
  286. curveRoad2.midDivide.midDivideWidth
  287. ) {
  288. return false;
  289. } else {
  290. return true;
  291. }
  292. } else {
  293. return true;
  294. }
  295. } else {
  296. return true;
  297. }
  298. }
  299. isDifferentForCrossPoints(crossPoint1, crossPoint2) {
  300. if (
  301. mathUtil.equalPoint(crossPoint1, crossPoint2) &&
  302. mathUtil.equalPoint(crossPoint1.extremePoint, crossPoint2.extremePoint) &&
  303. crossPoint1.edgeInfo1.id == crossPoint2.edgeInfo1.id &&
  304. crossPoint1.edgeInfo1.dir == crossPoint2.edgeInfo1.dir &&
  305. crossPoint1.edgeInfo2.id == crossPoint2.edgeInfo2.id &&
  306. crossPoint1.edgeInfo2.dir == crossPoint2.edgeInfo2.dir &&
  307. crossPoint1.style == crossPoint2.style &&
  308. crossPoint1.weight == crossPoint2.weight
  309. ) {
  310. return false;
  311. } else {
  312. return true;
  313. }
  314. }
  315. isDifferentForSettings(settings1, settings2) {
  316. if (
  317. settings1.selectLineCategory == settings2.selectLineCategory &&
  318. settings1.selectPointCategory == settings2.selectPointCategory &&
  319. settings1.selectLocationMode == settings2.selectLocationMode &&
  320. settings1.baseLineId == settings2.baseLineId &&
  321. settings1.selectBasePointId == settings2.selectBasePointId
  322. ) {
  323. return false;
  324. } else {
  325. return true;
  326. }
  327. }
  328. assignPointFromPoint(point1, point2) {
  329. const pointInfo = {};
  330. pointInfo.vectorId = point1.vectorId;
  331. pointInfo.position = { x: point2.x, y: point2.y };
  332. pointInfo.parent = JSON.parse(JSON.stringify(point2.parent));
  333. pointInfo.locationMode = point2.locationMode;
  334. pointInfo.linkedBasePointId = point2.linkedBasePointId;
  335. pointInfo.linkedTextId = point2.linkedTextId;
  336. pointInfo.category = point2.category;
  337. this.setPointInfo(pointInfo);
  338. }
  339. assignLineFromLine(line1, line2) {
  340. const lineInfo = {};
  341. lineInfo.vectorId = line1.vectorId;
  342. lineInfo.start = line2.start;
  343. lineInfo.end = line2.end;
  344. lineInfo.category = line2.category;
  345. lineInfo.locationMode = line2.locationMode;
  346. lineInfo.linkedFixPointId = line2.linkedFixPointId;
  347. lineInfo.linkedBasePointId = line2.linkedBasePointId;
  348. lineInfo.value = line2.value;
  349. lineInfo.style = line2.style;
  350. lineInfo.weight = line2.weight;
  351. lineInfo.zebraCrossStyle = line2.zebraCrossStyle
  352. this.setLineInfo(lineInfo);
  353. }
  354. assignCurvePointFromCurvePoint(curvePoint1, curvePoint2) {
  355. const curvePointInfo = {};
  356. curvePointInfo.vectorId = curvePoint1.vectorId;
  357. curvePointInfo.position = { x: curvePoint2.x, y: curvePoint2.y };
  358. curvePointInfo.parent = curvePoint2.parent;
  359. curvePointInfo.index = curvePoint2.index;
  360. this.setCurvePointInfo(curvePointInfo);
  361. }
  362. assignCurveLineFromCurveLine(curveLine1, curveLine2) {
  363. const curveLineInfo = {};
  364. curveLineInfo.vectorId = curveLine1.vectorId;
  365. curveLineInfo.startId = curveLine2.startId;
  366. curveLineInfo.endId = curveLine2.endId;
  367. curveLineInfo.points = JSON.parse(JSON.stringify(curveLine2.points));
  368. curveLineInfo.curves = JSON.parse(JSON.stringify(curveLine2.curves));
  369. this.setCurveLineInfo(curveLineInfo);
  370. }
  371. assignCircleFromCircle(circle1, circle2) {
  372. const circleInfo = {};
  373. circleInfo.vectorId = circle1.vectorId;
  374. circleInfo.center = circle2.center;
  375. circleInfo.radiusX = circle2.radiusX;
  376. circleInfo.radiusY = circle2.radiusY;
  377. circleInfo.points = JSON.parse(JSON.stringify(circle2.points));
  378. circleInfo.color = circle2.color;
  379. this.setCircleInfo(circleInfo);
  380. }
  381. assignTextFromText(text1, text2) {
  382. const textInfo = {};
  383. textInfo.vectorId = text1.vectorId;
  384. textInfo.value = text2.value;
  385. textInfo.center = JSON.parse(JSON.stringify(text2.center));
  386. textInfo.angle = text2.angle;
  387. textInfo.color = text2.color;
  388. textInfo.fontSize = text2.fontSize;
  389. textInfo.linkedPointId = text2.linkedPointId;
  390. this.setTextInfo(textInfo);
  391. }
  392. assignMagnifierFromMagnifier(magnifier1, magnifier2) {
  393. const magnifierInfo = {};
  394. magnifierInfo.vectorId = magnifier1.vectorId;
  395. magnifierInfo.photoUrl = magnifier2.photoUrl;
  396. magnifierInfo.position = JSON.parse(JSON.stringify(magnifier2.position));
  397. magnifierInfo.popPosition = JSON.parse(
  398. JSON.stringify(magnifier2.popPosition)
  399. );
  400. this.setMagnifierInfo(magnifierInfo);
  401. }
  402. assignSVGFromSVG(svg1, svg2) {
  403. const svgInfo = {};
  404. svgInfo.vectorId = svg1.vectorId;
  405. svgInfo.type = svg2.type;
  406. svgInfo.center = JSON.parse(JSON.stringify(svg2.center));
  407. svgInfo.points = JSON.parse(JSON.stringify(svg2.points));
  408. svgInfo.angle = svg2.angle;
  409. svgInfo.scale = svg2.scale;
  410. this.setSVGInfo(svgInfo);
  411. }
  412. assignRoadPointFromRoadPoint(roadPoint1, roadPoint2) {
  413. const roadPointInfo = {};
  414. roadPointInfo.vectorId = roadPoint1.vectorId;
  415. roadPointInfo.position = {
  416. x: roadPoint2.position.x,
  417. y: roadPoint2.position.y,
  418. };
  419. roadPointInfo.parent = JSON.parse(JSON.stringify(roadPoint2.parent));
  420. this.setRoadPointInfo(roadPointInfo);
  421. }
  422. assignRoadEdgeFromRoadEdge(roadEdge1, roadEdge2) {
  423. const roadEdgeInfo = {};
  424. roadEdgeInfo.vectorId = roadEdge1.vectorId;
  425. roadEdgeInfo.style = roadEdge2.style;
  426. roadEdgeInfo.start = { x: roadEdge2.start.x, y: roadEdge2.start.y };
  427. roadEdgeInfo.end = { x: roadEdge2.end.x, y: roadEdge2.end.y };
  428. roadEdgeInfo.parent = roadEdge2.parent;
  429. roadEdgeInfo.roadSide = roadEdge2.roadSide;
  430. this.setRoadEdgeInfo(roadEdgeInfo);
  431. }
  432. assignRoadFromRoad(road1, road2) {
  433. const roadInfo = {};
  434. roadInfo.vectorId = road1.vectorId;
  435. roadInfo.startId = road2.startId;
  436. roadInfo.endId = road2.endId;
  437. roadInfo.leftEdgeId = road2.leftEdgeId;
  438. roadInfo.rightEdgeId = road2.rightEdgeId;
  439. roadInfo.way = road2.way;
  440. roadInfo.roadWidthTipsPos = road2.roadWidthTipsPos;
  441. if (road2.way == Constant.oneWay) {
  442. roadInfo.singleRoadWidth = road2.singleRoadWidth;
  443. roadInfo.singleRoadDrivewayCount = road2.singleRoadDrivewayCount;
  444. roadInfo.singleLanes = JSON.parse(JSON.stringify(road2.singleLanes));
  445. } else if (road2.way == Constant.twoWay) {
  446. roadInfo.leftWidth = road2.leftWidth;
  447. roadInfo.rightWidth = road2.rightWidth;
  448. roadInfo.leftDrivewayCount = road2.leftDrivewayCount;
  449. roadInfo.rightDrivewayCount = road2.rightDrivewayCount;
  450. roadInfo.midDivide = JSON.parse(JSON.stringify(road2.midDivide));
  451. roadInfo.leftLanes = JSON.parse(JSON.stringify(road2.leftLanes));
  452. roadInfo.rightLanes = JSON.parse(JSON.stringify(road2.rightLanes));
  453. }
  454. this.setRoadInfo(roadInfo);
  455. }
  456. assignCurveRoadPointFromCurveRoadPoint(curveRoadPoint1, curveRoadPoint2) {
  457. const curveRoadPointInfo = {};
  458. curveRoadPointInfo.vectorId = curveRoadPoint1.vectorId;
  459. curveRoadPointInfo.position = {
  460. x: curveRoadPoint2.position.x,
  461. y: curveRoadPoint2.position.y,
  462. };
  463. curveRoadPointInfo.parent = JSON.parse(
  464. JSON.stringify(curveRoadPoint2.parent)
  465. );
  466. curveRoadPointInfo.index = curveRoadPoint2.index;
  467. this.setCurveRoadPointInfo(curveRoadPointInfo);
  468. }
  469. assignCurveRoadEdgeFromCurveRoadEdge(curveRoadEdge1, curveRoadEdge2) {
  470. const curveRoadEdgeInfo = {};
  471. curveRoadEdgeInfo.vectorId = curveRoadEdge1.vectorId;
  472. curveRoadEdgeInfo.start = {
  473. x: curveRoadEdge2.start.x,
  474. y: curveRoadEdge2.start.y,
  475. };
  476. curveRoadEdgeInfo.end = {
  477. x: curveRoadEdge2.end.x,
  478. y: curveRoadEdge2.end.y,
  479. };
  480. curveRoadEdgeInfo.points = JSON.parse(
  481. JSON.stringify(curveRoadEdge2.points)
  482. );
  483. curveRoadEdgeInfo.curves = JSON.parse(
  484. JSON.stringify(curveRoadEdge2.curves)
  485. );
  486. curveRoadEdgeInfo.parent = curveRoadEdge2.parent;
  487. curveRoadEdgeInfo.style = curveRoadEdge2.style;
  488. curveRoadEdgeInfo.weight = curveRoadEdge2.weight;
  489. // curveRoadEdgeInfo.roadSide == curveRoadEdge2.roadSide
  490. this.setCurveRoadEdgeInfo(curveRoadEdgeInfo);
  491. }
  492. assignCurveRoadFromCurveRoad(curveRoad1, curveRoad2) {
  493. const curveRoadInfo = {};
  494. curveRoadInfo.vectorId = curveRoad1.vectorId;
  495. curveRoadInfo.startId = curveRoad2.startId;
  496. curveRoadInfo.endId = curveRoad2.endId;
  497. curveRoadInfo.leftEdgeId = curveRoad2.leftEdgeId;
  498. curveRoadInfo.rightEdgeId = curveRoad2.rightEdgeId;
  499. curveRoadInfo.points = JSON.parse(JSON.stringify(curveRoad2.points));
  500. curveRoadInfo.curves = JSON.parse(JSON.stringify(curveRoad2.curves));
  501. curveRoadInfo.way = curveRoad2.way;
  502. if (curveRoad2.way == Constant.oneWay) {
  503. curveRoadInfo.singleCurveRoadWidth = curveRoad2.singleCurveRoadWidth;
  504. curveRoadInfo.singleCurveRoadDrivewayCount =
  505. curveRoad2.singleCurveRoadDrivewayCount;
  506. curveRoadInfo.singleLanes = JSON.parse(
  507. JSON.stringify(curveRoad2.singleLanes)
  508. );
  509. curveRoadInfo.singleLanesCurves = JSON.parse(
  510. JSON.stringify(curveRoad2.singleLanesCurves)
  511. );
  512. } else if (curveRoad2.way == Constant.twoWay) {
  513. curveRoadInfo.leftWidth = curveRoad2.leftWidth;
  514. curveRoadInfo.rightWidth = curveRoad2.rightWidth;
  515. curveRoadInfo.leftDrivewayCount = curveRoad2.leftDrivewayCount;
  516. curveRoadInfo.rightDrivewayCount = curveRoad2.rightDrivewayCount;
  517. curveRoadInfo.midDivide = JSON.parse(
  518. JSON.stringify(curveRoad2.midDivide)
  519. );
  520. curveRoadInfo.leftLanesCurves = JSON.parse(
  521. JSON.stringify(curveRoad2.leftLanesCurves)
  522. );
  523. curveRoadInfo.rightLanesCurves = JSON.parse(
  524. JSON.stringify(curveRoad2.rightLanesCurves)
  525. );
  526. curveRoadInfo.leftLanes = JSON.parse(
  527. JSON.stringify(curveRoad2.leftLanes)
  528. );
  529. curveRoadInfo.rightLanes = JSON.parse(
  530. JSON.stringify(curveRoad2.rightLanes)
  531. );
  532. }
  533. curveRoadInfo.points = [];
  534. for (let i = 0; i < curveRoad2.points.length; ++i) {
  535. curveRoadInfo.points[i] = {};
  536. // curveRoadInfo.points[i].vectorId = curveRoad2.points[i].vectorId;
  537. curveRoadInfo.points[i] = curveRoad2.points[i];
  538. }
  539. this.setCurveRoadInfo(curveRoadInfo);
  540. }
  541. assignCrossPointFromCrossPoint(crossPoint1, crossPoint2) {
  542. const crossPointInfo = {};
  543. crossPointInfo.vectorId = crossPoint1.vectorId;
  544. crossPointInfo.position = {
  545. x: crossPoint2.position.x,
  546. y: crossPoint2.position.y,
  547. };
  548. crossPointInfo.edgeInfo1 = JSON.parse(
  549. JSON.stringify(crossPoint2.edgeInfo1)
  550. );
  551. crossPointInfo.edgeInfo2 = JSON.parse(
  552. JSON.stringify(crossPoint2.edgeInfo2)
  553. );
  554. crossPoint1.edgeInfo1 = JSON.parse(JSON.stringify(crossPoint2.edgeInfo1));
  555. crossPoint1.edgeInfo2 = JSON.parse(JSON.stringify(crossPoint2.edgeInfo2));
  556. dataService.addCrossPoint(crossPoint1);
  557. crossPointInfo.extremePoint = {
  558. x: crossPoint2.extremePoint.x,
  559. y: crossPoint2.extremePoint.y,
  560. };
  561. crossPointInfo.style = crossPoint2.style;
  562. crossPointInfo.weight = crossPoint2.weight;
  563. crossPointInfo.curves = JSON.parse(JSON.stringify(crossPoint2.curves));
  564. this.setCrossPointInfo(crossPointInfo);
  565. }
  566. assignSettingsFromSettings(settings1, settings2) {
  567. settings1.selectLineCategory = settings2.selectLineCategory;
  568. settings1.selectPointCategory = settings2.selectPointCategory;
  569. settings1.selectLocationMode = settings2.selectLocationMode;
  570. settings1.baseLineId = settings2.baseLineId;
  571. settings1.selectBasePointId = settings2.selectBasePointId;
  572. }
  573. getDataForPoint(point) {
  574. const data = {};
  575. data.id = point.vectorId;
  576. mathUtil.clonePoint(data, point);
  577. data.parent = JSON.parse(JSON.stringify(point.parent));
  578. data.category = point.category;
  579. data.locationMode = point.locationMode;
  580. data.linkedBasePointId = point.linkedBasePointId;
  581. data.linkedTextId = point.linkedTextId;
  582. data.type = point.geoType;
  583. return data;
  584. }
  585. getDataForLine(line) {
  586. const data = {};
  587. data.id = line.vectorId;
  588. data.start = line.startId;
  589. data.end = line.endId;
  590. data.category = line.category;
  591. data.locationMode = line.locationMode;
  592. data.linkedFixPointId = line.linkedFixPointId;
  593. data.linkedBasePointId = line.linkedBasePointId;
  594. data.type = line.geoType;
  595. data.style = line.style;
  596. data.weight = line.weight;
  597. data.zebraCrossStyle = line.zebraCrossStyle
  598. return data;
  599. }
  600. getDataForCurvePoint(curvePoint) {
  601. const data = {};
  602. data.id = curvePoint.vectorId;
  603. mathUtil.clonePoint(data, curvePoint);
  604. data.parent = curvePoint.parent;
  605. data.index = curvePoint.index;
  606. data.type = curvePoint.geoType;
  607. return data;
  608. }
  609. getDataForCurveLine(curveLine) {
  610. const data = {};
  611. data.id = curveLine.vectorId;
  612. data.startId = curveLine.startId;
  613. data.endId = curveLine.endId;
  614. data.points = JSON.parse(JSON.stringify(curveLine.points));
  615. data.curves = JSON.parse(JSON.stringify(curveLine.curves));
  616. data.type = curveLine.geoType;
  617. return data;
  618. }
  619. getDataForCircle(circle) {
  620. const data = {};
  621. data.id = circle.vectorId;
  622. data.center = {};
  623. mathUtil.clonePoint(data.center, circle.center);
  624. data.radiusX = circle.radiusX;
  625. data.radiusY = circle.radiusY;
  626. data.points = circle.points;
  627. data.color = circle.color;
  628. data.type = circle.geoType;
  629. return data;
  630. }
  631. getDataForText(text) {
  632. const data = {};
  633. data.id = text.vectorId;
  634. data.type = text.geoType;
  635. data.angle = text.angle;
  636. data.center = {};
  637. mathUtil.clonePoint(data.center, text.center);
  638. data.value = text.value;
  639. data.linkedPointId = text.linkedPointId;
  640. data.fontSize = text.fontSize;
  641. data.color = text.color;
  642. return data;
  643. }
  644. getDataForMagnifier(magnifier) {
  645. const data = {};
  646. data.id = magnifier.vectorId;
  647. data.type = magnifier.geoType;
  648. data.position = {};
  649. data.popPosition = {};
  650. mathUtil.clonePoint(data.position, magnifier.position);
  651. mathUtil.clonePoint(data.popPosition, magnifier.popPosition);
  652. data.photoUrl = magnifier.photoUrl;
  653. return data;
  654. }
  655. getDataForSVG(svg) {
  656. const data = {};
  657. data.id = svg.vectorId;
  658. data.type = svg.geoType;
  659. data.center = {};
  660. mathUtil.clonePoint(data.center, svg.center);
  661. data.points = [];
  662. data.points[0] = {};
  663. mathUtil.clonePoint(data.points[0], svg.points[0]);
  664. data.points[1] = {};
  665. mathUtil.clonePoint(data.points[1], svg.points[1]);
  666. data.points[2] = {};
  667. mathUtil.clonePoint(data.points[2], svg.points[2]);
  668. data.points[3] = {};
  669. mathUtil.clonePoint(data.points[3], svg.points[3]);
  670. data.type = svg.type;
  671. data.angle = svg.angle;
  672. data.scale = svg.scale;
  673. return data;
  674. }
  675. getDataForRoadPoint(roadPoint) {
  676. const data = {};
  677. data.id = roadPoint.vectorId;
  678. data.type = roadPoint.geoType;
  679. data.position = {};
  680. mathUtil.clonePoint(data.position, roadPoint);
  681. data.parent = JSON.parse(JSON.stringify(roadPoint.parent));
  682. return data;
  683. }
  684. getDataForRoadEdge(roadEdge) {
  685. const data = {};
  686. data.id = roadEdge.vectorId;
  687. data.type = roadEdge.geoType;
  688. data.parent = roadEdge.parent;
  689. data.start = {};
  690. data.start = JSON.parse(JSON.stringify(roadEdge.start));
  691. data.end = {};
  692. data.end = JSON.parse(JSON.stringify(roadEdge.end));
  693. data.style = roadEdge.style;
  694. data.roadSide = roadEdge.roadSide;
  695. return data;
  696. }
  697. getDataForRoad(road) {
  698. const data = {};
  699. data.id = road.vectorId;
  700. data.type = road.geoType;
  701. data.startId = road.startId;
  702. data.endId = road.endId;
  703. data.leftEdgeId = road.leftEdgeId;
  704. data.rightEdgeId = road.rightEdgeId;
  705. data.roadWidthTipsPos = road.roadWidthTipsPos;
  706. data.way = road.way;
  707. if (road.way == Constant.oneWay) {
  708. data.singleRoadWidth = road.singleRoadWidth;
  709. data.singleRoadDrivewayCount = road.singleRoadDrivewayCount;
  710. data.singleLanes = JSON.parse(JSON.stringify(road.singleLanes));
  711. } else if (road.way == Constant.twoWay) {
  712. data.leftWidth = road.leftWidth;
  713. data.rightWidth = road.rightWidth;
  714. data.leftDrivewayCount = road.leftDrivewayCount;
  715. data.rightDrivewayCount = road.rightDrivewayCount;
  716. data.midDivide = JSON.parse(JSON.stringify(road.midDivide));
  717. data.leftLanes = JSON.parse(JSON.stringify(road.leftLanes));
  718. data.rightLanes = JSON.parse(JSON.stringify(road.rightLanes));
  719. }
  720. return data;
  721. }
  722. getDataForCurveRoadPoint(curveRoadPoint) {
  723. const data = {};
  724. data.id = curveRoadPoint.vectorId;
  725. data.type = curveRoadPoint.geoType;
  726. data.position = {};
  727. mathUtil.clonePoint(data.position, curveRoadPoint);
  728. data.parent = curveRoadPoint.parent;
  729. data.index = curveRoadPoint.index;
  730. return data;
  731. }
  732. getDataForCurveRoadEdge(curveRoadEdge) {
  733. const data = {};
  734. data.id = curveRoadEdge.vectorId;
  735. data.type = curveRoadEdge.geoType;
  736. data.parent = curveRoadEdge.parent;
  737. data.start = JSON.parse(JSON.stringify(curveRoadEdge.start));
  738. data.end = JSON.parse(JSON.stringify(curveRoadEdge.end));
  739. data.points = JSON.parse(JSON.stringify(curveRoadEdge.points));
  740. data.curves = JSON.parse(JSON.stringify(curveRoadEdge.curves));
  741. data.style = curveRoadEdge.style;
  742. data.weight = curveRoadEdge.weight;
  743. // data.roadSide == curveRoadEdge.roadSide
  744. return data;
  745. }
  746. getDataForCurveRoad(curveRoad) {
  747. const data = {};
  748. data.id = curveRoad.vectorId;
  749. data.type = curveRoad.geoType;
  750. data.startId = curveRoad.startId;
  751. data.endId = curveRoad.endId;
  752. data.leftEdgeId = curveRoad.leftEdgeId;
  753. data.rightEdgeId = curveRoad.rightEdgeId;
  754. data.points = JSON.parse(JSON.stringify(curveRoad.points));
  755. data.curves = JSON.parse(JSON.stringify(curveRoad.curves));
  756. data.way = curveRoad.way;
  757. if (curveRoad.way == Constant.oneWay) {
  758. data.singleCurveRoadWidth = curveRoad.singleRoadWidth;
  759. data.singleCurveRoadDrivewayCount = curveRoad.singleRoadDrivewayCount;
  760. data.singleLanesCurves = JSON.parse(
  761. JSON.stringify(curveRoad.singleLanesCurves)
  762. );
  763. data.singleLanes = JSON.parse(JSON.stringify(curveRoad.singleLanes));
  764. } else if (curveRoad.way == Constant.twoWay) {
  765. data.leftWidth = curveRoad.leftWidth;
  766. data.rightWidth = curveRoad.rightWidth;
  767. data.leftDrivewayCount = curveRoad.leftDrivewayCount;
  768. data.rightDrivewayCount = curveRoad.rightDrivewayCount;
  769. data.midDivide = JSON.parse(JSON.stringify(curveRoad.midDivide));
  770. data.leftLanesCurves = JSON.parse(
  771. JSON.stringify(curveRoad.leftLanesCurves)
  772. );
  773. data.rightLanesCurves = JSON.parse(
  774. JSON.stringify(curveRoad.rightLanesCurves)
  775. );
  776. data.leftLanes = JSON.parse(JSON.stringify(curveRoad.leftLanes));
  777. data.rightLanes = JSON.parse(JSON.stringify(curveRoad.rightLanes));
  778. }
  779. return data;
  780. }
  781. getDataForCrossPoint(crossPoint) {
  782. const data = {};
  783. data.id = crossPoint.vectorId;
  784. data.type = crossPoint.geoType;
  785. data.position = {};
  786. mathUtil.clonePoint(data.position, crossPoint);
  787. data.extremePoint = {};
  788. mathUtil.clonePoint(data.extremePoint, crossPoint.extremePoint);
  789. data.edgeInfo1 = JSON.parse(JSON.stringify(crossPoint.edgeInfo1));
  790. data.edgeInfo2 = JSON.parse(JSON.stringify(crossPoint.edgeInfo2));
  791. data.curves = JSON.parse(JSON.stringify(crossPoint.curves));
  792. data.style = crossPoint.style;
  793. data.weight = crossPoint.weight;
  794. return data;
  795. }
  796. getDataForSettings(settings) {
  797. const data = {};
  798. data.selectLineCategory = settings.selectLineCategory;
  799. data.selectPointCategory = settings.selectPointCategory;
  800. data.selectLocationMode = settings.selectLocationMode;
  801. data.baseLineId = settings.baseLineId;
  802. data.selectBasePointId = settings.selectBasePointId;
  803. return data;
  804. }
  805. setPointInfo(pointInfo) {
  806. let point = dataService.getPoint(pointInfo.vectorId);
  807. mathUtil.clonePoint(point, pointInfo.position);
  808. point.parent = JSON.parse(JSON.stringify(pointInfo.parent));
  809. point.category = pointInfo.category;
  810. point.locationMode = pointInfo.locationMode;
  811. point.linkedBasePointId = pointInfo.linkedBasePointId;
  812. point.linkedTextId = pointInfo.linkedTextId;
  813. return point;
  814. }
  815. setLineInfo(lineInfo) {
  816. let line = dataService.getLine(lineInfo.vectorId);
  817. line.startId = lineInfo.start;
  818. line.endId = lineInfo.end;
  819. line.category = lineInfo.category;
  820. line.locationMode = lineInfo.locationMode;
  821. line.linkedFixPointId = lineInfo.linkedFixPointId;
  822. line.linkedBasePointId = lineInfo.linkedBasePointId;
  823. line.value = lineInfo.value;
  824. line.style = lineInfo.style;
  825. line.weight = lineInfo.weight;
  826. line.zebraCrossStyle = lineInfo.zebraCrossStyle
  827. return line;
  828. }
  829. setCurvePointInfo(curvePointInfo) {
  830. let curvePoint = dataService.getCurvePoint(curvePointInfo.vectorId);
  831. mathUtil.clonePoint(curvePoint, curvePointInfo.position);
  832. curvePoint.parent = curvePointInfo.parent;
  833. curvePoint.index = curvePointInfo.index;
  834. return curvePoint;
  835. }
  836. setCurveLineInfo(curveLineInfo) {
  837. let curveLine = dataService.getCurveLine(curveLineInfo.vectorId);
  838. curveLine.startId = curveLineInfo.startId;
  839. curveLine.endId = curveLineInfo.endId;
  840. curveLine.points = [];
  841. for (let i = 0; i < curveLineInfo.points.length; ++i) {
  842. curveLine.points[i] = dataService.getCurvePoint(
  843. curveLineInfo.points[i].vectorId
  844. );
  845. }
  846. curveLine.curves = JSON.parse(JSON.stringify(curveLineInfo.curves));
  847. return curveLine;
  848. }
  849. setCircleInfo(circleInfo) {
  850. let circle = dataService.getCircle(circleInfo.vectorId);
  851. circle.center = circleInfo.center;
  852. circle.radius = circleInfo.radius;
  853. circle.color = circleInfo.color;
  854. circle.radiusX = circleInfo.radiusX;
  855. circle.radiusY = circleInfo.radiusY;
  856. circle.points = circleInfo.points;
  857. return circle;
  858. }
  859. setTextInfo(textInfo) {
  860. let text = dataService.getText(textInfo.vectorId);
  861. text.vectorId = textInfo.vectorId;
  862. text.center = JSON.parse(JSON.stringify(textInfo.center));
  863. text.value = textInfo.value;
  864. text.angle = textInfo.angle;
  865. text.fontSize = textInfo.fontSize;
  866. text.color = textInfo.color;
  867. text.linkedPointId = textInfo.linkedPointId;
  868. }
  869. setMagnifierInfo(magnifierInfo) {
  870. let magnifier = dataService.getMagnifier(magnifierInfo.vectorId);
  871. magnifier.vectorId = magnifierInfo.vectorId;
  872. magnifier.position = JSON.parse(JSON.stringify(magnifierInfo.position));
  873. magnifier.popPosition = JSON.parse(
  874. JSON.stringify(magnifierInfo.popPosition)
  875. );
  876. magnifier.photoUrl = magnifierInfo.photoUrl;
  877. }
  878. setSVGInfo(svgInfo) {
  879. let svg = dataService.getSVG(svgInfo.vectorId);
  880. svg.vectorId = svgInfo.vectorId;
  881. svg.center = JSON.parse(JSON.stringify(svgInfo.center));
  882. svg.points = JSON.parse(JSON.stringify(svgInfo.points));
  883. svg.type = svgInfo.type;
  884. svg.angle = svgInfo.angle;
  885. svg.scale = svgInfo.scale;
  886. }
  887. setRoadPointInfo(roadPointInfo) {
  888. let roadPoint = dataService.getRoadPoint(roadPointInfo.vectorId);
  889. roadPoint.vectorId = roadPointInfo.vectorId;
  890. mathUtil.clonePoint(roadPoint, roadPointInfo.position);
  891. roadPoint.parent = JSON.parse(JSON.stringify(roadPointInfo.parent));
  892. }
  893. setRoadEdgeInfo(roadEdgeInfo) {
  894. let roadEdge = dataService.getRoadEdge(roadEdgeInfo.vectorId);
  895. roadEdge.vectorId = roadEdgeInfo.vectorId;
  896. mathUtil.clonePoint(roadEdge.start, roadEdgeInfo.start);
  897. mathUtil.clonePoint(roadEdge.end, roadEdgeInfo.end);
  898. roadEdge.type = roadEdgeInfo.type;
  899. roadEdge.style = roadEdgeInfo.style;
  900. roadEdge.roadSide = roadEdgeInfo.roadSide;
  901. }
  902. setRoadInfo(roadInfo) {
  903. let road = dataService.getRoad(roadInfo.vectorId);
  904. road.vectorId = roadInfo.vectorId;
  905. road.startId = roadInfo.startId;
  906. road.endId = roadInfo.endId;
  907. road.leftEdgeId = roadInfo.leftEdgeId;
  908. road.rightEdgeId = roadInfo.rightEdgeId;
  909. road.way = roadInfo.way;
  910. road.roadWidthTipsPos = roadInfo.roadWidthTipsPos;
  911. if (road.way == Constant.oneWay) {
  912. road.singleRoadWidth = roadInfo.singleRoadWidth;
  913. road.singleRoadDrivewayCount = roadInfo.singleRoadDrivewayCount;
  914. road.singleLanes = JSON.parse(JSON.stringify(roadInfo.singleLanes));
  915. } else if (road.way == Constant.twoWay) {
  916. road.leftWidth = roadInfo.leftWidth;
  917. road.rightWidth = roadInfo.rightWidth;
  918. road.leftDrivewayCount = roadInfo.leftDrivewayCount;
  919. road.rightDrivewayCount = roadInfo.rightDrivewayCount;
  920. road.midDivide = JSON.parse(JSON.stringify(roadInfo.midDivide));
  921. road.leftLanes = JSON.parse(JSON.stringify(roadInfo.leftLanes));
  922. road.rightLanes = JSON.parse(JSON.stringify(roadInfo.rightLanes));
  923. }
  924. }
  925. setCurveRoadPointInfo(curveRoadPointInfo) {
  926. let curveRoadPoint = dataService.getCurveRoadPoint(
  927. curveRoadPointInfo.vectorId
  928. );
  929. curveRoadPoint.vectorId = curveRoadPointInfo.vectorId;
  930. mathUtil.clonePoint(curveRoadPoint, curveRoadPointInfo.position);
  931. curveRoadPoint.parent = JSON.parse(
  932. JSON.stringify(curveRoadPointInfo.parent)
  933. );
  934. curveRoadPoint.index = curveRoadPointInfo.index;
  935. }
  936. setCurveRoadEdgeInfo(curveRoadEdgeInfo) {
  937. console.error(1)
  938. let curveRoadEdge = dataService.getCurveRoadEdge(
  939. curveRoadEdgeInfo.vectorId
  940. );
  941. curveRoadEdge.vectorId = curveRoadEdgeInfo.vectorId;
  942. mathUtil.clonePoint(curveRoadEdge.start, curveRoadEdgeInfo.start);
  943. mathUtil.clonePoint(curveRoadEdge.end, curveRoadEdgeInfo.end);
  944. curveRoadEdge.points = []
  945. for (let i = 0; i < curveRoadEdgeInfo.points.length; ++i) {
  946. curveRoadEdge.points[i] = {};
  947. mathUtil.clonePoint(curveRoadEdge.points[i], curveRoadEdgeInfo.points[i]);
  948. }
  949. curveRoadEdge.curves = JSON.parse(JSON.stringify(curveRoadEdgeInfo.curves));
  950. curveRoadEdge.type = curveRoadEdgeInfo.type;
  951. curveRoadEdge.style = curveRoadEdgeInfo.style;
  952. curveRoadEdge.weight = curveRoadEdgeInfo.weight;
  953. // curveRoadEdge.roadSide == curveRoadEdgeInfo.roadSide
  954. }
  955. setCurveRoadInfo(curveRoadInfo) {
  956. let curveRoad = dataService.getCurveRoad(curveRoadInfo.vectorId);
  957. curveRoad.vectorId = curveRoadInfo.vectorId;
  958. curveRoad.startId = curveRoadInfo.startId;
  959. curveRoad.endId = curveRoadInfo.endId;
  960. curveRoad.leftEdgeId = curveRoadInfo.leftEdgeId;
  961. curveRoad.rightEdgeId = curveRoadInfo.rightEdgeId;
  962. curveRoad.points=[]
  963. for (let i = 0; i < curveRoadInfo.points.length; ++i) {
  964. curveRoad.points[i] = dataService.getCurveRoadPoint(
  965. curveRoadInfo.points[i].vectorId
  966. );
  967. }
  968. // curveRoad.points = JSON.parse(JSON.stringify(curveRoadInfo.points));
  969. curveRoad.curves = JSON.parse(JSON.stringify(curveRoadInfo.curves));
  970. if (curveRoad.way == Constant.oneWay) {
  971. curveRoad.singleCurveRoadWidth = curveRoadInfo.singleCurveRoadWidth;
  972. curveRoad.singleCurveRoadDrivewayCount =
  973. curveRoadInfo.singleCurveRoadDrivewayCount;
  974. curveRoad.singleLanesCurves = JSON.parse(
  975. JSON.stringify(curveRoadInfo.singleLanesCurves)
  976. );
  977. curveRoad.singleLanes = JSON.parse(
  978. JSON.stringify(curveRoadInfo.singleLanes)
  979. );
  980. } else if (curveRoad.way == Constant.twoWay) {
  981. curveRoad.leftWidth = curveRoadInfo.leftWidth;
  982. curveRoad.rightWidth = curveRoadInfo.rightWidth;
  983. curveRoad.leftDrivewayCount = curveRoadInfo.leftDrivewayCount;
  984. curveRoad.rightDrivewayCount = curveRoadInfo.rightDrivewayCount;
  985. curveRoad.midDivide = JSON.parse(JSON.stringify(curveRoadInfo.midDivide));
  986. curveRoad.leftLanesCurves = JSON.parse(
  987. JSON.stringify(curveRoadInfo.leftLanesCurves)
  988. );
  989. curveRoad.rightLanesCurves = JSON.parse(
  990. JSON.stringify(curveRoadInfo.rightLanesCurves)
  991. );
  992. curveRoad.leftLanes = JSON.parse(JSON.stringify(curveRoadInfo.leftLanes));
  993. curveRoad.rightLanes = JSON.parse(
  994. JSON.stringify(curveRoadInfo.rightLanes)
  995. );
  996. }
  997. }
  998. setCrossPointInfo(crossPointInfo) {
  999. let crossPoint = dataService.getCrossPoint3(crossPointInfo.vectorId);
  1000. crossPoint.vectorId = crossPointInfo.vectorId;
  1001. mathUtil.clonePoint(crossPoint, crossPointInfo.position);
  1002. crossPoint.extremePoint = {};
  1003. mathUtil.clonePoint(crossPoint.extremePoint, crossPointInfo.extremePoint);
  1004. crossPoint.edgeInfo1 = JSON.parse(JSON.stringify(crossPointInfo.edgeInfo1));
  1005. crossPoint.edgeInfo2 = JSON.parse(JSON.stringify(crossPointInfo.edgeInfo2));
  1006. crossPoint.curves = JSON.parse(JSON.stringify(crossPointInfo.curves));
  1007. crossPoint.style = crossPointInfo.style;
  1008. crossPoint.weight = crossPointInfo.weight;
  1009. }
  1010. }
  1011. const historyUtil = new HistoryUtil();
  1012. export { historyUtil };