bruce-cesium 5.7.9 → 5.8.1

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 +32308 -0
  2. package/dist/bruce-cesium.es5.js.map +1 -0
  3. package/dist/bruce-cesium.umd.js +32232 -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 +1741 -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 +361 -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,430 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GoogleSearchRenderManager = void 0;
4
+ const bruce_models_1 = require("bruce-models");
5
+ const Cesium = require("cesium");
6
+ const entity_globe_1 = require("src/rendering/getters/entity-globe");
7
+ const bruce_cesium_1 = require("src/bruce-cesium");
8
+ var GoogleSearchRenderManager;
9
+ (function (GoogleSearchRenderManager) {
10
+ class Manager {
11
+ get Disposed() {
12
+ return this.disposed;
13
+ }
14
+ ;
15
+ constructor(params) {
16
+ // If true, this menu item is disposed and should not be used.
17
+ // Any rendering will be ignored.
18
+ this.disposed = false;
19
+ this.grid = new entity_globe_1.EntityGlobe.Grid();
20
+ this.getterLoopId = 0;
21
+ const { item, register, monitor, viewer, getters } = params;
22
+ this.item = item;
23
+ this.register = register;
24
+ this.monitor = monitor;
25
+ this.viewer = viewer;
26
+ this.getters = getters;
27
+ }
28
+ Init() {
29
+ (async () => {
30
+ var _a;
31
+ try {
32
+ // Check if the Nextspace account has a configured token.
33
+ // TODO: We don't use this token here, we simply use the imported Google script.
34
+ // This is mainly to avoid using OUR token in our default script imports and force the users to set theirs up.
35
+ const { programKey } = await bruce_models_1.ProgramKey.Get({
36
+ programId: bruce_models_1.ProgramKey.EProgramId.GoogleApi,
37
+ api: this.getters.GetBruceApi()
38
+ });
39
+ if (programKey === null || programKey === void 0 ? void 0 : programKey.Key) {
40
+ const valid = await validateKey(programKey === null || programKey === void 0 ? void 0 : programKey.Key);
41
+ if (!valid) {
42
+ throw new Error("Account default key not valid for Google Places API.");
43
+ }
44
+ }
45
+ else {
46
+ throw new Error("No valid key found for Google Places API.");
47
+ }
48
+ if (this.Disposed) {
49
+ return;
50
+ }
51
+ (_a = this.monitorRemoval) === null || _a === void 0 ? void 0 : _a.call(this);
52
+ this.monitorRemoval = this.monitor.Updated().Subscribe(() => {
53
+ this.startGetterLoop();
54
+ });
55
+ this.startGetterLoop();
56
+ }
57
+ catch (e) {
58
+ console.error(e);
59
+ }
60
+ })();
61
+ }
62
+ Dispose() {
63
+ var _a;
64
+ if (this.disposed) {
65
+ return;
66
+ }
67
+ this.disposed = true;
68
+ (_a = this.monitorRemoval) === null || _a === void 0 ? void 0 : _a.call(this);
69
+ this.register.RemoveRegos({
70
+ menuItemId: this.item.id
71
+ });
72
+ }
73
+ ReRender(params) {
74
+ // Ignore. Not relevant for this render manager.
75
+ return;
76
+ }
77
+ /**
78
+ * Starts gathering data around the view-port in blocks.
79
+ * If a block was previously fetched in a different iteration, it is ignored.
80
+ * This can be re-called once the camera is moved to restart the process.
81
+ */
82
+ startGetterLoop() {
83
+ this.getterLoopId += 1;
84
+ const loopId = this.getterLoopId;
85
+ return new Promise(async () => {
86
+ const MAX_HEIGHT = 100000;
87
+ const MIN_HEIGHT = 0;
88
+ // Wait until the monitor has a target and bounds.
89
+ // Kill the loop if the loop id has changed.
90
+ while ((!this.monitor.GetTarget() || !this.monitor.GetBounds()) && this.getterLoopId == loopId && !this.Disposed) {
91
+ await delay(500);
92
+ }
93
+ if (this.Disposed || this.getterLoopId != loopId) {
94
+ return;
95
+ }
96
+ const target = this.monitor.GetTarget();
97
+ const bounds = this.monitor.GetBounds();
98
+ if (!target || !bounds) {
99
+ return;
100
+ }
101
+ // Kill if we aren't within min/max height range.
102
+ const alt = bounds.alt;
103
+ if (alt == null || alt > MAX_HEIGHT || (alt < MIN_HEIGHT && MIN_HEIGHT > 0)) {
104
+ return;
105
+ }
106
+ const cells = this.grid.GetCellsForView(target, bounds);
107
+ let curCellIndex = cells.length > 0 ? 0 : null;
108
+ // Loop through all cells, ignoring ones that we previously marked as fetched.
109
+ while (curCellIndex != null) {
110
+ await delay(500);
111
+ // New loop started, break the old one.
112
+ if (this.getterLoopId != loopId || this.Disposed) {
113
+ break;
114
+ }
115
+ const curCell = cells[curCellIndex];
116
+ if (curCell.IsFetched()) {
117
+ curCell.Fetching = false;
118
+ curCellIndex += 1;
119
+ if (cells[curCellIndex]) {
120
+ cells[curCellIndex].Fetching = true;
121
+ }
122
+ else {
123
+ curCellIndex = null;
124
+ }
125
+ continue;
126
+ }
127
+ try {
128
+ // New loop started, break the old one.
129
+ if (this.getterLoopId != loopId) {
130
+ break;
131
+ }
132
+ const bounds = curCell.GetBounds();
133
+ const location = {
134
+ altitude: bounds.alt,
135
+ latitude: bounds.south + ((bounds.north - bounds.south) / 2),
136
+ longitude: bounds.west + ((bounds.east - bounds.west) / 2)
137
+ };
138
+ let result = [];
139
+ try {
140
+ result = await getPlaces({
141
+ location: location,
142
+ bounds: bounds,
143
+ keyword: this.item.keyword
144
+ });
145
+ }
146
+ catch (e) {
147
+ if (e !== "ZERO_RESULTS") {
148
+ console.error(e);
149
+ throw e;
150
+ }
151
+ }
152
+ await this.renderPlaces(result);
153
+ if (this.getterLoopId != loopId || this.Disposed) {
154
+ break;
155
+ }
156
+ curCell.Fetched = true;
157
+ curCell.Fetching = false;
158
+ }
159
+ catch (e) {
160
+ console.error(e);
161
+ break;
162
+ }
163
+ }
164
+ });
165
+ }
166
+ /**
167
+ * Renders Google places on the map and registers them into the common register.
168
+ * @param places
169
+ * @returns
170
+ */
171
+ async renderPlaces(places) {
172
+ var _a, _b;
173
+ // Add results as billboards to the viewer.
174
+ for (let i = 0; i < places.length; i++) {
175
+ const item = places[i];
176
+ const itemId = item.place_id;
177
+ // No ID, no item :)
178
+ if (!itemId) {
179
+ continue;
180
+ }
181
+ // Check if we already have this item.
182
+ if (this.register.GetRego({
183
+ entityId: itemId,
184
+ menuItemId: this.item.id
185
+ })) {
186
+ continue;
187
+ }
188
+ let lat;
189
+ let lon;
190
+ if (item.geometry) {
191
+ if ((_b = (_a = item.geometry.location) === null || _a === void 0 ? void 0 : _a.lat) === null || _b === void 0 ? void 0 : _b.call(_a)) {
192
+ lat = item.geometry.location.lat();
193
+ lon = item.geometry.location.lng();
194
+ }
195
+ else if (item.geometry.viewport) {
196
+ lat = (item.geometry.viewport.Xh.lo + item.geometry.viewport.Xh.hi) / 2;
197
+ lon = (item.geometry.viewport.Hh.lo + item.geometry.viewport.Hh.hi) / 2;
198
+ }
199
+ }
200
+ if (!lat || !lon || typeof lat !== "number" || typeof lon !== "number") {
201
+ continue;
202
+ }
203
+ const bgColor = item.icon_background_color || "white";
204
+ const size = 38;
205
+ const canvas = await createBillboardImage(item.icon, bgColor, size);
206
+ const pos = Cesium.Cartesian3.fromDegrees(lon, lat);
207
+ const billboard = this.viewer.entities.add({
208
+ position: pos,
209
+ billboard: {
210
+ image: canvas,
211
+ scale: 1,
212
+ verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
213
+ heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
214
+ disableDepthTestDistance: Number.POSITIVE_INFINITY
215
+ }
216
+ });
217
+ bruce_cesium_1.CesiumEntityStyler.BakeDefaultColor({
218
+ entity: billboard,
219
+ viewer: this.viewer,
220
+ colors: {
221
+ "billboard": Cesium.Color.WHITE.clone()
222
+ },
223
+ refresh: false
224
+ });
225
+ this.register.AddRego({
226
+ rego: {
227
+ canEdit: false,
228
+ // If we ever want the user to be able to create a Nextspace record-
229
+ //we must match this logic with the OSM logic.
230
+ entityId: itemId,
231
+ sourceId: itemId,
232
+ menuItemId: this.item.id,
233
+ menuItemType: this.item.Type,
234
+ priority: 0,
235
+ visual: billboard,
236
+ name: item.name
237
+ },
238
+ requestRender: false
239
+ });
240
+ if (this.Disposed) {
241
+ break;
242
+ }
243
+ }
244
+ if (this.Disposed) {
245
+ this.register.RemoveRegos({
246
+ menuItemId: this.item.id,
247
+ requestRender: true
248
+ });
249
+ return;
250
+ }
251
+ this.viewer.scene.requestRender();
252
+ }
253
+ }
254
+ GoogleSearchRenderManager.Manager = Manager;
255
+ })(GoogleSearchRenderManager = exports.GoogleSearchRenderManager || (exports.GoogleSearchRenderManager = {}));
256
+ async function delay(milliseconds) {
257
+ return new Promise((res) => {
258
+ setTimeout(() => {
259
+ res();
260
+ }, milliseconds);
261
+ });
262
+ }
263
+ /**
264
+ * Gets places of a certain type, eg: restaurant, schools, etc.
265
+ * We can then display this on the map.
266
+ * @param params
267
+ */
268
+ async function getPlaces(params) {
269
+ var _a, _b, _c;
270
+ const { location, bounds, keyword } = params;
271
+ if (!getGoogle()) {
272
+ throw new Error("Google is not defined");
273
+ }
274
+ if (!_detailsService && ((_c = (_b = (_a = getGoogle()) === null || _a === void 0 ? void 0 : _a.maps) === null || _b === void 0 ? void 0 : _b.places) === null || _c === void 0 ? void 0 : _c.PlacesService)) {
275
+ _detailsService = new (getGoogle().maps.places.PlacesService)(document.createElement("div"));
276
+ }
277
+ return new Promise((res, rej) => {
278
+ if (!(_detailsService === null || _detailsService === void 0 ? void 0 : _detailsService.nearbySearch)) {
279
+ rej("Google is not defined");
280
+ }
281
+ const searchParams = {
282
+ location: new (getGoogle().maps.LatLng)(location.latitude, location.longitude),
283
+ radius: 1000,
284
+ keyword: keyword
285
+ };
286
+ if (bounds) {
287
+ searchParams["bounds"] = new (getGoogle().maps.LatLngBounds)(new (getGoogle().maps.LatLng)(bounds.south, bounds.west), new (getGoogle().maps.LatLng)(bounds.north, bounds.east));
288
+ }
289
+ _detailsService.nearbySearch(searchParams, (results, status) => {
290
+ try {
291
+ if (status === (getGoogle().maps.places.PlacesServiceStatus).OK) {
292
+ res(results);
293
+ }
294
+ else {
295
+ rej(status);
296
+ }
297
+ }
298
+ catch (e) {
299
+ rej(e);
300
+ }
301
+ });
302
+ });
303
+ }
304
+ /**
305
+ * Returns if a google api token is valid or not for the geocoding service.
306
+ * @param apiKey
307
+ * @returns
308
+ */
309
+ async function validateKey(apiKey) {
310
+ return validateKeyForSearches(apiKey);
311
+ }
312
+ const _validateKeyCache = new Map();
313
+ /**
314
+ * Returns if a google api token is valid or not for the geocoding service.
315
+ * @param apiKey
316
+ * @returns
317
+ */
318
+ async function validateKeyForSearches(apiKey) {
319
+ if (!apiKey) {
320
+ return false;
321
+ }
322
+ if (_validateKeyCache.has(apiKey)) {
323
+ return _validateKeyCache.get(apiKey);
324
+ }
325
+ const prom = new Promise(async (res, rej) => {
326
+ const url = `https://maps.googleapis.com/maps/api/geocode/json?address=invalid&key=${apiKey}`;
327
+ try {
328
+ const response = await fetch(url);
329
+ if (!response.ok) {
330
+ console.error(response);
331
+ res(false);
332
+ }
333
+ const data = await response.json();
334
+ if (data.status === "REQUEST_DENIED") {
335
+ console.error(data);
336
+ res(false);
337
+ }
338
+ res(true);
339
+ return;
340
+ }
341
+ catch (e) {
342
+ console.error(e);
343
+ }
344
+ res(false);
345
+ });
346
+ _validateKeyCache.set(apiKey, prom);
347
+ return prom;
348
+ }
349
+ const _billboardCache = new bruce_models_1.LRUCache(150);
350
+ /**
351
+ * Calculates the resized dimensions while maintaining aspect ratio.
352
+ * @param originalWidth
353
+ * @param originalHeight
354
+ * @param targetWidth
355
+ * @param targetHeight
356
+ */
357
+ function calculateBillboardSpace(originalWidth, originalHeight, targetWidth, targetHeight) {
358
+ const aspectRatio = originalWidth / originalHeight;
359
+ let newWidth = targetWidth;
360
+ let newHeight = targetHeight;
361
+ if (newWidth / newHeight > aspectRatio) {
362
+ newWidth = newHeight * aspectRatio;
363
+ }
364
+ else {
365
+ newHeight = newWidth / aspectRatio;
366
+ }
367
+ return { newWidth, newHeight };
368
+ }
369
+ /**
370
+ * Returns a billboard image with a circle of the given size and color.
371
+ * The image URL will be loaded and drawn on the center of the circle.
372
+ * The promise is cached so that the same image is not loaded multiple times.
373
+ * @param url
374
+ * @param bgColor
375
+ * @param width
376
+ * @param height
377
+ */
378
+ async function createBillboardImage(url, bgColor, size) {
379
+ const key = `${url}-${bgColor}-${size}`;
380
+ const cacheData = _billboardCache.Get(key);
381
+ if (cacheData) {
382
+ return cacheData;
383
+ }
384
+ const IMAGE_PADDING = 8;
385
+ const prom = new Promise(async (res, rej) => {
386
+ try {
387
+ const response = await fetch(url);
388
+ const blob = await response.blob();
389
+ const image = new Image();
390
+ image.onload = () => {
391
+ const canvas = document.createElement("canvas");
392
+ canvas.width = size;
393
+ canvas.height = size;
394
+ const context = canvas.getContext("2d");
395
+ // Calculate padding and available space.
396
+ const availableSize = size - 2 * IMAGE_PADDING;
397
+ // Calculate resized dimensions preserving aspect ratio.
398
+ const { newWidth, newHeight } = calculateBillboardSpace(image.width, image.height, availableSize, availableSize);
399
+ // Draw the circular background.
400
+ context.beginPath();
401
+ context.arc(size / 2, size / 2, size / 2, 0, 2 * Math.PI, false);
402
+ context.fillStyle = bgColor;
403
+ context.fill();
404
+ // Draw the image centered within the circle.
405
+ const offsetX = (size - newWidth) / 2;
406
+ const offsetY = (size - newHeight) / 2;
407
+ context.drawImage(image, offsetX, offsetY, newWidth, newHeight);
408
+ // Draw a 2px darkened border around the circle.
409
+ context.beginPath();
410
+ context.arc(size / 2, size / 2, size / 2 - 1, 0, 2 * Math.PI, false);
411
+ context.lineWidth = 1;
412
+ context.strokeStyle = "rgba(0, 0, 0, 0.3)";
413
+ context.stroke();
414
+ res(canvas);
415
+ };
416
+ image.onerror = (e) => rej(e);
417
+ image.src = URL.createObjectURL(blob);
418
+ }
419
+ catch (e) {
420
+ rej(e);
421
+ }
422
+ });
423
+ _billboardCache.Set(key, prom);
424
+ return prom;
425
+ }
426
+ let _detailsService = null;
427
+ function getGoogle() {
428
+ return window["google"];
429
+ }
430
+ //# sourceMappingURL=google-search-render-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-search-render-manager.js","sourceRoot":"","sources":["../../../../../src/rendering/render-managers/other/google-search-render-manager.ts"],"names":[],"mappings":"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"}