Render.js 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. import VectorType from "../enum/VectorType.js";
  2. import { dataService } from "../Service/DataService.js";
  3. import { elementService } from "../Service/ElementService.js";
  4. import { coordinate } from "../Coordinate.js";
  5. import { draw } from "./Draw.js";
  6. import { listenLayer } from "../ListenLayer.js";
  7. export default class Render {
  8. constructor(layer) {
  9. this.layer = layer;
  10. this.displayPanos = false;
  11. }
  12. //绘制户型
  13. drawGeometry(vector, styleType, flag) {
  14. if (draw.context == null || vector == null) {
  15. return;
  16. }
  17. switch (vector.geoType) {
  18. case VectorType.BackgroundImg:
  19. draw.drawBackGroundImg(vector);
  20. break;
  21. case VectorType.Img:
  22. draw.drawBackGroundImg(vector);
  23. break;
  24. case VectorType.Road:
  25. draw.drawRoad(vector, false);
  26. return;
  27. case VectorType.CurveRoad:
  28. draw.drawCurveRoad(vector, false);
  29. return;
  30. case VectorType.RoadPoint:
  31. draw.drawRoadPoint(vector);
  32. return;
  33. case VectorType.CrossPoint:
  34. draw.drawCrossPoint(vector);
  35. return;
  36. case VectorType.Point:
  37. draw.drawPoint(vector);
  38. break;
  39. case VectorType.Line:
  40. draw.drawLine(vector); //需要修改,有几种情况:测量,校准,基准
  41. break;
  42. case VectorType.Text:
  43. draw.drawText(vector, styleType, flag);
  44. break;
  45. case VectorType.Circle:
  46. draw.drawCircle(vector);
  47. break;
  48. case VectorType.Magnifier:
  49. draw.drawMagnifier(vector);
  50. break;
  51. }
  52. }
  53. //绘制交互的元素
  54. drawElement(vector) {
  55. if (draw.context == null) {
  56. return;
  57. }
  58. switch (vector.geoType) {
  59. case VectorType.Point:
  60. draw.drawPoint(vector);
  61. break;
  62. case VectorType.RoadPoint:
  63. draw.drawPoint(vector);
  64. break;
  65. case VectorType.Line:
  66. draw.drawElementLine(vector); //需要修改,有几种情况:测量,校准,基准
  67. break;
  68. case VectorType.Road:
  69. draw.drawRoad(vector, true);
  70. break;
  71. }
  72. }
  73. redrawElements() {
  74. if (elementService.vCheckLines.X && elementService.vCheckLines.X.display) {
  75. this.drawElement(elementService.vCheckLines.X);
  76. }
  77. if (elementService.vCheckLines.Y && elementService.vCheckLines.Y.display) {
  78. this.drawElement(elementService.vCheckLines.Y);
  79. }
  80. if (elementService.point && elementService.point.display) {
  81. this.drawElement(elementService.point);
  82. }
  83. if (elementService.newRoad && elementService.newRoad.display) {
  84. this.drawElement(elementService.newRoad);
  85. }
  86. if (elementService.checkLines.X && elementService.checkLines.X.display) {
  87. this.drawElement(elementService.checkLines.X);
  88. }
  89. if (elementService.checkLines.Y && elementService.checkLines.Y.display) {
  90. this.drawElement(elementService.checkLines.Y);
  91. }
  92. }
  93. autoRedraw() {
  94. // console.log("重绘");
  95. draw.clear();
  96. if (dataService.getGridDisplay()) {
  97. const grid = dataService.getGrid();
  98. draw.drawGrid(
  99. grid.startX,
  100. grid.startY,
  101. coordinate.width,
  102. coordinate.height,
  103. grid.step1,
  104. grid.step2
  105. );
  106. }
  107. this.drawGeometry(dataService.getBackgroundImg());
  108. let roads = dataService.getRoads();
  109. for (let key in roads) {
  110. this.drawGeometry(roads[key]);
  111. }
  112. let roadPoints = dataService.getRoadPoints();
  113. for (let key in roadPoints) {
  114. this.drawGeometry(roadPoints[key]);
  115. }
  116. let curveRoads = dataService.getCurveRoads();
  117. for (let key in curveRoads) {
  118. this.drawGeometry(curveRoads[key]);
  119. }
  120. let crossPoints = dataService.getCrossPoints();
  121. for (let key in crossPoints) {
  122. this.drawGeometry(crossPoints[key]);
  123. }
  124. let points = dataService.getPoints();
  125. for (let key in points) {
  126. this.drawGeometry(points[key]);
  127. }
  128. let lines = dataService.getLines();
  129. for (let key in lines) {
  130. this.drawGeometry(lines[key]);
  131. }
  132. let circles = dataService.getCircles();
  133. for (let key in circles) {
  134. this.drawGeometry(circles[key]);
  135. }
  136. let texts = dataService.getTexts();
  137. for (let key in texts) {
  138. this.drawGeometry(texts[key]);
  139. }
  140. const magnifiers = dataService.getMagnifiers();
  141. for (let magnifiersKey in magnifiers) {
  142. this.drawGeometry(magnifiers[magnifiersKey]);
  143. }
  144. //this.drawGeometry(dataService.getImg());
  145. this.redrawElements();
  146. // if (listenLayer.testStart != null && listenLayer.testEnd != null) {
  147. // draw.drawTestLine(
  148. // listenLayer.testStart,
  149. // listenLayer.testEnd,
  150. // listenLayer.testHit
  151. // );
  152. // }
  153. }
  154. //下载图片
  155. autoRedrawForDownLoadImg() {
  156. draw.clear();
  157. let roads = dataService.getRoads();
  158. for (let key in roads) {
  159. this.drawGeometry(roads[key]);
  160. }
  161. let points = dataService.getRoadPoints();
  162. for (let key in points) {
  163. this.drawGeometry(points[key]);
  164. }
  165. let texts = dataService.getTexts();
  166. for (let key in texts) {
  167. this.drawGeometry(texts[key]);
  168. }
  169. }
  170. clear() {
  171. draw.clear();
  172. }
  173. getContext() {
  174. return draw.context;
  175. }
  176. }