bruce-cesium 5.7.9 → 5.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (230) hide show
  1. package/dist/bruce-cesium.es5.js +32262 -0
  2. package/dist/bruce-cesium.es5.js.map +1 -0
  3. package/dist/bruce-cesium.umd.js +32186 -0
  4. package/dist/bruce-cesium.umd.js.map +1 -0
  5. package/dist/lib/bruce-cesium.js +76 -0
  6. package/dist/lib/bruce-cesium.js.map +1 -0
  7. package/dist/lib/internal/cesium-utils.js +109 -0
  8. package/dist/lib/internal/cesium-utils.js.map +1 -0
  9. package/dist/lib/internal/js-utils.js +22 -0
  10. package/dist/lib/internal/js-utils.js.map +1 -0
  11. package/dist/lib/internal/limited-log.js +17 -0
  12. package/dist/lib/internal/limited-log.js.map +1 -0
  13. package/dist/lib/rendering/cesium-animated-in-out.js +166 -0
  14. package/dist/lib/rendering/cesium-animated-in-out.js.map +1 -0
  15. package/dist/lib/rendering/cesium-animated-property.js +1111 -0
  16. package/dist/lib/rendering/cesium-animated-property.js.map +1 -0
  17. package/dist/lib/rendering/entity-gatherer.js +327 -0
  18. package/dist/lib/rendering/entity-gatherer.js.map +1 -0
  19. package/dist/lib/rendering/entity-render-engine-model3d.js +689 -0
  20. package/dist/lib/rendering/entity-render-engine-model3d.js.map +1 -0
  21. package/dist/lib/rendering/entity-render-engine-point.js +984 -0
  22. package/dist/lib/rendering/entity-render-engine-point.js.map +1 -0
  23. package/dist/lib/rendering/entity-render-engine-polygon.js +669 -0
  24. package/dist/lib/rendering/entity-render-engine-polygon.js.map +1 -0
  25. package/dist/lib/rendering/entity-render-engine-polyline.js +415 -0
  26. package/dist/lib/rendering/entity-render-engine-polyline.js.map +1 -0
  27. package/dist/lib/rendering/entity-render-engine.js +442 -0
  28. package/dist/lib/rendering/entity-render-engine.js.map +1 -0
  29. package/dist/lib/rendering/getters/batched-data-getter.js +91 -0
  30. package/dist/lib/rendering/getters/batched-data-getter.js.map +1 -0
  31. package/dist/lib/rendering/getters/entity-filter-getter.js +634 -0
  32. package/dist/lib/rendering/getters/entity-filter-getter.js.map +1 -0
  33. package/dist/lib/rendering/getters/entity-globe.js +172 -0
  34. package/dist/lib/rendering/getters/entity-globe.js.map +1 -0
  35. package/dist/lib/rendering/menu-item-creator.js +354 -0
  36. package/dist/lib/rendering/menu-item-creator.js.map +1 -0
  37. package/dist/lib/rendering/menu-item-manager.js +464 -0
  38. package/dist/lib/rendering/menu-item-manager.js.map +1 -0
  39. package/dist/lib/rendering/relation-render-engine.js +235 -0
  40. package/dist/lib/rendering/relation-render-engine.js.map +1 -0
  41. package/dist/lib/rendering/render-managers/common/cesium-parabola.js +368 -0
  42. package/dist/lib/rendering/render-managers/common/cesium-parabola.js.map +1 -0
  43. package/dist/lib/rendering/render-managers/common/entity-label.js +703 -0
  44. package/dist/lib/rendering/render-managers/common/entity-label.js.map +1 -0
  45. package/dist/lib/rendering/render-managers/common/point-clustering.js +826 -0
  46. package/dist/lib/rendering/render-managers/common/point-clustering.js.map +1 -0
  47. package/dist/lib/rendering/render-managers/common/shared-getters.js +187 -0
  48. package/dist/lib/rendering/render-managers/common/shared-getters.js.map +1 -0
  49. package/dist/lib/rendering/render-managers/data-source/data-source-static-csv-manager.js +668 -0
  50. package/dist/lib/rendering/render-managers/data-source/data-source-static-csv-manager.js.map +1 -0
  51. package/dist/lib/rendering/render-managers/data-source/data-source-static-kml-manager.js +92 -0
  52. package/dist/lib/rendering/render-managers/data-source/data-source-static-kml-manager.js.map +1 -0
  53. package/dist/lib/rendering/render-managers/entities/entities-datalab-render-manager.js +143 -0
  54. package/dist/lib/rendering/render-managers/entities/entities-datalab-render-manager.js.map +1 -0
  55. package/dist/lib/rendering/render-managers/entities/entities-ids-render-manager.js +510 -0
  56. package/dist/lib/rendering/render-managers/entities/entities-ids-render-manager.js.map +1 -0
  57. package/dist/lib/rendering/render-managers/entities/entities-loaded-render-manager.js +717 -0
  58. package/dist/lib/rendering/render-managers/entities/entities-loaded-render-manager.js.map +1 -0
  59. package/dist/lib/rendering/render-managers/entities/entities-render-manager.js +999 -0
  60. package/dist/lib/rendering/render-managers/entities/entities-render-manager.js.map +1 -0
  61. package/dist/lib/rendering/render-managers/entities/entity-render-manager.js +186 -0
  62. package/dist/lib/rendering/render-managers/entities/entity-render-manager.js.map +1 -0
  63. package/dist/lib/rendering/render-managers/other/assembly-render-manager.js +226 -0
  64. package/dist/lib/rendering/render-managers/other/assembly-render-manager.js.map +1 -0
  65. package/dist/lib/rendering/render-managers/other/google-search-render-manager.js +430 -0
  66. package/dist/lib/rendering/render-managers/other/google-search-render-manager.js.map +1 -0
  67. package/dist/lib/rendering/render-managers/other/legacy-relations-render-manager.js +290 -0
  68. package/dist/lib/rendering/render-managers/other/legacy-relations-render-manager.js.map +1 -0
  69. package/dist/lib/rendering/render-managers/other/relations-render-manager.js +401 -0
  70. package/dist/lib/rendering/render-managers/other/relations-render-manager.js.map +1 -0
  71. package/dist/lib/rendering/render-managers/render-manager.js +276 -0
  72. package/dist/lib/rendering/render-managers/render-manager.js.map +1 -0
  73. package/dist/lib/rendering/render-managers/tilesets/tileset-arb-render-manager.js +356 -0
  74. package/dist/lib/rendering/render-managers/tilesets/tileset-arb-render-manager.js.map +1 -0
  75. package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js +861 -0
  76. package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js.map +1 -0
  77. package/dist/lib/rendering/render-managers/tilesets/tileset-entities-render-manager.js +279 -0
  78. package/dist/lib/rendering/render-managers/tilesets/tileset-entities-render-manager.js.map +1 -0
  79. package/dist/lib/rendering/render-managers/tilesets/tileset-google-photos-render-manager.js +104 -0
  80. package/dist/lib/rendering/render-managers/tilesets/tileset-google-photos-render-manager.js.map +1 -0
  81. package/dist/lib/rendering/render-managers/tilesets/tileset-i3s-render-manager.js +81 -0
  82. package/dist/lib/rendering/render-managers/tilesets/tileset-i3s-render-manager.js.map +1 -0
  83. package/dist/lib/rendering/render-managers/tilesets/tileset-osm-render-manager.js +378 -0
  84. package/dist/lib/rendering/render-managers/tilesets/tileset-osm-render-manager.js.map +1 -0
  85. package/dist/lib/rendering/render-managers/tilesets/tileset-pointcloud-render-manager.js +140 -0
  86. package/dist/lib/rendering/render-managers/tilesets/tileset-pointcloud-render-manager.js.map +1 -0
  87. package/dist/lib/rendering/tile-render-engine.js +1328 -0
  88. package/dist/lib/rendering/tile-render-engine.js.map +1 -0
  89. package/dist/lib/rendering/tileset-render-engine.js +588 -0
  90. package/dist/lib/rendering/tileset-render-engine.js.map +1 -0
  91. package/dist/lib/rendering/tileset-styler.js +590 -0
  92. package/dist/lib/rendering/tileset-styler.js.map +1 -0
  93. package/dist/lib/rendering/view-render-engine.js +1004 -0
  94. package/dist/lib/rendering/view-render-engine.js.map +1 -0
  95. package/dist/lib/rendering/visual-register-culler.js +676 -0
  96. package/dist/lib/rendering/visual-register-culler.js.map +1 -0
  97. package/dist/lib/rendering/visuals-register.js +1695 -0
  98. package/dist/lib/rendering/visuals-register.js.map +1 -0
  99. package/dist/lib/utils/cesium-entity-styler.js +914 -0
  100. package/dist/lib/utils/cesium-entity-styler.js.map +1 -0
  101. package/dist/lib/utils/drawing-utils.js +308 -0
  102. package/dist/lib/utils/drawing-utils.js.map +1 -0
  103. package/dist/lib/utils/entity-utils.js +1382 -0
  104. package/dist/lib/utils/entity-utils.js.map +1 -0
  105. package/dist/lib/utils/measure-utils.js +73 -0
  106. package/dist/lib/utils/measure-utils.js.map +1 -0
  107. package/dist/lib/utils/simplify-geometry.js +323 -0
  108. package/dist/lib/utils/simplify-geometry.js.map +1 -0
  109. package/dist/lib/utils/view-utils.js +392 -0
  110. package/dist/lib/utils/view-utils.js.map +1 -0
  111. package/dist/lib/viewer/cesium-view-monitor.js +393 -0
  112. package/dist/lib/viewer/cesium-view-monitor.js.map +1 -0
  113. package/dist/lib/viewer/viewer-event-tracker.js +70 -0
  114. package/dist/lib/viewer/viewer-event-tracker.js.map +1 -0
  115. package/dist/lib/viewer/viewer-utils.js +310 -0
  116. package/dist/lib/viewer/viewer-utils.js.map +1 -0
  117. package/dist/lib/widgets/common/draw-3d-polygon.js +458 -0
  118. package/dist/lib/widgets/common/draw-3d-polygon.js.map +1 -0
  119. package/dist/lib/widgets/common/draw-3d-polyline.js +415 -0
  120. package/dist/lib/widgets/common/draw-3d-polyline.js.map +1 -0
  121. package/dist/lib/widgets/common/measure-creator.js +468 -0
  122. package/dist/lib/widgets/common/measure-creator.js.map +1 -0
  123. package/dist/lib/widgets/common/walkthrough.js +336 -0
  124. package/dist/lib/widgets/common/walkthrough.js.map +1 -0
  125. package/dist/lib/widgets/controls-view-bar/widget-control-view-bar-fullscreen.js +36 -0
  126. package/dist/lib/widgets/controls-view-bar/widget-control-view-bar-fullscreen.js.map +1 -0
  127. package/dist/lib/widgets/controls-view-bar/widget-control-view-bar-search.js +437 -0
  128. package/dist/lib/widgets/controls-view-bar/widget-control-view-bar-search.js.map +1 -0
  129. package/dist/lib/widgets/controls-view-bar/widget-control-view-bar.js +38 -0
  130. package/dist/lib/widgets/controls-view-bar/widget-control-view-bar.js.map +1 -0
  131. package/dist/lib/widgets/tabs-left-panel/widget-left-panel-tab-bookmarks.js +219 -0
  132. package/dist/lib/widgets/tabs-left-panel/widget-left-panel-tab-bookmarks.js.map +1 -0
  133. package/dist/lib/widgets/tabs-left-panel/widget-left-panel-tab-user.js +304 -0
  134. package/dist/lib/widgets/tabs-left-panel/widget-left-panel-tab-user.js.map +1 -0
  135. package/dist/lib/widgets/tabs-left-panel/widget-left-panel-tab.js +29 -0
  136. package/dist/lib/widgets/tabs-left-panel/widget-left-panel-tab.js.map +1 -0
  137. package/dist/lib/widgets/widget-bookmarks.js +497 -0
  138. package/dist/lib/widgets/widget-bookmarks.js.map +1 -0
  139. package/dist/lib/widgets/widget-branding.js +165 -0
  140. package/dist/lib/widgets/widget-branding.js.map +1 -0
  141. package/dist/lib/widgets/widget-cursorbar.js +1179 -0
  142. package/dist/lib/widgets/widget-cursorbar.js.map +1 -0
  143. package/dist/lib/widgets/widget-embedded-info-view.js +201 -0
  144. package/dist/lib/widgets/widget-embedded-info-view.js.map +1 -0
  145. package/dist/lib/widgets/widget-info-view.js +681 -0
  146. package/dist/lib/widgets/widget-info-view.js.map +1 -0
  147. package/dist/lib/widgets/widget-left-panel.js +548 -0
  148. package/dist/lib/widgets/widget-left-panel.js.map +1 -0
  149. package/dist/lib/widgets/widget-nav-compass.js +469 -0
  150. package/dist/lib/widgets/widget-nav-compass.js.map +1 -0
  151. package/dist/lib/widgets/widget-view-bar.js +284 -0
  152. package/dist/lib/widgets/widget-view-bar.js.map +1 -0
  153. package/dist/lib/widgets/widget.js +66 -0
  154. package/dist/lib/widgets/widget.js.map +1 -0
  155. package/dist/types/bruce-cesium.d.ts +58 -0
  156. package/dist/types/internal/cesium-utils.d.ts +23 -0
  157. package/dist/types/internal/js-utils.d.ts +8 -0
  158. package/dist/types/internal/limited-log.d.ts +6 -0
  159. package/dist/types/rendering/cesium-animated-in-out.d.ts +12 -0
  160. package/dist/types/rendering/cesium-animated-property.d.ts +245 -0
  161. package/dist/types/rendering/entity-gatherer.d.ts +36 -0
  162. package/dist/types/rendering/entity-render-engine-model3d.d.ts +56 -0
  163. package/dist/types/rendering/entity-render-engine-point.d.ts +73 -0
  164. package/dist/types/rendering/entity-render-engine-polygon.d.ts +26 -0
  165. package/dist/types/rendering/entity-render-engine-polyline.d.ts +47 -0
  166. package/dist/types/rendering/entity-render-engine.d.ts +108 -0
  167. package/dist/types/rendering/getters/batched-data-getter.d.ts +28 -0
  168. package/dist/types/rendering/getters/entity-filter-getter.d.ts +104 -0
  169. package/dist/types/rendering/getters/entity-globe.d.ts +21 -0
  170. package/dist/types/rendering/menu-item-creator.d.ts +53 -0
  171. package/dist/types/rendering/menu-item-manager.d.ts +85 -0
  172. package/dist/types/rendering/relation-render-engine.d.ts +32 -0
  173. package/dist/types/rendering/render-managers/common/cesium-parabola.d.ts +39 -0
  174. package/dist/types/rendering/render-managers/common/entity-label.d.ts +82 -0
  175. package/dist/types/rendering/render-managers/common/point-clustering.d.ts +91 -0
  176. package/dist/types/rendering/render-managers/common/shared-getters.d.ts +41 -0
  177. package/dist/types/rendering/render-managers/data-source/data-source-static-csv-manager.d.ts +41 -0
  178. package/dist/types/rendering/render-managers/data-source/data-source-static-kml-manager.d.ts +25 -0
  179. package/dist/types/rendering/render-managers/entities/entities-datalab-render-manager.d.ts +31 -0
  180. package/dist/types/rendering/render-managers/entities/entities-ids-render-manager.d.ts +76 -0
  181. package/dist/types/rendering/render-managers/entities/entities-loaded-render-manager.d.ts +90 -0
  182. package/dist/types/rendering/render-managers/entities/entities-render-manager.d.ts +90 -0
  183. package/dist/types/rendering/render-managers/entities/entity-render-manager.d.ts +42 -0
  184. package/dist/types/rendering/render-managers/other/assembly-render-manager.d.ts +38 -0
  185. package/dist/types/rendering/render-managers/other/google-search-render-manager.d.ts +45 -0
  186. package/dist/types/rendering/render-managers/other/legacy-relations-render-manager.d.ts +60 -0
  187. package/dist/types/rendering/render-managers/other/relations-render-manager.d.ts +53 -0
  188. package/dist/types/rendering/render-managers/render-manager.d.ts +30 -0
  189. package/dist/types/rendering/render-managers/tilesets/tileset-arb-render-manager.d.ts +37 -0
  190. package/dist/types/rendering/render-managers/tilesets/tileset-cad-render-manager.d.ts +86 -0
  191. package/dist/types/rendering/render-managers/tilesets/tileset-entities-render-manager.d.ts +41 -0
  192. package/dist/types/rendering/render-managers/tilesets/tileset-google-photos-render-manager.d.ts +26 -0
  193. package/dist/types/rendering/render-managers/tilesets/tileset-i3s-render-manager.d.ts +25 -0
  194. package/dist/types/rendering/render-managers/tilesets/tileset-osm-render-manager.d.ts +48 -0
  195. package/dist/types/rendering/render-managers/tilesets/tileset-pointcloud-render-manager.d.ts +27 -0
  196. package/dist/types/rendering/tile-render-engine.d.ts +80 -0
  197. package/dist/types/rendering/tileset-render-engine.d.ts +99 -0
  198. package/dist/types/rendering/tileset-styler.d.ts +86 -0
  199. package/dist/types/rendering/view-render-engine.d.ts +32 -0
  200. package/dist/types/rendering/visual-register-culler.d.ts +18 -0
  201. package/dist/types/rendering/visuals-register.d.ts +351 -0
  202. package/dist/types/utils/cesium-entity-styler.d.ts +103 -0
  203. package/dist/types/utils/drawing-utils.d.ts +59 -0
  204. package/dist/types/utils/entity-utils.d.ts +133 -0
  205. package/dist/types/utils/measure-utils.d.ts +20 -0
  206. package/dist/types/utils/simplify-geometry.d.ts +19 -0
  207. package/dist/types/utils/view-utils.d.ts +101 -0
  208. package/dist/types/viewer/cesium-view-monitor.d.ts +35 -0
  209. package/dist/types/viewer/viewer-event-tracker.d.ts +47 -0
  210. package/dist/types/viewer/viewer-utils.d.ts +88 -0
  211. package/dist/types/widgets/common/draw-3d-polygon.d.ts +62 -0
  212. package/dist/types/widgets/common/draw-3d-polyline.d.ts +50 -0
  213. package/dist/types/widgets/common/measure-creator.d.ts +60 -0
  214. package/dist/types/widgets/common/walkthrough.d.ts +37 -0
  215. package/dist/types/widgets/controls-view-bar/widget-control-view-bar-fullscreen.d.ts +10 -0
  216. package/dist/types/widgets/controls-view-bar/widget-control-view-bar-search.d.ts +18 -0
  217. package/dist/types/widgets/controls-view-bar/widget-control-view-bar.d.ts +23 -0
  218. package/dist/types/widgets/tabs-left-panel/widget-left-panel-tab-bookmarks.d.ts +11 -0
  219. package/dist/types/widgets/tabs-left-panel/widget-left-panel-tab-user.d.ts +24 -0
  220. package/dist/types/widgets/tabs-left-panel/widget-left-panel-tab.d.ts +17 -0
  221. package/dist/types/widgets/widget-bookmarks.d.ts +40 -0
  222. package/dist/types/widgets/widget-branding.d.ts +15 -0
  223. package/dist/types/widgets/widget-cursorbar.d.ts +48 -0
  224. package/dist/types/widgets/widget-embedded-info-view.d.ts +13 -0
  225. package/dist/types/widgets/widget-info-view.d.ts +21 -0
  226. package/dist/types/widgets/widget-left-panel.d.ts +73 -0
  227. package/dist/types/widgets/widget-nav-compass.d.ts +27 -0
  228. package/dist/types/widgets/widget-view-bar.d.ts +37 -0
  229. package/dist/types/widgets/widget.d.ts +29 -0
  230. package/package.json +1 -1
@@ -0,0 +1,468 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MeasureCreator = void 0;
4
+ const cesium_1 = require("cesium");
5
+ const Cesium = require("cesium");
6
+ const bruce_models_1 = require("bruce-models");
7
+ const draw_3d_polyline_1 = require("./draw-3d-polyline");
8
+ const draw_3d_polygon_1 = require("./draw-3d-polygon");
9
+ const drawing_utils_1 = require("../../utils/drawing-utils");
10
+ const measure_utils_1 = require("../../utils/measure-utils");
11
+ const MARKER_ICON_SVG = `
12
+ <svg width="20" height="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
13
+ <path d="M11.2292 21.5965C5.55352 13.3684 4.5 12.5239 4.5 9.5C4.5 5.35785 7.85785 2 12 2C16.1421 2 19.5 5.35785 19.5 9.5C19.5 12.5239 18.4465 13.3684 12.7708 21.5965C12.3983 22.1345 11.6016 22.1345 11.2292 21.5965ZM12 12.625C13.7259 12.625 15.125 11.2259 15.125 9.5C15.125 7.7741 13.7259 6.375 12 6.375C10.2741 6.375 8.875 7.7741 8.875 9.5C8.875 11.2259 10.2741 12.625 12 12.625Z" fill="black"/>
14
+ </svg>
15
+ `;
16
+ const CLOSE_ICON_SVG = `
17
+ <svg width="15" height="15" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
18
+ <path d="M15.7909 12L21.4767 6.3142C22.1744 5.61648 22.1744 4.48523 21.4767 3.78693L20.2131 2.5233C19.5153 1.82557 18.3841 1.82557 17.6858 2.5233L12 8.20909L6.3142 2.5233C5.61648 1.82557 4.48523 1.82557 3.78693 2.5233L2.5233 3.78693C1.82557 4.48466 1.82557 5.61591 2.5233 6.3142L8.20909 12L2.5233 17.6858C1.82557 18.3835 1.82557 19.5148 2.5233 20.2131L3.78693 21.4767C4.48466 22.1744 5.61648 22.1744 6.3142 21.4767L12 15.7909L17.6858 21.4767C18.3835 22.1744 19.5153 22.1744 20.2131 21.4767L21.4767 20.2131C22.1744 19.5153 22.1744 18.3841 21.4767 17.6858L15.7909 12Z" fill="black"/>
19
+ </svg>
20
+ `;
21
+ function generateEle() {
22
+ const ele = document.createElement("div");
23
+ ele.setAttribute("style", `
24
+ left: 0px;
25
+ top: 0px;
26
+ position: absolute;
27
+ z-index: 3;
28
+ border-radius: 18px;
29
+ background-color: white;
30
+ display: flex;
31
+ align-items: center;
32
+ padding: 3px 4px;
33
+ padding-right: 10px;
34
+ font-size: 15px;
35
+ pointer-events: none;
36
+ box-shadow: 0px 0px 1px rgba(18, 22, 25, 0.24), 0px 18px 36px -4px rgba(18, 22, 25, 0.6);
37
+ color: black;
38
+ `);
39
+ const icon = document.createElement("div");
40
+ icon.innerHTML = MARKER_ICON_SVG;
41
+ icon.setAttribute("style", `
42
+ margin-right: 2px;
43
+ height: 30px;
44
+ width: 30px;
45
+ display: flex;
46
+ align-items: center;
47
+ justify-content: center;
48
+ `);
49
+ ele.appendChild(icon);
50
+ const span = document.createElement("span");
51
+ span.setAttribute("style", `
52
+ flex-grow: 1;
53
+ flex-shrink: 1;
54
+ height: 100%;
55
+ `);
56
+ span.innerText = "";
57
+ ele.appendChild(span);
58
+ return ele;
59
+ }
60
+ const FILL_COLOR = "#33B1FF";
61
+ const POINT_SIZE = 10;
62
+ /**
63
+ * Metric to imperial "nice looking" string.
64
+ * @param length
65
+ * @returns
66
+ */
67
+ function metricToImperialLenStr(length) {
68
+ // Convert meters to feet.
69
+ if (length < 500) {
70
+ return `${bruce_models_1.MathUtils.Round(length * 3.2808, 2).toLocaleString()}ft`;
71
+ }
72
+ // Convert meters to miles.
73
+ else {
74
+ return `${bruce_models_1.MathUtils.Round(length * 0.00062137, 4).toLocaleString()}mi`;
75
+ }
76
+ }
77
+ /**
78
+ * Metric to imperial "nice looking" string.
79
+ * @param area in meters squared.
80
+ * @returns
81
+ */
82
+ function metricToImperialAreaStr(area) {
83
+ // Convert meters squared to feet squared.
84
+ if (area < 250000) {
85
+ return `${bruce_models_1.MathUtils.Round(area / 0.09290304, 2).toLocaleString()}ft²`;
86
+ }
87
+ // Convert meters squared to miles squared.
88
+ else {
89
+ return `${bruce_models_1.MathUtils.Round((area / 2589988.11), 4).toLocaleString()}mi²`;
90
+ }
91
+ }
92
+ /**
93
+ * Metric "nice looking" string.
94
+ * @param length
95
+ */
96
+ function metricLenStr(length) {
97
+ if (length < 1000) {
98
+ return `${bruce_models_1.MathUtils.Round(length, 2).toLocaleString()}m`;
99
+ }
100
+ else {
101
+ return `${bruce_models_1.MathUtils.Round(length / 1000, 2).toLocaleString()}km`;
102
+ }
103
+ }
104
+ /**
105
+ * Metric "nice looking" string.
106
+ * @param length
107
+ */
108
+ function metricAreaStr(area) {
109
+ if (area < 1000000) {
110
+ return `${bruce_models_1.MathUtils.Round(area, 2).toLocaleString()}m²`;
111
+ }
112
+ else {
113
+ return `${bruce_models_1.MathUtils.Round(area / 1000000, 2).toLocaleString()}km²`;
114
+ }
115
+ }
116
+ /**
117
+ * DO NOT USE THIS CLASS DIRECTLY.
118
+ * Use only through the cursor-bar widget as this is at high risk of change.
119
+ */
120
+ var MeasureCreator;
121
+ (function (MeasureCreator) {
122
+ class Point {
123
+ constructor(viewer, isMetric) {
124
+ this.viewer = viewer;
125
+ this.isMetric = isMetric;
126
+ }
127
+ Start() {
128
+ var _a, _b;
129
+ this.Stop();
130
+ const updateMarker = () => {
131
+ if (!this.marker) {
132
+ this.generateMarker();
133
+ }
134
+ const pos2d = this.viewer.scene.cartesianToCanvasCoordinates(this.pos3d);
135
+ if (bruce_models_1.Cartes.ValidateCartes2(pos2d) && this.element) {
136
+ this.element.style.left = `${pos2d.x + 10}px`;
137
+ this.element.style.top = `${pos2d.y - 20}px`;
138
+ }
139
+ };
140
+ this.renderEventRemoval = (_b = (_a = this.viewer.scene) === null || _a === void 0 ? void 0 : _a.postUpdate) === null || _b === void 0 ? void 0 : _b.addEventListener(() => {
141
+ if (bruce_models_1.Cartes.ValidateCartes3(this.pos3d)) {
142
+ updateMarker();
143
+ }
144
+ });
145
+ const processPos2d = (pos2d) => {
146
+ if (bruce_models_1.Cartes.ValidateCartes2(pos2d)) {
147
+ const pos3d = drawing_utils_1.DrawingUtils.GetAccuratePosition(this.viewer, pos2d);
148
+ if (bruce_models_1.Cartes.ValidateCartes3(pos3d)) {
149
+ this.pos3d = pos3d;
150
+ const carto = cesium_1.Cartographic.fromCartesian(this.pos3d);
151
+ const lat = Cesium.Math.toDegrees(carto.latitude);
152
+ const lng = Cesium.Math.toDegrees(carto.longitude);
153
+ let heightStr = carto.height.toFixed(2);
154
+ if (!this.isMetric) {
155
+ heightStr = metricToImperialLenStr(carto.height);
156
+ }
157
+ this.updateText(`${lat.toFixed(6)}, ${lng.toFixed(6)}, ${heightStr}`);
158
+ updateMarker();
159
+ }
160
+ }
161
+ };
162
+ this.events = new Cesium.ScreenSpaceEventHandler(this.viewer.scene.canvas);
163
+ this.events.setInputAction((e) => {
164
+ const pos2d = e.endPosition;
165
+ processPos2d(pos2d);
166
+ }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
167
+ this.events.setInputAction((e) => {
168
+ var _a;
169
+ console.log(e);
170
+ processPos2d(e.position);
171
+ (_a = this.events) === null || _a === void 0 ? void 0 : _a.destroy();
172
+ this.events = null;
173
+ if (this.element) {
174
+ this.element.style.removeProperty("pointer-events");
175
+ this.appendCloseButton();
176
+ }
177
+ }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
178
+ }
179
+ Stop() {
180
+ var _a, _b;
181
+ this.pos3d = null;
182
+ if (this.element && this.element.parentElement) {
183
+ this.element.remove();
184
+ }
185
+ this.element = null;
186
+ if (this.marker && this.viewer.entities.contains(this.marker)) {
187
+ this.viewer.entities.remove(this.marker);
188
+ }
189
+ this.marker = null;
190
+ (_a = this.renderEventRemoval) === null || _a === void 0 ? void 0 : _a.call(this);
191
+ this.renderEventRemoval = null;
192
+ (_b = this.events) === null || _b === void 0 ? void 0 : _b.destroy();
193
+ this.events = null;
194
+ }
195
+ updateText(text) {
196
+ if (!this.element) {
197
+ this.generateElement();
198
+ }
199
+ this.element.querySelector("span").innerText = text;
200
+ }
201
+ generateElement() {
202
+ const ele = generateEle();
203
+ this.element = ele;
204
+ this.viewer.canvas.parentElement.appendChild(ele);
205
+ }
206
+ appendCloseButton() {
207
+ const btn = document.createElement("div");
208
+ btn.setAttribute("style", `
209
+ height: 30px;
210
+ width: 30px;
211
+ display: flex;
212
+ align-items: center;
213
+ justify-content: center;
214
+ cursor: pointer;
215
+ margin-left: 5px;
216
+ `);
217
+ btn.setAttribute("title", "Close measurement");
218
+ btn.innerHTML = CLOSE_ICON_SVG;
219
+ btn.addEventListener("click", () => {
220
+ this.Start();
221
+ });
222
+ this.element.appendChild(btn);
223
+ this.element.style.paddingRight = "5px";
224
+ }
225
+ generateMarker() {
226
+ this.marker = this.viewer.entities.add({
227
+ position: new Cesium.CallbackProperty(() => this.pos3d, false),
228
+ point: {
229
+ pixelSize: POINT_SIZE,
230
+ color: Cesium.Color.fromCssColorString(FILL_COLOR),
231
+ outlineColor: Cesium.Color.WHITE,
232
+ outlineWidth: 2
233
+ }
234
+ });
235
+ }
236
+ }
237
+ MeasureCreator.Point = Point;
238
+ class Polyline {
239
+ constructor(viewer, isMetric) {
240
+ this.posses3d = [];
241
+ this.viewer = viewer;
242
+ this.isMetric = isMetric;
243
+ }
244
+ Start() {
245
+ var _a, _b;
246
+ this.Stop();
247
+ this.renderEventRemoval = (_b = (_a = this.viewer.scene) === null || _a === void 0 ? void 0 : _a.postUpdate) === null || _b === void 0 ? void 0 : _b.addEventListener(() => {
248
+ const pos3d = this.posses3d.length > 0 ? this.posses3d[this.posses3d.length - 1] : null;
249
+ if (bruce_models_1.Cartes.ValidateCartes3(pos3d)) {
250
+ const pos2d = this.viewer.scene.cartesianToCanvasCoordinates(pos3d);
251
+ if (bruce_models_1.Cartes.ValidateCartes2(pos2d) && this.element) {
252
+ this.element.style.left = `${pos2d.x + 10}px`;
253
+ this.element.style.top = `${pos2d.y - 20}px`;
254
+ this.element.style.display = "flex";
255
+ }
256
+ }
257
+ });
258
+ this.drawingTool = new draw_3d_polyline_1.Draw3dPolyline({
259
+ viewer: this.viewer,
260
+ onFinish: (posses3d) => {
261
+ var _a;
262
+ this.posses3d = posses3d;
263
+ this.onDone();
264
+ this.drawingTool.Pause();
265
+ (_a = this.onFinish) === null || _a === void 0 ? void 0 : _a.call(this);
266
+ },
267
+ onChange: (posses3d) => {
268
+ this.posses3d = posses3d;
269
+ this.updateText();
270
+ },
271
+ perPositionHeight: true
272
+ });
273
+ this.drawingTool.Start();
274
+ }
275
+ Stop() {
276
+ var _a, _b;
277
+ if (this.element && this.element.parentElement) {
278
+ this.element.remove();
279
+ }
280
+ this.element = null;
281
+ (_a = this.renderEventRemoval) === null || _a === void 0 ? void 0 : _a.call(this);
282
+ this.renderEventRemoval = null;
283
+ this.posses3d = [];
284
+ (_b = this.drawingTool) === null || _b === void 0 ? void 0 : _b.Dispose();
285
+ this.drawingTool = null;
286
+ }
287
+ updateText() {
288
+ let length = 0;
289
+ const posses = [].concat(this.posses3d);
290
+ for (let i = 0; i < posses.length - 1; i++) {
291
+ const pos1 = posses[i];
292
+ const pos2 = posses[i + 1];
293
+ if (bruce_models_1.Cartes.ValidateCartes3(pos1) && bruce_models_1.Cartes.ValidateCartes3(pos2)) {
294
+ length += Cesium.Cartesian3.distance(pos1, pos2);
295
+ }
296
+ }
297
+ if (!length && !this.element) {
298
+ return;
299
+ }
300
+ if (!this.element) {
301
+ this.generateElement();
302
+ }
303
+ let lengthStr;
304
+ if (!this.isMetric) {
305
+ lengthStr = metricToImperialLenStr(length);
306
+ }
307
+ else {
308
+ lengthStr = metricLenStr(length);
309
+ }
310
+ this.element.querySelector("span").innerText = lengthStr;
311
+ }
312
+ generateElement() {
313
+ const ele = generateEle();
314
+ ele.style.display = "none";
315
+ this.element = ele;
316
+ this.viewer.canvas.parentElement.appendChild(ele);
317
+ }
318
+ appendCloseButton() {
319
+ const btn = document.createElement("div");
320
+ btn.setAttribute("style", `
321
+ height: 30px;
322
+ width: 30px;
323
+ display: flex;
324
+ align-items: center;
325
+ justify-content: center;
326
+ cursor: pointer;
327
+ margin-left: 5px;
328
+ font-size: 18px;
329
+ `);
330
+ btn.setAttribute("title", "Close measurement");
331
+ btn.innerHTML = CLOSE_ICON_SVG;
332
+ btn.addEventListener("click", () => {
333
+ this.Start();
334
+ });
335
+ this.element.appendChild(btn);
336
+ this.element.style.paddingRight = "5px";
337
+ }
338
+ onDone() {
339
+ if (this.element) {
340
+ this.element.style.removeProperty("pointer-events");
341
+ this.appendCloseButton();
342
+ }
343
+ this.updateText();
344
+ }
345
+ }
346
+ MeasureCreator.Polyline = Polyline;
347
+ class Polygon {
348
+ constructor(viewer, isMetric, onFinish) {
349
+ this.posses3d = [];
350
+ this.viewer = viewer;
351
+ this.onFinish = onFinish;
352
+ this.isMetric = isMetric;
353
+ }
354
+ Start() {
355
+ var _a, _b;
356
+ this.Stop();
357
+ this.renderEventRemoval = (_b = (_a = this.viewer.scene) === null || _a === void 0 ? void 0 : _a.postUpdate) === null || _b === void 0 ? void 0 : _b.addEventListener(() => {
358
+ const pos3d = this.posses3d.length > 0 ? this.posses3d[this.posses3d.length - 1] : null;
359
+ if (bruce_models_1.Cartes.ValidateCartes3(pos3d)) {
360
+ const pos2d = this.viewer.scene.cartesianToCanvasCoordinates(pos3d);
361
+ if (bruce_models_1.Cartes.ValidateCartes2(pos2d) && this.element) {
362
+ this.element.style.left = `${pos2d.x + 10}px`;
363
+ this.element.style.top = `${pos2d.y - 20}px`;
364
+ this.element.style.display = "flex";
365
+ }
366
+ }
367
+ });
368
+ this.drawingTool = new draw_3d_polygon_1.Draw3dPolygon({
369
+ viewer: this.viewer,
370
+ onChange: (hierarchy) => {
371
+ this.posses3d = hierarchy === null || hierarchy === void 0 ? void 0 : hierarchy.positions;
372
+ this.updateText();
373
+ },
374
+ onFinish: (hierarchy) => {
375
+ var _a;
376
+ this.posses3d = hierarchy === null || hierarchy === void 0 ? void 0 : hierarchy.positions;
377
+ this.drawingTool.Pause();
378
+ this.onDone();
379
+ (_a = this.onFinish) === null || _a === void 0 ? void 0 : _a.call(this);
380
+ },
381
+ perPositionHeight: true
382
+ });
383
+ this.drawingTool.Start();
384
+ }
385
+ Stop() {
386
+ var _a, _b, _c;
387
+ if (this.element && this.element.parentElement) {
388
+ this.element.remove();
389
+ }
390
+ this.element = null;
391
+ (_a = this.renderEventRemoval) === null || _a === void 0 ? void 0 : _a.call(this);
392
+ this.renderEventRemoval = null;
393
+ (_b = this.events) === null || _b === void 0 ? void 0 : _b.destroy();
394
+ this.events = null;
395
+ this.posses3d = [];
396
+ (_c = this.drawingTool) === null || _c === void 0 ? void 0 : _c.Dispose();
397
+ this.drawingTool = null;
398
+ }
399
+ updateText() {
400
+ const posses = [].concat(this.posses3d);
401
+ if (!bruce_models_1.Cartes.IsRing3Closed(posses)) {
402
+ posses.push(posses[0].clone());
403
+ }
404
+ if (posses.length < 3) {
405
+ return;
406
+ }
407
+ const measure = measure_utils_1.MeasureUtils.MeasurePolygon({
408
+ posses: posses
409
+ });
410
+ if (!measure.area && !measure.perimeter && !this.element) {
411
+ return;
412
+ }
413
+ if (!this.element) {
414
+ this.generateElement();
415
+ }
416
+ let lengthStr;
417
+ let areaStr;
418
+ if (!this.isMetric) {
419
+ lengthStr = metricToImperialLenStr(measure.perimeter);
420
+ areaStr = metricToImperialAreaStr(measure.area);
421
+ }
422
+ else {
423
+ lengthStr = metricLenStr(measure.perimeter);
424
+ areaStr = metricAreaStr(measure.area);
425
+ }
426
+ const text = `${lengthStr}, ${areaStr}`;
427
+ this.element.querySelector("span").innerText = text;
428
+ }
429
+ generateElement() {
430
+ const ele = generateEle();
431
+ ele.style.display = "none";
432
+ this.element = ele;
433
+ this.viewer.canvas.parentElement.appendChild(ele);
434
+ }
435
+ appendCloseButton() {
436
+ const btn = document.createElement("div");
437
+ btn.setAttribute("style", `
438
+ height: 30px;
439
+ width: 30px;
440
+ display: flex;
441
+ align-items: center;
442
+ justify-content: center;
443
+ cursor: pointer;
444
+ margin-left: 5px;
445
+ font-size: 18px;
446
+ `);
447
+ btn.setAttribute("title", "Close measurement");
448
+ btn.innerHTML = CLOSE_ICON_SVG;
449
+ btn.addEventListener("click", () => {
450
+ this.Start();
451
+ });
452
+ this.element.appendChild(btn);
453
+ this.element.style.paddingRight = "5px";
454
+ }
455
+ onDone() {
456
+ var _a;
457
+ (_a = this.events) === null || _a === void 0 ? void 0 : _a.destroy();
458
+ this.events = null;
459
+ if (this.element) {
460
+ this.element.style.removeProperty("pointer-events");
461
+ this.appendCloseButton();
462
+ }
463
+ this.updateText();
464
+ }
465
+ }
466
+ MeasureCreator.Polygon = Polygon;
467
+ })(MeasureCreator = exports.MeasureCreator || (exports.MeasureCreator = {}));
468
+ //# sourceMappingURL=measure-creator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"measure-creator.js","sourceRoot":"","sources":["../../../../src/widgets/common/measure-creator.ts"],"names":[],"mappings":"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"}