@openglobus/og 0.17.2 → 0.18.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 (490) hide show
  1. package/README.md +75 -46
  2. package/dist/@openglobus/og.esm.js +1 -20
  3. package/dist/@openglobus/og.esm.js.map +1 -1
  4. package/dist/@openglobus/og.umd.js +1 -20
  5. package/dist/@openglobus/og.umd.js.map +1 -1
  6. package/dist/@openglobus/res/fonts/Karla-Bold.json +5252 -0
  7. package/dist/@openglobus/res/fonts/Karla-Bold.ttf.cfg +920 -0
  8. package/dist/@openglobus/res/fonts/Karla-Bold.ttf.png +0 -0
  9. package/dist/@openglobus/res/fonts/Karla-Light.json +5252 -0
  10. package/dist/@openglobus/res/fonts/Karla-Light.ttf.cfg +830 -0
  11. package/dist/@openglobus/res/fonts/Karla-Light.ttf.png +0 -0
  12. package/dist/@openglobus/res/fonts/Karla-Medium.json +5252 -0
  13. package/dist/@openglobus/res/fonts/Karla-Medium.ttf.cfg +1196 -0
  14. package/dist/@openglobus/res/fonts/Karla-Medium.ttf.png +0 -0
  15. package/dist/@openglobus/res/fonts/NotoSansArabic-Regular.json +3332 -0
  16. package/dist/@openglobus/res/fonts/NotoSansArabic-Regular.ttf.cfg +1370 -0
  17. package/dist/@openglobus/res/fonts/NotoSansArabic-Regular.ttf.png +0 -0
  18. package/dist/@openglobus/res/fonts/Roboto-Regular.json +37147 -0
  19. package/dist/@openglobus/res/fonts/Roboto-Regular.ttf.cfg +1340 -0
  20. package/dist/@openglobus/res/fonts/Roboto-Regular.ttf.png +0 -0
  21. package/dist/@openglobus/res/fonts/arial.json +4321 -0
  22. package/dist/@openglobus/res/fonts/arial.ttf.cfg +1570 -0
  23. package/dist/@openglobus/res/fonts/arial.ttf.png +0 -0
  24. package/dist/@openglobus/res/night-4326.png +0 -0
  25. package/dist/@openglobus/res/night.png +0 -0
  26. package/dist/@openglobus/res/spec.png +0 -0
  27. package/package.json +25 -23
  28. package/src/{og/Clock.js → Clock.ts} +100 -78
  29. package/src/Deferred.ts +17 -0
  30. package/src/Events.ts +200 -0
  31. package/src/{og/Extent.js → Extent.ts} +324 -352
  32. package/src/Globe.ts +363 -0
  33. package/src/{og/ImageCanvas.js → ImageCanvas.ts} +244 -236
  34. package/src/Lock.ts +41 -0
  35. package/src/{og/LonLat.js → LonLat.ts} +50 -47
  36. package/src/{og/Object3d.js → Object3d.ts} +89 -55
  37. package/src/Popup.ts +228 -0
  38. package/src/{og/QueueArray.js → QueueArray.ts} +76 -75
  39. package/src/{og/Rectangle.js → Rectangle.ts} +115 -111
  40. package/src/Stack.ts +58 -0
  41. package/src/{og/astro/astro.js → astro/astro.ts} +49 -51
  42. package/src/{og/astro/earth.js → astro/earth.ts} +8 -9
  43. package/src/{og/astro/jd.js → astro/jd.ts} +92 -111
  44. package/src/{og/astro/orbit.js → astro/orbit.ts} +35 -37
  45. package/src/{og/astro/rotation.js → astro/rotation.ts} +4 -6
  46. package/src/{og/bv/Box.js → bv/Box.ts} +21 -17
  47. package/src/{og/bv/Sphere.js → bv/Sphere.ts} +21 -19
  48. package/src/bv/index.ts +4 -0
  49. package/src/{og/camera/Camera.js → camera/Camera.ts} +254 -197
  50. package/src/{og/camera/Frustum.js → camera/Frustum.ts} +137 -111
  51. package/src/{og/camera/PlanetCamera.js → camera/PlanetCamera.ts} +246 -182
  52. package/src/camera/index.ts +4 -0
  53. package/src/{og/cons.js → cons.ts} +14 -18
  54. package/src/{og/control/Atmosphere.js → control/Atmosphere.ts} +50 -50
  55. package/src/{og/control/CompassButton.js → control/CompassButton.ts} +27 -30
  56. package/src/{og/control/Control.js → control/Control.ts} +76 -70
  57. package/src/{og/control/DebugInfo.js → control/DebugInfo.ts} +130 -62
  58. package/src/{og/control/DrawingSwitcher.js → control/DrawingSwitcher.ts} +16 -22
  59. package/src/control/EarthCoordinates.ts +222 -0
  60. package/src/control/EarthNavigation.ts +293 -0
  61. package/src/{og/control/GeoImageDragControl.js → control/GeoImageDragControl.ts} +37 -29
  62. package/src/control/KeyboardNavigation.ts +168 -0
  63. package/src/{og/control/LayerAnimation.js → control/LayerAnimation.ts} +74 -90
  64. package/src/control/LayerSwitcher.ts +76 -0
  65. package/src/{og/control/Lighting.js → control/Lighting.ts} +158 -120
  66. package/src/control/MouseNavigation.ts +468 -0
  67. package/src/control/MouseWheelZoomControl.ts +269 -0
  68. package/src/{og/control/RulerSwitcher.js → control/RulerSwitcher.ts} +18 -20
  69. package/src/control/ScaleControl.ts +131 -0
  70. package/src/control/SegmentBoundVisualization.ts +50 -0
  71. package/src/control/ShowFps.ts +28 -0
  72. package/src/control/SimpleNavigation.ts +118 -0
  73. package/src/{og/control/SimpleSkyBackground.js → control/SimpleSkyBackground.ts} +36 -38
  74. package/src/{og/control/Sun.js → control/Sun.ts} +56 -64
  75. package/src/control/ToggleWireframe.ts +35 -0
  76. package/src/control/TouchNavigation.ts +368 -0
  77. package/src/control/ZoomControl.ts +111 -0
  78. package/src/control/drawing/DrawingControl.ts +45 -0
  79. package/src/{og/control/drawing/LineStringDrawingScene.js → control/drawing/LineStringDrawingScene.ts} +28 -35
  80. package/src/{og/control/drawing/PolygonDrawingScene.js → control/drawing/PolygonDrawingScene.ts} +148 -201
  81. package/src/{og/control/elevationProfile/ElevationProfile.js → control/elevationProfile/ElevationProfile.ts} +70 -36
  82. package/src/control/heightRuler/HeightRuler.ts +16 -0
  83. package/src/{og/control/heightRuler/HeightRulerScene.js → control/heightRuler/HeightRulerScene.ts} +92 -87
  84. package/src/{og/control/heightRuler/HeightRulerSwitcher.js → control/heightRuler/HeightRulerSwitcher.ts} +3 -3
  85. package/src/control/index.ts +45 -0
  86. package/src/control/ruler/Ruler.ts +35 -0
  87. package/src/{og/control/ruler/RulerScene.js → control/ruler/RulerScene.ts} +163 -121
  88. package/src/{og/control/selection/Selection.js → control/selection/Selection.ts} +23 -21
  89. package/src/{og/control/selection/SelectionScene.js → control/selection/SelectionScene.ts} +64 -50
  90. package/src/{og/control/timeline/TimelineControl.js → control/timeline/TimelineControl.ts} +37 -28
  91. package/src/{og/control/timeline/TimelineModel.js → control/timeline/TimelineModel.ts} +50 -35
  92. package/src/{og/control/timeline/TimelineView.js → control/timeline/TimelineView.ts} +162 -113
  93. package/src/{og/control/timeline/timelineUtils.js → control/timeline/timelineUtils.ts} +11 -10
  94. package/src/{og/control → control}/visibleExtent/Segment.js +5 -5
  95. package/src/{og/control → control}/visibleExtent/VisibleExtent.js +8 -15
  96. package/src/{og/control/visibleExtent/drawnode.js → control/visibleExtent/drawnode.ts} +1 -3
  97. package/src/{og/ellipsoid/Ellipsoid.js → ellipsoid/Ellipsoid.ts} +113 -59
  98. package/src/ellipsoid/index.ts +4 -0
  99. package/src/{og/ellipsoid/wgs84.js → ellipsoid/wgs84.ts} +1 -3
  100. package/src/{og/entity/BaseBillboard.js → entity/BaseBillboard.ts} +128 -102
  101. package/src/entity/BaseBillboardHandler.ts +772 -0
  102. package/src/{og/entity/Billboard.js → entity/Billboard.ts} +77 -47
  103. package/src/entity/BillboardHandler.ts +135 -0
  104. package/src/{og/entity/Entity.js → entity/Entity.ts} +285 -226
  105. package/src/{og/entity/EntityCollection.js → entity/EntityCollection.ts} +340 -247
  106. package/src/{og/entity/GeoObject.js → entity/GeoObject.ts} +122 -67
  107. package/src/{og/entity/GeoObjectHandler.js → entity/GeoObjectHandler.ts} +273 -198
  108. package/src/entity/Geometry.ts +486 -0
  109. package/src/{og/entity/GeometryHandler.js → entity/GeometryHandler.ts} +383 -541
  110. package/src/{og/entity/Label.js → entity/Label.ts} +131 -83
  111. package/src/{og/entity/LabelHandler.js → entity/LabelHandler.ts} +289 -255
  112. package/src/{og/entity/LabelWorker.js → entity/LabelWorker.ts} +26 -36
  113. package/src/{og/entity/PointCloud.js → entity/PointCloud.ts} +200 -164
  114. package/src/entity/PointCloudHandler.ts +125 -0
  115. package/src/{og/entity/Polyline.js → entity/Polyline.ts} +517 -539
  116. package/src/{og/entity/PolylineHandler.js → entity/PolylineHandler.ts} +29 -31
  117. package/src/{og/entity/Ray.js → entity/Ray.ts} +89 -60
  118. package/src/{og/entity/RayHandler.js → entity/RayHandler.ts} +201 -306
  119. package/src/{og/entity/Strip.js → entity/Strip.ts} +143 -100
  120. package/src/{og/entity/StripHandler.js → entity/StripHandler.ts} +76 -72
  121. package/src/entity/index.ts +12 -0
  122. package/src/index.ts +173 -0
  123. package/src/input/KeyboardHandler.ts +196 -0
  124. package/src/{og/input/MouseHandler.js → input/MouseHandler.ts} +46 -35
  125. package/src/input/TouchHandler.ts +54 -0
  126. package/src/{og/input/input.js → input/input.ts} +1 -3
  127. package/src/{og/layer/BaseGeoImage.js → layer/BaseGeoImage.ts} +174 -107
  128. package/src/{og/layer/CanvasTiles.js → layer/CanvasTiles.ts} +139 -105
  129. package/src/{og/layer/GeoImage.js → layer/GeoImage.ts} +62 -52
  130. package/src/layer/GeoTexture2d.ts +56 -0
  131. package/src/{og/layer/GeoVideo.js → layer/GeoVideo.ts} +53 -53
  132. package/src/{og/layer/KML.js → layer/KML.ts} +63 -74
  133. package/src/{og/layer/Layer.js → layer/Layer.ts} +399 -223
  134. package/src/{og/layer/Material.js → layer/Material.ts} +40 -35
  135. package/src/{og/layer/Vector.js → layer/Vector.ts} +319 -267
  136. package/src/{og/layer/WMS.js → layer/WMS.ts} +76 -64
  137. package/src/{og/layer/XYZ.js → layer/XYZ.ts} +123 -98
  138. package/src/layer/index.ts +12 -0
  139. package/src/{og/light/LightSource.js → light/LightSource.ts} +132 -93
  140. package/src/{og/math/Line2.js → math/Line2.ts} +11 -8
  141. package/src/{og/math/Line3.js → math/Line3.ts} +49 -27
  142. package/src/{og/math/Mat3.js → math/Mat3.ts} +43 -27
  143. package/src/{og/math/Mat4.js → math/Mat4.ts} +110 -77
  144. package/src/{og/math/Plane.js → math/Plane.ts} +28 -23
  145. package/src/{og/math/Quat.js → math/Quat.ts} +238 -222
  146. package/src/{og/math/Ray.js → math/Ray.ts} +59 -63
  147. package/src/{og/math/Vec2.js → math/Vec2.ts} +85 -76
  148. package/src/{og/math/Vec3.js → math/Vec3.ts} +141 -140
  149. package/src/{og/math/Vec4.js → math/Vec4.ts} +64 -53
  150. package/src/{og/math/coder.js → math/coder.ts} +30 -27
  151. package/src/math/index.ts +26 -0
  152. package/src/{og/math.js → math.ts} +46 -49
  153. package/src/{og/mercator.js → mercator.ts} +143 -149
  154. package/src/{og/proj/EPSG3857.js → proj/EPSG3857.ts} +1 -3
  155. package/src/{og/proj/EPSG4326.js → proj/EPSG4326.ts} +11 -13
  156. package/src/{og/proj/Proj.js → proj/Proj.ts} +27 -23
  157. package/src/{og/quadTree/EPSG4326QuadTreeStrategy.js → quadTree/EPSG4326QuadTreeStrategy.ts} +10 -13
  158. package/src/{og/quadTree/EarthQuadTreeStrategy.js → quadTree/EarthQuadTreeStrategy.ts} +11 -13
  159. package/src/quadTree/EntityCollectionNode.ts +395 -0
  160. package/src/{og/quadTree/MarsQuadTreeStrategy.js → quadTree/MarsQuadTreeStrategy.ts} +10 -13
  161. package/src/{og/quadTree/Node.js → quadTree/Node.ts} +283 -191
  162. package/src/{og/quadTree/QuadTreeStrategy.js → quadTree/QuadTreeStrategy.ts} +35 -29
  163. package/src/quadTree/Wgs84QuadTreeStrategy.ts +22 -0
  164. package/src/quadTree/index.ts +14 -0
  165. package/src/{og/quadTree/quadTree.js → quadTree/quadTree.ts} +75 -77
  166. package/src/{og/renderer/Renderer.js → renderer/Renderer.ts} +454 -298
  167. package/src/{og/renderer/RendererEvents.js → renderer/RendererEvents.ts} +347 -256
  168. package/src/{og/scene/Axes.js → scene/Axes.ts} +26 -22
  169. package/src/{og/scene/BaseNode.js → scene/BaseNode.ts} +53 -47
  170. package/src/{og/scene/Planet.js → scene/Planet.ts} +776 -592
  171. package/src/{og/scene/RenderNode.js → scene/RenderNode.ts} +105 -91
  172. package/src/{og/scene/SkyBox.js → scene/SkyBox.ts} +29 -25
  173. package/src/scene/index.ts +6 -0
  174. package/src/{og/segment/Segment.js → segment/Segment.ts} +497 -371
  175. package/src/{og/segment/SegmentLonLat.js → segment/SegmentLonLat.ts} +81 -87
  176. package/src/{og/segment/SegmentLonLatWgs84.js → segment/SegmentLonLatWgs84.ts} +9 -16
  177. package/src/{og/segment/Slice.js → segment/Slice.ts} +15 -9
  178. package/src/{og/segment/segmentHelper.js → segment/segmentHelper.ts} +57 -49
  179. package/src/{og/shaders/atmos.js → shaders/atmos.ts} +4 -6
  180. package/src/{og/shaders/billboard.js → shaders/billboard.ts} +3 -5
  181. package/src/{og/shaders/bloom.js → shaders/bloom.ts} +2 -4
  182. package/src/{og/shaders/blur.js → shaders/blur.ts} +4 -7
  183. package/src/{og/shaders/depth.js → shaders/depth.ts} +1 -3
  184. package/src/{og/shaders/drawnode.js → shaders/drawnode.ts} +19 -21
  185. package/src/{og/shaders/geoObject.js → shaders/geoObject.ts} +17 -19
  186. package/src/{og/shaders/label.js → shaders/label.ts} +4 -6
  187. package/src/{og/shaders/lumFilter.js → shaders/lumFilter.ts} +2 -4
  188. package/src/{og/shaders/pickingMask.js → shaders/pickingMask.ts} +2 -4
  189. package/src/{og/shaders/pointCloud.js → shaders/pointCloud.ts} +7 -10
  190. package/src/{og/shaders/polyline.js → shaders/polyline.ts} +3 -200
  191. package/src/{og/shaders/ray.js → shaders/ray.ts} +2 -4
  192. package/src/{og/shaders/screenFrame.js → shaders/screenFrame.ts} +2 -4
  193. package/src/{og/shaders/skybox.js → shaders/skybox.ts} +7 -9
  194. package/src/{og/shaders/toneMapping.js → shaders/toneMapping.ts} +2 -4
  195. package/src/{og/shaders/utils.js → shaders/utils.ts} +0 -2
  196. package/src/{og/terrain/BilTerrain.js → terrain/BilTerrain.ts} +38 -32
  197. package/src/terrain/EmptyTerrain.ts +230 -0
  198. package/src/{og/terrain/Geoid.js → terrain/Geoid.ts} +67 -41
  199. package/src/{og/terrain/GlobusTerrain.js → terrain/GlobusTerrain.ts} +159 -153
  200. package/src/{og/terrain/MapboxTerrain.js → terrain/MapboxTerrain.ts} +58 -61
  201. package/src/terrain/index.ts +6 -0
  202. package/src/ui/Button.ts +121 -0
  203. package/src/ui/ButtonGroup.ts +63 -0
  204. package/src/ui/Dialog.ts +244 -0
  205. package/src/ui/Slider.ts +188 -0
  206. package/src/ui/ToggleButton.ts +68 -0
  207. package/src/{og/ui/View.js → ui/View.ts} +66 -59
  208. package/src/utils/BaseWorker.ts +60 -0
  209. package/src/utils/FontAtlas.ts +356 -0
  210. package/src/{og/utils/GeoImageCreator.js → utils/GeoImageCreator.ts} +45 -29
  211. package/src/{og/utils/ImagesCacheManager.js → utils/ImagesCacheManager.ts} +85 -70
  212. package/src/utils/Loader.ts +247 -0
  213. package/src/{og/utils/NormalMapCreator.js → utils/NormalMapCreator.ts} +114 -77
  214. package/src/{og/utils/PlainSegmentWorker.js → utils/PlainSegmentWorker.ts} +41 -24
  215. package/src/{og/utils/TerrainWorker.js → utils/TerrainWorker.ts} +51 -36
  216. package/src/utils/TextureAtlas.ts +322 -0
  217. package/src/{og/utils/VectorTileCreator.js → utils/VectorTileCreator.ts} +67 -52
  218. package/src/{og/utils/colorTable.js → utils/colorTable.ts} +142 -144
  219. package/src/{og/utils/earcut.js → utils/earcut.ts} +664 -661
  220. package/src/{og/utils/objParser.js → utils/objParser.ts} +66 -37
  221. package/src/{og/utils/shared.js → utils/shared.ts} +267 -206
  222. package/src/utils/units.ts +78 -0
  223. package/src/webgl/BaseFramebuffer.ts +125 -0
  224. package/src/webgl/Framebuffer.ts +206 -0
  225. package/src/webgl/Handler.ts +1414 -0
  226. package/src/webgl/Multisample.ts +153 -0
  227. package/src/webgl/Program.ts +451 -0
  228. package/src/{og/webgl/ProgramController.js → webgl/ProgramController.ts} +44 -43
  229. package/src/webgl/index.ts +13 -0
  230. package/src/{og/webgl/types.js → webgl/types.ts} +29 -31
  231. package/src/webgl/variableHandlers.ts +114 -0
  232. package/src/og/Deferred.js +0 -11
  233. package/src/og/Events.js +0 -185
  234. package/src/og/Globe.js +0 -342
  235. package/src/og/Lock.js +0 -44
  236. package/src/og/Popup.js +0 -187
  237. package/src/og/Stack.js +0 -49
  238. package/src/og/bv/index.js +0 -4
  239. package/src/og/camera/index.js +0 -4
  240. package/src/og/control/EarthCoordinates.js +0 -214
  241. package/src/og/control/EarthNavigation.js +0 -258
  242. package/src/og/control/KeyboardNavigation.js +0 -172
  243. package/src/og/control/LayerSwitcher.js +0 -424
  244. package/src/og/control/MouseNavigation.js +0 -436
  245. package/src/og/control/MouseWheelZoomControl.js +0 -253
  246. package/src/og/control/ScaleControl.js +0 -119
  247. package/src/og/control/SegmentBoundVisualization.js +0 -54
  248. package/src/og/control/ShowFps.js +0 -40
  249. package/src/og/control/SimpleNavigation.js +0 -123
  250. package/src/og/control/ToggleWireframe.js +0 -35
  251. package/src/og/control/TouchNavigation.js +0 -350
  252. package/src/og/control/ZoomControl.js +0 -115
  253. package/src/og/control/drawing/DrawingControl.js +0 -51
  254. package/src/og/control/heightRuler/HeightRuler.js +0 -12
  255. package/src/og/control/index.js +0 -56
  256. package/src/og/control/ruler/Ruler.js +0 -39
  257. package/src/og/ellipsoid/index.js +0 -4
  258. package/src/og/entity/BillboardHandler.js +0 -883
  259. package/src/og/entity/Geometry.js +0 -320
  260. package/src/og/entity/PointCloudHandler.js +0 -122
  261. package/src/og/entity/index.js +0 -9
  262. package/src/og/index.js +0 -112
  263. package/src/og/input/KeyboardHandler.js +0 -195
  264. package/src/og/input/TouchHandler.js +0 -59
  265. package/src/og/layer/GeoTexture2d.js +0 -50
  266. package/src/og/layer/index.js +0 -11
  267. package/src/og/math/index.js +0 -23
  268. package/src/og/quadTree/EntityCollectionNode.js +0 -391
  269. package/src/og/quadTree/Wgs84QuadTreeStrategy.js +0 -27
  270. package/src/og/quadTree/index.js +0 -14
  271. package/src/og/res/images.js +0 -8
  272. package/src/og/scene/index.js +0 -5
  273. package/src/og/terrain/EmptyTerrain.js +0 -174
  274. package/src/og/terrain/index.js +0 -6
  275. package/src/og/ui/Button.js +0 -107
  276. package/src/og/ui/ButtonGroup.js +0 -57
  277. package/src/og/ui/Dialog.js +0 -239
  278. package/src/og/ui/Slider.js +0 -170
  279. package/src/og/ui/ToggleButton.js +0 -51
  280. package/src/og/ui/UIhelpers.js +0 -155
  281. package/src/og/utils/BaseWorker.js +0 -46
  282. package/src/og/utils/FontAtlas.js +0 -218
  283. package/src/og/utils/Loader.js +0 -188
  284. package/src/og/utils/TextureAtlas.js +0 -291
  285. package/src/og/utils/functionComposition.js +0 -13
  286. package/src/og/utils/units.js +0 -78
  287. package/src/og/webgl/Framebuffer.js +0 -311
  288. package/src/og/webgl/Handler.js +0 -1170
  289. package/src/og/webgl/Multisample.js +0 -275
  290. package/src/og/webgl/Program.js +0 -407
  291. package/src/og/webgl/callbacks.js +0 -98
  292. package/src/og/webgl/index.js +0 -13
  293. package/src/og.jsdoc +0 -3
  294. package/types/Clock.d.ts +0 -99
  295. package/types/Deferred.d.ts +0 -6
  296. package/types/Events.d.ts +0 -78
  297. package/types/Extent.d.ts +0 -166
  298. package/types/Globe.d.ts +0 -108
  299. package/types/ImageCanvas.d.ts +0 -128
  300. package/types/Lock.d.ts +0 -12
  301. package/types/LonLat.d.ts +0 -127
  302. package/types/Object3d.d.ts +0 -35
  303. package/types/Popup.d.ts +0 -29
  304. package/types/QueueArray.d.ts +0 -19
  305. package/types/Rectangle.d.ts +0 -80
  306. package/types/Stack.d.ts +0 -19
  307. package/types/arial.d.ts +0 -49
  308. package/types/astro/astro.d.ts +0 -38
  309. package/types/astro/earth.d.ts +0 -7
  310. package/types/astro/jd.d.ts +0 -254
  311. package/types/bv/Box.d.ts +0 -30
  312. package/types/bv/Sphere.d.ts +0 -38
  313. package/types/bv/index.d.ts +0 -3
  314. package/types/camera/Camera.d.ts +0 -314
  315. package/types/camera/Frustum.d.ts +0 -133
  316. package/types/camera/PlanetCamera.d.ts +0 -219
  317. package/types/camera/index.d.ts +0 -3
  318. package/types/cons.d.ts +0 -40
  319. package/types/control/Atmosphere.d.ts +0 -15
  320. package/types/control/CompassButton.d.ts +0 -16
  321. package/types/control/Control.d.ts +0 -104
  322. package/types/control/DebugInfo.d.ts +0 -19
  323. package/types/control/DrawingSwitcher.d.ts +0 -13
  324. package/types/control/EarthCoordinates.d.ts +0 -44
  325. package/types/control/EarthNavigation.d.ts +0 -43
  326. package/types/control/GeoImageDragControl.d.ts +0 -14
  327. package/types/control/KeyboardNavigation.d.ts +0 -24
  328. package/types/control/LayerAnimation.d.ts +0 -73
  329. package/types/control/LayerSwitcher.d.ts +0 -64
  330. package/types/control/Lighting.d.ts +0 -41
  331. package/types/control/MouseNavigation.d.ts +0 -49
  332. package/types/control/MouseWheelZoomControl.d.ts +0 -46
  333. package/types/control/ScaleControl.d.ts +0 -23
  334. package/types/control/ShowFps.d.ts +0 -11
  335. package/types/control/SimpleNavigation.d.ts +0 -26
  336. package/types/control/SimpleSkyBackground.d.ts +0 -15
  337. package/types/control/Sun.d.ts +0 -53
  338. package/types/control/ToggleWireframe.d.ts +0 -12
  339. package/types/control/TouchNavigation.d.ts +0 -54
  340. package/types/control/ZoomControl.d.ts +0 -26
  341. package/types/control/drawing/DrawingControl.d.ts +0 -14
  342. package/types/control/drawing/LineStringDrawingScene.d.ts +0 -5
  343. package/types/control/drawing/PolygonDrawingScene.d.ts +0 -99
  344. package/types/control/heightRuler/HeightRuler.d.ts +0 -6
  345. package/types/control/heightRuler/HeightRulerScene.d.ts +0 -23
  346. package/types/control/index.d.ts +0 -27
  347. package/types/control/ruler/Ruler.d.ts +0 -13
  348. package/types/control/ruler/RulerScene.d.ts +0 -51
  349. package/types/control/selection/Selection.d.ts +0 -49
  350. package/types/control/selection/SelectionScene.d.ts +0 -32
  351. package/types/control/timeline/TimelineControl.d.ts +0 -10
  352. package/types/control/timeline/TimelineModel.d.ts +0 -33
  353. package/types/control/timeline/TimelineView.d.ts +0 -57
  354. package/types/control/timeline/timelineUtils.d.ts +0 -9
  355. package/types/ellipsoid/Ellipsoid.d.ts +0 -170
  356. package/types/ellipsoid/index.d.ts +0 -3
  357. package/types/ellipsoid/wgs84.d.ts +0 -6
  358. package/types/entity/BaseBillboard.d.ts +0 -215
  359. package/types/entity/Billboard.d.ts +0 -94
  360. package/types/entity/BillboardHandler.d.ts +0 -75
  361. package/types/entity/Entity.d.ts +0 -340
  362. package/types/entity/EntityCollection.d.ts +0 -303
  363. package/types/entity/GeoObject.d.ts +0 -117
  364. package/types/entity/GeoObjectHandler.d.ts +0 -41
  365. package/types/entity/Geometry.d.ts +0 -79
  366. package/types/entity/GeometryHandler.d.ts +0 -76
  367. package/types/entity/Label.d.ts +0 -190
  368. package/types/entity/LabelHandler.d.ts +0 -31
  369. package/types/entity/LabelWorker.d.ts +0 -9
  370. package/types/entity/PointCloud.d.ts +0 -174
  371. package/types/entity/PointCloudHandler.d.ts +0 -38
  372. package/types/entity/Polyline.d.ts +0 -307
  373. package/types/entity/PolylineHandler.d.ts +0 -18
  374. package/types/entity/Ray.d.ts +0 -122
  375. package/types/entity/RayHandler.d.ts +0 -63
  376. package/types/entity/Strip.d.ts +0 -119
  377. package/types/entity/StripHandler.d.ts +0 -38
  378. package/types/entity/index.d.ts +0 -8
  379. package/types/index.d.ts +0 -53
  380. package/types/input/KeyboardHandler.d.ts +0 -17
  381. package/types/input/MouseHandler.d.ts +0 -5
  382. package/types/input/TouchHandler.d.ts +0 -5
  383. package/types/input/input.d.ts +0 -42
  384. package/types/layer/BaseGeoImage.d.ts +0 -116
  385. package/types/layer/CanvasTiles.d.ts +0 -73
  386. package/types/layer/GeoImage.d.ts +0 -51
  387. package/types/layer/GeoTexture2d.d.ts +0 -7
  388. package/types/layer/GeoVideo.d.ts +0 -47
  389. package/types/layer/KML.d.ts +0 -93
  390. package/types/layer/Layer.d.ts +0 -320
  391. package/types/layer/Material.d.ts +0 -45
  392. package/types/layer/Vector.d.ts +0 -211
  393. package/types/layer/WMS.d.ts +0 -66
  394. package/types/layer/XYZ.d.ts +0 -122
  395. package/types/layer/index.d.ts +0 -10
  396. package/types/light/LightSource.d.ts +0 -178
  397. package/types/math/Line2.d.ts +0 -11
  398. package/types/math/Line3.d.ts +0 -10
  399. package/types/math/Mat3.d.ts +0 -65
  400. package/types/math/Mat4.d.ts +0 -176
  401. package/types/math/Plane.d.ts +0 -18
  402. package/types/math/Quat.d.ts +0 -379
  403. package/types/math/Ray.d.ts +0 -82
  404. package/types/math/Vec2.d.ts +0 -309
  405. package/types/math/Vec3.d.ts +0 -472
  406. package/types/math/Vec4.d.ts +0 -161
  407. package/types/math/coder.d.ts +0 -43
  408. package/types/math/index.d.ts +0 -11
  409. package/types/math.d.ts +0 -268
  410. package/types/mercator.d.ts +0 -92
  411. package/types/proj/EPSG3857.d.ts +0 -6
  412. package/types/proj/EPSG4326.d.ts +0 -6
  413. package/types/proj/Proj.d.ts +0 -42
  414. package/types/quadTree/EPSG4326QuadTreeStrategy.d.ts +0 -3
  415. package/types/quadTree/EarthQuadTreeStrategy.d.ts +0 -3
  416. package/types/quadTree/EntityCollectionNode.d.ts +0 -41
  417. package/types/quadTree/MarsQuadTreeStrategy.d.ts +0 -3
  418. package/types/quadTree/Node.d.ts +0 -58
  419. package/types/quadTree/QuadTreeStrategy.d.ts +0 -21
  420. package/types/quadTree/Wgs84QuadTreeStrategy.d.ts +0 -3
  421. package/types/quadTree/index.d.ts +0 -12
  422. package/types/quadTree/quadTree.d.ts +0 -40
  423. package/types/renderer/Renderer.d.ts +0 -291
  424. package/types/renderer/RendererEvents.d.ts +0 -241
  425. package/types/res/images.d.ts +0 -2
  426. package/types/scene/Axes.d.ts +0 -10
  427. package/types/scene/BaseNode.d.ts +0 -60
  428. package/types/scene/Planet.d.ts +0 -594
  429. package/types/scene/RenderNode.d.ts +0 -152
  430. package/types/scene/SkyBox.d.ts +0 -9
  431. package/types/scene/index.d.ts +0 -4
  432. package/types/segment/Segment.d.ts +0 -273
  433. package/types/segment/SegmentLonLat.d.ts +0 -22
  434. package/types/segment/SegmentLonLatWgs84.d.ts +0 -4
  435. package/types/segment/Slice.d.ts +0 -10
  436. package/types/segment/segmentHelper.d.ts +0 -13
  437. package/types/shaders/atmos.d.ts +0 -4
  438. package/types/shaders/billboard.d.ts +0 -3
  439. package/types/shaders/depth.d.ts +0 -2
  440. package/types/shaders/drawnode.d.ts +0 -8
  441. package/types/shaders/geoObject.d.ts +0 -3
  442. package/types/shaders/label.d.ts +0 -4
  443. package/types/shaders/pickingMask.d.ts +0 -2
  444. package/types/shaders/pointCloud.d.ts +0 -2
  445. package/types/shaders/polyline.d.ts +0 -3
  446. package/types/shaders/ray.d.ts +0 -2
  447. package/types/shaders/screenFrame.d.ts +0 -2
  448. package/types/shaders/skybox.d.ts +0 -2
  449. package/types/shaders/toneMapping.d.ts +0 -2
  450. package/types/shaders/utils.d.ts +0 -1
  451. package/types/terrain/BilTerrain.d.ts +0 -14
  452. package/types/terrain/EmptyTerrain.d.ts +0 -87
  453. package/types/terrain/Geoid.d.ts +0 -17
  454. package/types/terrain/GlobusTerrain.d.ts +0 -122
  455. package/types/terrain/MapboxTerrain.d.ts +0 -14
  456. package/types/terrain/index.d.ts +0 -5
  457. package/types/ui/Button.d.ts +0 -21
  458. package/types/ui/ButtonGroup.d.ts +0 -12
  459. package/types/ui/Dialog.d.ts +0 -41
  460. package/types/ui/Slider.d.ts +0 -33
  461. package/types/ui/ToggleButton.d.ts +0 -10
  462. package/types/ui/UIhelpers.d.ts +0 -13
  463. package/types/ui/View.d.ts +0 -33
  464. package/types/ui/icons.d.ts +0 -1
  465. package/types/utils/BaseWorker.d.ts +0 -14
  466. package/types/utils/FontAtlas.d.ts +0 -16
  467. package/types/utils/GeoImageCreator.d.ts +0 -30
  468. package/types/utils/ImagesCacheManager.d.ts +0 -10
  469. package/types/utils/Loader.d.ts +0 -31
  470. package/types/utils/NormalMapCreator.d.ts +0 -39
  471. package/types/utils/PlainSegmentWorker.d.ts +0 -8
  472. package/types/utils/TerrainWorker.d.ts +0 -7
  473. package/types/utils/TextureAtlas.d.ts +0 -113
  474. package/types/utils/VectorTileCreator.d.ts +0 -14
  475. package/types/utils/colorTable.d.ts +0 -143
  476. package/types/utils/earcut.d.ts +0 -6
  477. package/types/utils/functionComposition.d.ts +0 -5
  478. package/types/utils/objParser.d.ts +0 -8
  479. package/types/utils/shared.d.ts +0 -241
  480. package/types/utils/units.d.ts +0 -20
  481. package/types/webgl/Framebuffer.d.ts +0 -134
  482. package/types/webgl/Handler.d.ts +0 -403
  483. package/types/webgl/Multisample.d.ts +0 -91
  484. package/types/webgl/Program.d.ts +0 -163
  485. package/types/webgl/ProgramController.d.ts +0 -89
  486. package/types/webgl/callbacks.d.ts +0 -1
  487. package/types/webgl/index.d.ts +0 -6
  488. package/types/webgl/types.d.ts +0 -2
  489. /package/{src/og → dist/@openglobus/res/fonts}/arial.js +0 -0
  490. /package/src/{og/ui/icons.js → ui/icons.ts} +0 -0
@@ -1,8 +1,8 @@
1
- "use strict";
2
-
3
- import { Control } from "./Control.js";
4
- import { ToggleButton } from "../ui/ToggleButton.js";
5
- import { Dialog } from "../ui/Dialog.js";
1
+ import {Control, IControlParams} from "./Control";
2
+ import {Dialog} from "../ui/Dialog";
3
+ import {ToggleButton} from "../ui/ToggleButton";
4
+ import {GlobusTerrain} from "../terrain/GlobusTerrain";
5
+ import {CanvasTiles} from "../layer/CanvasTiles";
6
6
 
7
7
  const ICON_LOCK_BUTTON_SVG = `<?xml version="1.0" encoding="utf-8"?>
8
8
  <!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
@@ -52,17 +52,30 @@ const ICON_BUTTON_SVG = `<?xml version="1.0" encoding="iso-8859-1"?>
52
52
  </g>
53
53
  </svg>`;
54
54
 
55
- /**
56
- * Debug information
57
- * @class
58
- * @extends {Control}
59
- * @param {Object} [options] - Control options.
60
- */
61
- class DebugInfo extends Control {
62
- /**
63
- * @param {Object} [options] - Control options.
64
- */
65
- constructor(options = {}) {
55
+ const ICON_CANVASTILES_SVG = `<?xml version="1.0"?>
56
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
57
+ <path d="M 4 4 L 4 8 L 8 8 L 8 4 L 4 4 z M 10 4 L 10 8 L 14 8 L 14 4 L 10 4 z M 16 4 L 16 8 L 20 8 L 20 4 L 16 4 z M 4 10 L 4 14 L 8 14 L 8 10 L 4 10 z M 10 10 L 10 14 L 14 14 L 14 10 L 10 10 z M 16 10 L 16 14 L 20 14 L 20 10 L 16 10 z M 4 16 L 4 20 L 8 20 L 8 16 L 4 16 z M 10 16 L 10 20 L 14 20 L 14 16 L 10 16 z M 16 16 L 16 20 L 20 20 L 20 16 L 16 16 z"/>
58
+ </svg>`;
59
+
60
+ export interface IDebugInfoWatch {
61
+ label: string;
62
+ valEl?: HTMLElement;
63
+ frame?: () => string | number;
64
+ }
65
+
66
+ interface IDebugInfoParams extends IControlParams {
67
+ watch?: IDebugInfoWatch[];
68
+ }
69
+
70
+ export class DebugInfo extends Control {
71
+ public el: HTMLElement | null;
72
+ protected _watch: IDebugInfoWatch[];
73
+ protected _toggleBtn: ToggleButton;
74
+ protected _dialog: Dialog<null>;
75
+
76
+ protected _canvasTiles: CanvasTiles;
77
+
78
+ constructor(options: IDebugInfoParams = {}) {
66
79
  if (!options.name || options.name === "") {
67
80
  options.name = "DebugInfo";
68
81
  }
@@ -84,34 +97,83 @@ class DebugInfo extends Control {
84
97
  width: 480
85
98
  });
86
99
 
87
- this._dialog.on("visibility", (v) => {
100
+ this._dialog.events.on("visibility", (v: boolean) => {
88
101
  this._toggleBtn.setActive(v);
89
102
  });
103
+
104
+ this._canvasTiles = new CanvasTiles("Tile grid", {
105
+ visibility: true,
106
+ isBaseLayer: false,
107
+ drawTile: function (material: any, applyCanvas: any) {
108
+
109
+ //
110
+ // This is important create canvas here!
111
+ //
112
+ let cnv = document.createElement("canvas");
113
+ let ctx = cnv.getContext("2d")!;
114
+ cnv.width = 256;
115
+ cnv.height = 256;
116
+
117
+ //Clear canvas
118
+ ctx.clearRect(0, 0, cnv.width, cnv.height);
119
+
120
+ //Draw border
121
+ ctx.beginPath();
122
+ ctx.rect(0, 0, cnv.width, cnv.height);
123
+ ctx.lineWidth = 2;
124
+ ctx.strokeStyle = 'black';
125
+ ctx.stroke();
126
+
127
+ let size;
128
+
129
+ if (material.segment.isPole) {
130
+ let ext = material.segment.getExtentLonLat();
131
+
132
+ ctx.fillStyle = 'black';
133
+ ctx.font = 'normal ' + 29 + 'px Verdana';
134
+
135
+ ctx.textAlign = 'center';
136
+ ctx.fillText(`${ext.northEast.lon.toFixed(3)} ${ext.northEast.lat.toFixed(3)}`, cnv.width / 2, cnv.height / 2 + 20);
137
+ ctx.fillText(`${ext.southWest.lon.toFixed(3)} ${ext.southWest.lat.toFixed(3)}`, cnv.width / 2, cnv.height / 2 - 20);
138
+ } else {
139
+ //Draw text
140
+ if (material.segment.tileZoom > 14) {
141
+ size = "26";
142
+ } else {
143
+ size = "32";
144
+ }
145
+ ctx.fillStyle = 'black';
146
+ ctx.font = 'normal ' + size + 'px Verdana';
147
+ ctx.textAlign = 'center';
148
+ ctx.fillText(material.segment.tileX + "," + material.segment.tileY + "," + material.segment.tileZoom, cnv.width / 2, cnv.height / 2);
149
+ }
150
+
151
+ //Draw canvas tile
152
+ applyCanvas(cnv);
153
+ }
154
+ });
90
155
  }
91
156
 
92
- addWatches(watches) {
157
+ public addWatches(watches: IDebugInfoWatch[]) {
93
158
  for (let i = 0; i < watches.length; i++) {
94
159
  this.addWatch(watches[i]);
95
160
  }
96
161
  }
97
162
 
98
- addWatch(watch) {
163
+ public addWatch(watch: IDebugInfoWatch) {
99
164
  this._watch.push(watch);
100
165
  let watchEl = document.createElement("div");
101
166
  watchEl.classList.add("og-watch-line");
102
- watchEl.innerHTML =
103
- '<div class="og-watch-label">' +
104
- watch.label +
105
- '</div><div class="og-watch-value"></div>';
106
- watch.valEl = watchEl.querySelector(".og-watch-value");
107
- this.el.appendChild(watchEl);
167
+ watchEl.innerHTML = `<div class="og-watch-label">${watch.label}</div><div class="og-watch-value"></div>`;
168
+ watch.valEl = watchEl.querySelector<HTMLElement>(".og-watch-value")!;
169
+ this.el!.appendChild(watchEl);
108
170
  }
109
171
 
110
- oninit() {
172
+ public override oninit() {
111
173
 
112
- this._toggleBtn.appendTo(this.renderer.div);
113
- this._dialog.appendTo(this.renderer.div);
114
- this._toggleBtn.on("change", (isActive) => {
174
+ this._toggleBtn.appendTo(this.renderer!.div!);
175
+ this._dialog.appendTo(this.renderer!.div!);
176
+ this._toggleBtn.events.on("change", (isActive: boolean) => {
115
177
  this._dialog.setVisibility(isActive);
116
178
  });
117
179
 
@@ -122,21 +184,21 @@ class DebugInfo extends Control {
122
184
  $controls.classList.add("og-debuginfo_controls");
123
185
  this.el.appendChild($controls);
124
186
 
125
- var temp = this._watch;
187
+ let temp = this._watch;
126
188
  this._watch = [];
127
189
  for (let i = 0; i < temp.length; i++) {
128
190
  this.addWatch(temp[i]);
129
191
  }
130
- this._dialog.container.appendChild(this.el);
131
- this.renderer.events.on("draw", this._frame, this);
192
+ this._dialog.container?.appendChild(this.el);
193
+ this.renderer!.events.on("draw", this._frame, this);
132
194
 
133
- let p = this.planet;
195
+ let p = this.planet!;
134
196
 
135
197
  if (p) {
136
198
  this.addWatches([
137
199
  {
138
200
  label: "Nodes count",
139
- frame: () => p._renderedNodes.length
201
+ frame: () => p!._renderedNodes.length
140
202
  },
141
203
  {
142
204
  label: "createdNodes",
@@ -152,7 +214,7 @@ class DebugInfo extends Control {
152
214
  },
153
215
  {
154
216
  label: "maxZoom/minZoom",
155
- frame: () => p.maxCurrZoom + " / " + p.minCurrZoom
217
+ frame: () => p.maxCurrZoom + " / " + p?.minCurrZoom
156
218
  },
157
219
  {
158
220
  label: "viewExtent",
@@ -163,8 +225,7 @@ class DebugInfo extends Control {
163
225
  frame: () =>
164
226
  `<div style="width:190px">${(p.camera._lonLat.height / 1000.0).toFixed(2) +
165
227
  " / " +
166
- (p.camera.getAltitude() / 1000.0).toFixed(2)
167
- }</div>`
228
+ (p.camera.getAltitude() / 1000.0).toFixed(2)}</div>`
168
229
  },
169
230
  {
170
231
  label: "cam.slope",
@@ -177,11 +238,11 @@ class DebugInfo extends Control {
177
238
  {
178
239
  label: "deltaTime/FPS",
179
240
  frame: () =>
180
- `<div style="width:70px"><div style="width:20px; float: left;">${Math.round(
181
- p.renderer.handler.deltaTime
182
- )}</div> <div style="float: left">${Math.round(
183
- 1000.0 / p.renderer.handler.deltaTime
184
- )}</div></div>`
241
+ `<div style="width:70px"><div style="width:20px; float: left;">
242
+ ${Math.round(p.renderer!.handler.deltaTime)}
243
+ </div> <div style="float: left">
244
+ ${Math.round(1000.0 / p.renderer!.handler.deltaTime)}
245
+ </div></div>`
185
246
  },
186
247
  {
187
248
  label: "-------------------------"
@@ -196,34 +257,32 @@ class DebugInfo extends Control {
196
257
  },
197
258
  {
198
259
  label: "PlainWorker",
199
- frame: () => p._plainSegmentWorker._pendingQueue.length
260
+ frame: () => p._plainSegmentWorker.pendingQueue.length
200
261
  },
201
262
  {
202
263
  label: "TileLoader",
203
- frame: () => p._tileLoader._loading + " " + p._tileLoader._queue.length
264
+ frame: () => `${p._tileLoader.loading} ${p._tileLoader.queue.length}`
204
265
  },
205
266
  {
206
267
  label: "TerrainLoader",
207
268
  frame: () => {
208
- if (p.terrain && p.terrain._loader) {
209
- return (
210
- p.terrain._loader._loading + " " + p.terrain._loader._queue.length
211
- );
269
+ if (p.terrain && !p.terrain.isEmpty) {
270
+ return `${(p.terrain as GlobusTerrain).loader.loading} ${(p.terrain as GlobusTerrain).loader.queue.length}`
212
271
  }
213
272
  return "";
214
273
  }
215
274
  },
216
275
  {
217
276
  label: "TerrainWorker",
218
- frame: () => p._terrainWorker._pendingQueue.length
277
+ frame: () => p._terrainWorker.pendingQueue.length
219
278
  },
220
279
  {
221
280
  label: "NormalMapCreator",
222
- frame: () => p._normalMapCreator._queue.length
281
+ frame: () => p._normalMapCreator.queueSize
223
282
  },
224
283
  {
225
284
  label: "VectorTileCreator",
226
- frame: () => p._vectorTileCreator._queue.length
285
+ frame: () => p._vectorTileCreator.queueSize
227
286
  }
228
287
  ]);
229
288
  }
@@ -235,25 +294,34 @@ class DebugInfo extends Control {
235
294
  });
236
295
  lockTreeBtn.appendTo($controls);
237
296
 
238
- lockTreeBtn.on("change", (isActive) => {
297
+ lockTreeBtn.events.on("change", (isActive: boolean) => {
239
298
  if (isActive) {
240
299
  p.lockQuadTree();
241
300
  } else {
242
301
  p.unlockQuadTree();
243
302
  }
244
303
  });
304
+
305
+ let canvasTilesBtn = new ToggleButton({
306
+ classList: ["og-debuginfo_controls-button"],
307
+ icon: ICON_CANVASTILES_SVG,
308
+ title: "Show/Hide grid"
309
+ });
310
+ canvasTilesBtn.appendTo($controls);
311
+
312
+ canvasTilesBtn.events.on("change", (isActive: boolean) => {
313
+ if (isActive) {
314
+ this.planet!.addLayer(this._canvasTiles);
315
+ } else {
316
+ this._canvasTiles.remove();
317
+ }
318
+ });
245
319
  }
246
320
 
247
- _frame() {
321
+ protected _frame() {
248
322
  for (let i = 0; i < this._watch.length; i++) {
249
- var w = this._watch[i];
250
- w.valEl.innerHTML = w.frame ? w.frame() : "";
323
+ let w = this._watch[i];
324
+ w.valEl!.innerHTML = w.frame ? String(w.frame()) : "";
251
325
  }
252
326
  }
253
- }
254
-
255
- export function debugInfo(options) {
256
- return new DebugInfo(options);
257
- }
258
-
259
- export { DebugInfo };
327
+ }
@@ -1,9 +1,7 @@
1
- "use strict";
2
-
3
- import { ToggleButton } from "../ui/ToggleButton.js";
4
- import { Control } from "./Control.js";
5
- import { DrawingControl } from "./drawing/DrawingControl.js";
6
- import { ButtonGroup } from "../ui/ButtonGroup.js";
1
+ import {ButtonGroup} from "../ui/ButtonGroup";
2
+ import {Control} from "./Control";
3
+ import {DrawingControl} from "./drawing/DrawingControl";
4
+ import {ToggleButton} from "../ui/ToggleButton";
7
5
 
8
6
  const ICON_POLYGON_SVG = `<?xml version="1.0" encoding="utf-8"?>
9
7
  <!-- Generator: Adobe Illustrator 24.1.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
@@ -41,11 +39,10 @@ const ICON_DEFAULT_SVG = `<svg xmlns="http://www.w3.org/2000/svg" width="24" hei
41
39
 
42
40
  /**
43
41
  * Activate drawing control
44
- * @class
45
- * @extends {Control}
46
- * @param {Object} [options] - Control options.
47
42
  */
48
- class DrawingSwitcher extends Control {
43
+ export class DrawingSwitcher extends Control {
44
+ public drawingControl: DrawingControl;
45
+
49
46
  constructor(options = {}) {
50
47
  super({
51
48
  name: "DrawingSwitcher",
@@ -55,20 +52,20 @@ class DrawingSwitcher extends Control {
55
52
  this.drawingControl = new DrawingControl();
56
53
  }
57
54
 
58
- oninit() {
59
- this.planet.addControl(this.drawingControl);
55
+ public override oninit() {
56
+ this.planet!.addControl(this.drawingControl);
60
57
  this._createMenu();
61
58
  }
62
59
 
63
- onactivate() {
60
+ public override onactivate() {
64
61
  this.drawingControl.activate();
65
62
  }
66
63
 
67
- ondeactivate() {
64
+ public override ondeactivate() {
68
65
  this.drawingControl.deactivate();
69
66
  }
70
67
 
71
- _createMenu() {
68
+ protected _createMenu() {
72
69
 
73
70
  let defaultBtn = new ToggleButton({
74
71
  classList: ["og-map-button", "og-drawing-default_button"],
@@ -95,7 +92,7 @@ class DrawingSwitcher extends Control {
95
92
  ]
96
93
  });
97
94
 
98
- buttons.on("change", (btn) => {
95
+ buttons.events.on("change", (btn: ToggleButton) => {
99
96
  this.drawingControl.deactivate();
100
97
  switch (btn.name) {
101
98
  case "polygon":
@@ -107,11 +104,8 @@ class DrawingSwitcher extends Control {
107
104
  }
108
105
  });
109
106
 
110
- defaultBtn.appendTo(this.renderer.div)
111
- polyBtn.appendTo(this.renderer.div);
112
- lineBtn.appendTo(this.renderer.div);
107
+ defaultBtn.appendTo(this.renderer!.div!)
108
+ polyBtn.appendTo(this.renderer!.div!);
109
+ lineBtn.appendTo(this.renderer!.div!);
113
110
  }
114
111
  }
115
-
116
- export { DrawingSwitcher };
117
-
@@ -0,0 +1,222 @@
1
+ import * as units from '../utils/units';
2
+ import {Control, IControlParams} from './Control';
3
+ import {heightMode} from '../utils/units';
4
+ import {LonLat} from '../LonLat';
5
+ import {throttle} from '../utils/shared';
6
+ import {IMouseState} from "../renderer/RendererEvents";
7
+
8
+ interface IEarthCoordinatesParams extends IControlParams {
9
+ heightMode?: string;
10
+ centerMode?: boolean;
11
+ altitudeUnit?: string;
12
+ type?: number
13
+ }
14
+
15
+ const DECIMAL_TEMPLATE =
16
+ `<div class="og-lat-side"></div><div class="og-lat-val"></div>
17
+ <div class="og-lon-side"></div><div class="og-lon-val"></div>
18
+ <div class="og-height"></div>
19
+ <div class="og-units-height"></div>`;
20
+
21
+ const DEGREE_TEMPLATE =
22
+ `<div class="og-lat-side"></div><div class="og-lat-val"></div>
23
+ <div class="og-lon-side"></div><div class="og-lon-val"></div>
24
+ <div class="og-height"></div>
25
+ <div class="og-units-height"></div>`;
26
+
27
+ const CENTER_SVG = '<svg width="12" height="12"><g><path stroke-width="1" stroke-opacity="1" d="M6 0L6 12M0 6L12 6" stroke="#337ab7"></path></g></svg>';
28
+
29
+ const TYPE_HTML = [DECIMAL_TEMPLATE, DEGREE_TEMPLATE];
30
+
31
+ /**
32
+ * Control displays mouse or screen center Earth coordinates.
33
+ * @param {Boolean} [options.center] - Earth coordinates by screen center otherwise mouse pointer. False is default.
34
+ * @param {Boolean} [options.type] - Coordinates shown: 0 - is decimal degrees, 1 - degrees, 2 - mercator geodetic coordinates.
35
+ */
36
+ export class EarthCoordinates extends Control {
37
+ protected _type: number;
38
+ protected _TYPE_FUNC: ((ll?: LonLat | null) => void)[];
39
+ protected _showFn: ((ll?: LonLat | null) => void) | null;
40
+ protected _lonLat: LonLat | null;
41
+ protected _latSideEl: HTMLElement | null;
42
+ protected _lonSideEl: HTMLElement | null;
43
+ protected _latValEl: HTMLElement | null;
44
+ protected _lonValEl: HTMLElement | null;
45
+ protected _heightEl: HTMLElement | null;
46
+ protected _altUnitVal: string;
47
+ protected _heightModeVal: string;
48
+ protected _altUnit: number;
49
+ protected _heightMode: number;
50
+ protected _centerMode: boolean;
51
+ protected _el: HTMLElement | null;
52
+
53
+ constructor(options: IEarthCoordinatesParams = {}) {
54
+ super(options);
55
+
56
+ this._type = options.type || 0;
57
+
58
+ this._TYPE_FUNC = [this._SHOW_DECIMAL, this._SHOW_DEGREE];
59
+
60
+ this._showFn = null;
61
+
62
+ this._el = null;
63
+ this._latSideEl = null;
64
+ this._lonSideEl = null;
65
+ this._latValEl = null;
66
+ this._lonValEl = null;
67
+ this._heightEl = null;
68
+
69
+ this._altUnitVal = options.altitudeUnit || "m";
70
+ this._heightModeVal = options.heightMode || "ell";
71
+
72
+ this._altUnit = (units as any)[this._altUnitVal];
73
+ this._heightMode = heightMode[this._heightModeVal];
74
+
75
+ this._lonLat = null;
76
+
77
+ this._centerMode = options.centerMode != undefined ? options.centerMode : true;
78
+ }
79
+
80
+ protected _SHOW_DECIMAL(ll?: LonLat | null) {
81
+ if (ll) {
82
+ let lat = ll.lat,
83
+ lon = ll.lon;
84
+
85
+ if (lat >= 0) {
86
+ this._latSideEl!.innerHTML = 'N';
87
+ } else {
88
+ this._latSideEl!.innerHTML = 'S';
89
+ }
90
+
91
+ if (lon >= 0) {
92
+ this._lonSideEl!.innerHTML = 'E';
93
+ } else {
94
+ this._lonSideEl!.innerHTML = 'W';
95
+ }
96
+
97
+ this._latValEl!.innerHTML = Math.abs(lat).toFixed(5) + '°';
98
+ this._lonValEl!.innerHTML = Math.abs(lon).toFixed(5) + '°';
99
+ }
100
+ }
101
+
102
+ protected _SHOW_DEGREE(ll?: LonLat | null) {
103
+ if (ll) {
104
+ let lat = ll.lat,
105
+ lon = ll.lon;
106
+
107
+ if (lat >= 0) {
108
+ this._latSideEl!.innerHTML = 'N';
109
+ } else {
110
+ this._latSideEl!.innerHTML = 'S';
111
+ }
112
+
113
+ if (lon >= 0) {
114
+ this._lonSideEl!.innerHTML = 'E';
115
+ } else {
116
+ this._lonSideEl!.innerHTML = 'W';
117
+ }
118
+
119
+ let t = 0;
120
+
121
+ let deg = lat < 0 ? Math.ceil(lat) : Math.floor(lat);
122
+ let min = Math.floor(t = Math.abs((lat - deg)) * 60);
123
+ let sec = Math.floor((t - min) * 6000) / 100.0;
124
+ this._latValEl!.innerHTML = Math.abs(deg) + '°' + min + "'" + sec.toFixed(0) + '"';
125
+
126
+ deg = lon < 0 ? Math.ceil(lon) : Math.floor(lon);
127
+ min = Math.floor(t = Math.abs((lon - deg)) * 60);
128
+ sec = Math.floor((t - min) * 6000) / 100.0;
129
+ this._lonValEl!.innerHTML = Math.abs(deg) + '°' + min + "'" + sec.toFixed(0) + '"';
130
+ }
131
+ }
132
+
133
+ protected _createCenterEl(): HTMLElement {
134
+ let el = document.createElement('div');
135
+ el.className = 'og-center-icon';
136
+ el.innerHTML = CENTER_SVG;
137
+ return el;
138
+ }
139
+
140
+ protected _updateUnits() {
141
+ this._heightMode = heightMode[this._heightModeVal];
142
+ this._altUnit = (units as any)[this._altUnitVal];
143
+ this._el!.querySelector(".og-units-height")!.innerHTML = units.toString(this._altUnit);
144
+ this._showHeight();
145
+ }
146
+
147
+ protected _refreshCoordinates() {
148
+
149
+ if (this._type >= this._TYPE_FUNC.length) {
150
+ this._type = 0;
151
+ }
152
+
153
+ let el = this._el!;
154
+
155
+ el.innerHTML = TYPE_HTML[this._type];
156
+
157
+ this._latSideEl = el.querySelector(".og-lat-side");
158
+ this._lonSideEl = el.querySelector(".og-lon-side");
159
+ this._latValEl = el.querySelector(".og-lat-val");
160
+ this._lonValEl = el.querySelector(".og-lon-val");
161
+ this._heightEl = el.querySelector(".og-height");
162
+
163
+ this._showFn = this._TYPE_FUNC[this._type];
164
+ this._showFn(this._lonLat);
165
+ }
166
+
167
+ public override oninit() {
168
+ this._el = document.createElement('div');
169
+ this._el.classList.add("og-coordinates");
170
+
171
+ this.renderer!.div!.appendChild(this._el);
172
+
173
+ this._el.addEventListener("click", () => {
174
+ this._type++;
175
+ this._refreshCoordinates();
176
+ this._updateUnits();
177
+ this._showHeight();
178
+ });
179
+
180
+ if (this._centerMode) {
181
+ this.renderer!.div!.appendChild(this._createCenterEl());
182
+ this.planet!.camera.events.on("moveend", this._grabCoordinates, this);
183
+ this.planet!.camera.events.on("moveend", throttle(() => this._showHeight(), 400, true), this);
184
+ } else {
185
+ this.renderer!.events.on("mousemove", this._grabCoordinates, this);
186
+ this.renderer!.events.on("mousestop", throttle(() => this._showHeight(), 400, true), this);
187
+ }
188
+
189
+ this._refreshCoordinates();
190
+
191
+ this._updateUnits();
192
+ }
193
+
194
+ protected _grabCoordinates(e: IMouseState) {
195
+ let px = e.pos;
196
+ let scrPx;
197
+ let r = this.renderer;
198
+ if (this._centerMode) {
199
+ scrPx = r!.handler.getCenter();
200
+ } else {
201
+ scrPx = px;
202
+ }
203
+ this._lonLat = this.planet!.getLonLatFromPixelTerrain(scrPx) || null;
204
+ this._showFn!(this._lonLat);
205
+ }
206
+
207
+ protected async _showHeight() {
208
+ if (this._lonLat && this.planet) {
209
+ let alt = 0;
210
+ this._heightEl!.style.opacity = "0.7";
211
+ if (this._heightMode === heightMode.ell) {
212
+ alt = await this.planet.getHeightAboveELL(this._lonLat);
213
+ alt = Number(units.convertExt(true, units.m, this._altUnit, alt));
214
+ } else if (this._heightMode === heightMode.msl) {
215
+ alt = await this.planet.getHeightDefault(this._lonLat);
216
+ alt = Number(units.convertExt(true, units.m, this._altUnit, alt));
217
+ }
218
+ this._heightEl!.style.opacity = "1.0";
219
+ this._heightEl!.innerHTML = alt.toString();
220
+ }
221
+ }
222
+ }