@openglobus/og 0.17.1 → 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.
- package/README.md +75 -46
- package/dist/@openglobus/og.esm.js +1 -20
- package/dist/@openglobus/og.esm.js.map +1 -1
- package/dist/@openglobus/og.umd.js +1 -20
- package/dist/@openglobus/og.umd.js.map +1 -1
- package/dist/@openglobus/res/fonts/Karla-Bold.json +5252 -0
- package/dist/@openglobus/res/fonts/Karla-Bold.ttf.cfg +920 -0
- package/dist/@openglobus/res/fonts/Karla-Bold.ttf.png +0 -0
- package/dist/@openglobus/res/fonts/Karla-Light.json +5252 -0
- package/dist/@openglobus/res/fonts/Karla-Light.ttf.cfg +830 -0
- package/dist/@openglobus/res/fonts/Karla-Light.ttf.png +0 -0
- package/dist/@openglobus/res/fonts/Karla-Medium.json +5252 -0
- package/dist/@openglobus/res/fonts/Karla-Medium.ttf.cfg +1196 -0
- package/dist/@openglobus/res/fonts/Karla-Medium.ttf.png +0 -0
- package/dist/@openglobus/res/fonts/NotoSansArabic-Regular.json +3332 -0
- package/dist/@openglobus/res/fonts/NotoSansArabic-Regular.ttf.cfg +1370 -0
- package/dist/@openglobus/res/fonts/NotoSansArabic-Regular.ttf.png +0 -0
- package/dist/@openglobus/res/fonts/Roboto-Regular.json +37147 -0
- package/dist/@openglobus/res/fonts/Roboto-Regular.ttf.cfg +1340 -0
- package/dist/@openglobus/res/fonts/Roboto-Regular.ttf.png +0 -0
- package/dist/@openglobus/res/fonts/arial.json +4321 -0
- package/dist/@openglobus/res/fonts/arial.ttf.cfg +1570 -0
- package/dist/@openglobus/res/fonts/arial.ttf.png +0 -0
- package/dist/@openglobus/res/night-4326.png +0 -0
- package/dist/@openglobus/res/night.png +0 -0
- package/dist/@openglobus/res/spec.png +0 -0
- package/package.json +25 -23
- package/src/{og/Clock.js → Clock.ts} +100 -78
- package/src/Deferred.ts +17 -0
- package/src/Events.ts +200 -0
- package/src/{og/Extent.js → Extent.ts} +324 -352
- package/src/Globe.ts +363 -0
- package/src/{og/ImageCanvas.js → ImageCanvas.ts} +244 -236
- package/src/Lock.ts +41 -0
- package/src/{og/LonLat.js → LonLat.ts} +50 -47
- package/src/{og/Object3d.js → Object3d.ts} +89 -55
- package/src/Popup.ts +228 -0
- package/src/{og/QueueArray.js → QueueArray.ts} +76 -75
- package/src/{og/Rectangle.js → Rectangle.ts} +115 -111
- package/src/Stack.ts +58 -0
- package/src/{og/astro/astro.js → astro/astro.ts} +49 -51
- package/src/{og/astro/earth.js → astro/earth.ts} +8 -9
- package/src/{og/astro/jd.js → astro/jd.ts} +92 -111
- package/src/{og/astro/orbit.js → astro/orbit.ts} +35 -37
- package/src/{og/astro/rotation.js → astro/rotation.ts} +4 -6
- package/src/{og/bv/Box.js → bv/Box.ts} +21 -17
- package/src/{og/bv/Sphere.js → bv/Sphere.ts} +21 -19
- package/src/bv/index.ts +4 -0
- package/src/{og/camera/Camera.js → camera/Camera.ts} +254 -197
- package/src/{og/camera/Frustum.js → camera/Frustum.ts} +137 -111
- package/src/{og/camera/PlanetCamera.js → camera/PlanetCamera.ts} +248 -185
- package/src/camera/index.ts +4 -0
- package/src/{og/cons.js → cons.ts} +14 -18
- package/src/{og/control/Atmosphere.js → control/Atmosphere.ts} +50 -50
- package/src/{og/control/CompassButton.js → control/CompassButton.ts} +27 -30
- package/src/{og/control/Control.js → control/Control.ts} +76 -70
- package/src/{og/control/DebugInfo.js → control/DebugInfo.ts} +130 -62
- package/src/{og/control/DrawingSwitcher.js → control/DrawingSwitcher.ts} +16 -22
- package/src/control/EarthCoordinates.ts +222 -0
- package/src/control/EarthNavigation.ts +293 -0
- package/src/{og/control/GeoImageDragControl.js → control/GeoImageDragControl.ts} +37 -29
- package/src/control/KeyboardNavigation.ts +168 -0
- package/src/{og/control/LayerAnimation.js → control/LayerAnimation.ts} +74 -90
- package/src/control/LayerSwitcher.ts +76 -0
- package/src/{og/control/Lighting.js → control/Lighting.ts} +158 -120
- package/src/control/MouseNavigation.ts +468 -0
- package/src/control/MouseWheelZoomControl.ts +269 -0
- package/src/{og/control/RulerSwitcher.js → control/RulerSwitcher.ts} +18 -20
- package/src/control/ScaleControl.ts +131 -0
- package/src/control/SegmentBoundVisualization.ts +50 -0
- package/src/control/ShowFps.ts +28 -0
- package/src/control/SimpleNavigation.ts +118 -0
- package/src/{og/control/SimpleSkyBackground.js → control/SimpleSkyBackground.ts} +36 -38
- package/src/{og/control/Sun.js → control/Sun.ts} +56 -64
- package/src/control/ToggleWireframe.ts +35 -0
- package/src/control/TouchNavigation.ts +368 -0
- package/src/control/ZoomControl.ts +111 -0
- package/src/control/drawing/DrawingControl.ts +45 -0
- package/src/{og/control/drawing/LineStringDrawingScene.js → control/drawing/LineStringDrawingScene.ts} +28 -35
- package/src/{og/control/drawing/PolygonDrawingScene.js → control/drawing/PolygonDrawingScene.ts} +148 -201
- package/src/{og/control/elevationProfile/ElevationProfile.js → control/elevationProfile/ElevationProfile.ts} +70 -36
- package/src/control/heightRuler/HeightRuler.ts +16 -0
- package/src/{og/control/heightRuler/HeightRulerScene.js → control/heightRuler/HeightRulerScene.ts} +92 -87
- package/src/{og/control/heightRuler/HeightRulerSwitcher.js → control/heightRuler/HeightRulerSwitcher.ts} +3 -3
- package/src/control/index.ts +45 -0
- package/src/control/ruler/Ruler.ts +35 -0
- package/src/{og/control/ruler/RulerScene.js → control/ruler/RulerScene.ts} +163 -121
- package/src/{og/control/selection/Selection.js → control/selection/Selection.ts} +23 -21
- package/src/{og/control/selection/SelectionScene.js → control/selection/SelectionScene.ts} +64 -50
- package/src/{og/control/timeline/TimelineControl.js → control/timeline/TimelineControl.ts} +37 -28
- package/src/{og/control/timeline/TimelineModel.js → control/timeline/TimelineModel.ts} +50 -35
- package/src/{og/control/timeline/TimelineView.js → control/timeline/TimelineView.ts} +162 -113
- package/src/{og/control/timeline/timelineUtils.js → control/timeline/timelineUtils.ts} +11 -10
- package/src/{og/control → control}/visibleExtent/Segment.js +5 -5
- package/src/{og/control → control}/visibleExtent/VisibleExtent.js +8 -15
- package/src/{og/control/visibleExtent/drawnode.js → control/visibleExtent/drawnode.ts} +1 -3
- package/src/{og/ellipsoid/Ellipsoid.js → ellipsoid/Ellipsoid.ts} +113 -59
- package/src/ellipsoid/index.ts +4 -0
- package/src/{og/ellipsoid/wgs84.js → ellipsoid/wgs84.ts} +1 -3
- package/src/{og/entity/BaseBillboard.js → entity/BaseBillboard.ts} +128 -102
- package/src/entity/BaseBillboardHandler.ts +772 -0
- package/src/{og/entity/Billboard.js → entity/Billboard.ts} +77 -47
- package/src/entity/BillboardHandler.ts +135 -0
- package/src/{og/entity/Entity.js → entity/Entity.ts} +285 -226
- package/src/{og/entity/EntityCollection.js → entity/EntityCollection.ts} +340 -247
- package/src/{og/entity/GeoObject.js → entity/GeoObject.ts} +122 -67
- package/src/{og/entity/GeoObjectHandler.js → entity/GeoObjectHandler.ts} +273 -198
- package/src/entity/Geometry.ts +486 -0
- package/src/{og/entity/GeometryHandler.js → entity/GeometryHandler.ts} +383 -541
- package/src/{og/entity/Label.js → entity/Label.ts} +131 -83
- package/src/{og/entity/LabelHandler.js → entity/LabelHandler.ts} +289 -255
- package/src/{og/entity/LabelWorker.js → entity/LabelWorker.ts} +26 -36
- package/src/{og/entity/PointCloud.js → entity/PointCloud.ts} +200 -164
- package/src/entity/PointCloudHandler.ts +125 -0
- package/src/{og/entity/Polyline.js → entity/Polyline.ts} +517 -539
- package/src/{og/entity/PolylineHandler.js → entity/PolylineHandler.ts} +29 -31
- package/src/{og/entity/Ray.js → entity/Ray.ts} +89 -60
- package/src/{og/entity/RayHandler.js → entity/RayHandler.ts} +201 -306
- package/src/{og/entity/Strip.js → entity/Strip.ts} +143 -100
- package/src/{og/entity/StripHandler.js → entity/StripHandler.ts} +76 -72
- package/src/entity/index.ts +12 -0
- package/src/index.ts +173 -0
- package/src/input/KeyboardHandler.ts +196 -0
- package/src/{og/input/MouseHandler.js → input/MouseHandler.ts} +46 -35
- package/src/input/TouchHandler.ts +54 -0
- package/src/{og/input/input.js → input/input.ts} +1 -3
- package/src/{og/layer/BaseGeoImage.js → layer/BaseGeoImage.ts} +174 -107
- package/src/{og/layer/CanvasTiles.js → layer/CanvasTiles.ts} +139 -105
- package/src/{og/layer/GeoImage.js → layer/GeoImage.ts} +62 -52
- package/src/layer/GeoTexture2d.ts +56 -0
- package/src/{og/layer/GeoVideo.js → layer/GeoVideo.ts} +53 -53
- package/src/{og/layer/KML.js → layer/KML.ts} +63 -74
- package/src/{og/layer/Layer.js → layer/Layer.ts} +399 -223
- package/src/{og/layer/Material.js → layer/Material.ts} +40 -35
- package/src/{og/layer/Vector.js → layer/Vector.ts} +319 -267
- package/src/{og/layer/WMS.js → layer/WMS.ts} +76 -64
- package/src/{og/layer/XYZ.js → layer/XYZ.ts} +123 -98
- package/src/layer/index.ts +12 -0
- package/src/{og/light/LightSource.js → light/LightSource.ts} +132 -93
- package/src/{og/math/Line2.js → math/Line2.ts} +11 -8
- package/src/{og/math/Line3.js → math/Line3.ts} +49 -27
- package/src/{og/math/Mat3.js → math/Mat3.ts} +43 -27
- package/src/{og/math/Mat4.js → math/Mat4.ts} +110 -77
- package/src/{og/math/Plane.js → math/Plane.ts} +28 -23
- package/src/{og/math/Quat.js → math/Quat.ts} +238 -222
- package/src/{og/math/Ray.js → math/Ray.ts} +59 -63
- package/src/{og/math/Vec2.js → math/Vec2.ts} +85 -76
- package/src/{og/math/Vec3.js → math/Vec3.ts} +141 -140
- package/src/{og/math/Vec4.js → math/Vec4.ts} +64 -53
- package/src/{og/math/coder.js → math/coder.ts} +30 -27
- package/src/math/index.ts +26 -0
- package/src/{og/math.js → math.ts} +46 -49
- package/src/{og/mercator.js → mercator.ts} +143 -149
- package/src/{og/proj/EPSG3857.js → proj/EPSG3857.ts} +1 -3
- package/src/{og/proj/EPSG4326.js → proj/EPSG4326.ts} +11 -13
- package/src/{og/proj/Proj.js → proj/Proj.ts} +27 -23
- package/src/{og/quadTree/EPSG4326QuadTreeStrategy.js → quadTree/EPSG4326QuadTreeStrategy.ts} +10 -13
- package/src/{og/quadTree/EarthQuadTreeStrategy.js → quadTree/EarthQuadTreeStrategy.ts} +11 -13
- package/src/quadTree/EntityCollectionNode.ts +395 -0
- package/src/{og/quadTree/MarsQuadTreeStrategy.js → quadTree/MarsQuadTreeStrategy.ts} +10 -13
- package/src/{og/quadTree/Node.js → quadTree/Node.ts} +283 -191
- package/src/{og/quadTree/QuadTreeStrategy.js → quadTree/QuadTreeStrategy.ts} +35 -29
- package/src/quadTree/Wgs84QuadTreeStrategy.ts +22 -0
- package/src/quadTree/index.ts +14 -0
- package/src/{og/quadTree/quadTree.js → quadTree/quadTree.ts} +75 -77
- package/src/{og/renderer/Renderer.js → renderer/Renderer.ts} +454 -298
- package/src/{og/renderer/RendererEvents.js → renderer/RendererEvents.ts} +347 -270
- package/src/{og/scene/Axes.js → scene/Axes.ts} +26 -22
- package/src/{og/scene/BaseNode.js → scene/BaseNode.ts} +53 -47
- package/src/{og/scene/Planet.js → scene/Planet.ts} +777 -595
- package/src/{og/scene/RenderNode.js → scene/RenderNode.ts} +105 -91
- package/src/{og/scene/SkyBox.js → scene/SkyBox.ts} +29 -25
- package/src/scene/index.ts +6 -0
- package/src/{og/segment/Segment.js → segment/Segment.ts} +497 -371
- package/src/{og/segment/SegmentLonLat.js → segment/SegmentLonLat.ts} +81 -87
- package/src/{og/segment/SegmentLonLatWgs84.js → segment/SegmentLonLatWgs84.ts} +9 -16
- package/src/{og/segment/Slice.js → segment/Slice.ts} +15 -9
- package/src/{og/segment/segmentHelper.js → segment/segmentHelper.ts} +57 -49
- package/src/{og/shaders/atmos.js → shaders/atmos.ts} +4 -6
- package/src/{og/shaders/billboard.js → shaders/billboard.ts} +3 -5
- package/src/{og/shaders/bloom.js → shaders/bloom.ts} +2 -4
- package/src/{og/shaders/blur.js → shaders/blur.ts} +4 -7
- package/src/{og/shaders/depth.js → shaders/depth.ts} +1 -3
- package/src/{og/shaders/drawnode.js → shaders/drawnode.ts} +19 -21
- package/src/{og/shaders/geoObject.js → shaders/geoObject.ts} +17 -19
- package/src/{og/shaders/label.js → shaders/label.ts} +4 -6
- package/src/{og/shaders/lumFilter.js → shaders/lumFilter.ts} +2 -4
- package/src/{og/shaders/pickingMask.js → shaders/pickingMask.ts} +2 -4
- package/src/{og/shaders/pointCloud.js → shaders/pointCloud.ts} +7 -10
- package/src/{og/shaders/polyline.js → shaders/polyline.ts} +3 -200
- package/src/{og/shaders/ray.js → shaders/ray.ts} +2 -4
- package/src/{og/shaders/screenFrame.js → shaders/screenFrame.ts} +2 -4
- package/src/{og/shaders/skybox.js → shaders/skybox.ts} +7 -9
- package/src/{og/shaders/toneMapping.js → shaders/toneMapping.ts} +2 -4
- package/src/{og/shaders/utils.js → shaders/utils.ts} +0 -2
- package/src/{og/terrain/BilTerrain.js → terrain/BilTerrain.ts} +38 -32
- package/src/terrain/EmptyTerrain.ts +230 -0
- package/src/{og/terrain/Geoid.js → terrain/Geoid.ts} +67 -41
- package/src/{og/terrain/GlobusTerrain.js → terrain/GlobusTerrain.ts} +159 -153
- package/src/{og/terrain/MapboxTerrain.js → terrain/MapboxTerrain.ts} +58 -61
- package/src/terrain/index.ts +6 -0
- package/src/ui/Button.ts +121 -0
- package/src/ui/ButtonGroup.ts +63 -0
- package/src/ui/Dialog.ts +244 -0
- package/src/ui/Slider.ts +188 -0
- package/src/ui/ToggleButton.ts +68 -0
- package/src/{og/ui/View.js → ui/View.ts} +66 -59
- package/src/utils/BaseWorker.ts +60 -0
- package/src/utils/FontAtlas.ts +356 -0
- package/src/{og/utils/GeoImageCreator.js → utils/GeoImageCreator.ts} +45 -29
- package/src/{og/utils/ImagesCacheManager.js → utils/ImagesCacheManager.ts} +85 -70
- package/src/utils/Loader.ts +247 -0
- package/src/{og/utils/NormalMapCreator.js → utils/NormalMapCreator.ts} +114 -77
- package/src/{og/utils/PlainSegmentWorker.js → utils/PlainSegmentWorker.ts} +41 -24
- package/src/{og/utils/TerrainWorker.js → utils/TerrainWorker.ts} +51 -36
- package/src/utils/TextureAtlas.ts +322 -0
- package/src/{og/utils/VectorTileCreator.js → utils/VectorTileCreator.ts} +67 -52
- package/src/{og/utils/colorTable.js → utils/colorTable.ts} +142 -144
- package/src/{og/utils/earcut.js → utils/earcut.ts} +664 -661
- package/src/{og/utils/objParser.js → utils/objParser.ts} +66 -37
- package/src/{og/utils/shared.js → utils/shared.ts} +267 -206
- package/src/utils/units.ts +78 -0
- package/src/webgl/BaseFramebuffer.ts +125 -0
- package/src/webgl/Framebuffer.ts +206 -0
- package/src/webgl/Handler.ts +1414 -0
- package/src/webgl/Multisample.ts +153 -0
- package/src/webgl/Program.ts +451 -0
- package/src/{og/webgl/ProgramController.js → webgl/ProgramController.ts} +44 -43
- package/src/webgl/index.ts +13 -0
- package/src/{og/webgl/types.js → webgl/types.ts} +29 -31
- package/src/webgl/variableHandlers.ts +114 -0
- package/src/og/Deferred.js +0 -11
- package/src/og/Events.js +0 -185
- package/src/og/Globe.js +0 -342
- package/src/og/Lock.js +0 -44
- package/src/og/Popup.js +0 -187
- package/src/og/Stack.js +0 -49
- package/src/og/bv/index.js +0 -4
- package/src/og/camera/index.js +0 -4
- package/src/og/control/EarthCoordinates.js +0 -214
- package/src/og/control/EarthNavigation.js +0 -258
- package/src/og/control/KeyboardNavigation.js +0 -149
- package/src/og/control/LayerSwitcher.js +0 -424
- package/src/og/control/MouseNavigation.js +0 -436
- package/src/og/control/MouseWheelZoomControl.js +0 -253
- package/src/og/control/ScaleControl.js +0 -119
- package/src/og/control/SegmentBoundVisualization.js +0 -54
- package/src/og/control/ShowFps.js +0 -40
- package/src/og/control/SimpleNavigation.js +0 -123
- package/src/og/control/ToggleWireframe.js +0 -35
- package/src/og/control/TouchNavigation.js +0 -350
- package/src/og/control/ZoomControl.js +0 -115
- package/src/og/control/drawing/DrawingControl.js +0 -51
- package/src/og/control/heightRuler/HeightRuler.js +0 -12
- package/src/og/control/index.js +0 -56
- package/src/og/control/ruler/Ruler.js +0 -39
- package/src/og/ellipsoid/index.js +0 -4
- package/src/og/entity/BillboardHandler.js +0 -883
- package/src/og/entity/Geometry.js +0 -320
- package/src/og/entity/PointCloudHandler.js +0 -122
- package/src/og/entity/index.js +0 -9
- package/src/og/index.js +0 -112
- package/src/og/input/KeyboardHandler.js +0 -128
- package/src/og/input/TouchHandler.js +0 -59
- package/src/og/layer/GeoTexture2d.js +0 -50
- package/src/og/layer/index.js +0 -11
- package/src/og/math/index.js +0 -23
- package/src/og/quadTree/EntityCollectionNode.js +0 -391
- package/src/og/quadTree/Wgs84QuadTreeStrategy.js +0 -27
- package/src/og/quadTree/index.js +0 -14
- package/src/og/res/images.js +0 -8
- package/src/og/scene/index.js +0 -5
- package/src/og/terrain/EmptyTerrain.js +0 -174
- package/src/og/terrain/index.js +0 -6
- package/src/og/ui/Button.js +0 -107
- package/src/og/ui/ButtonGroup.js +0 -57
- package/src/og/ui/Dialog.js +0 -239
- package/src/og/ui/Slider.js +0 -170
- package/src/og/ui/ToggleButton.js +0 -51
- package/src/og/ui/UIhelpers.js +0 -155
- package/src/og/utils/BaseWorker.js +0 -46
- package/src/og/utils/FontAtlas.js +0 -218
- package/src/og/utils/Loader.js +0 -188
- package/src/og/utils/TextureAtlas.js +0 -291
- package/src/og/utils/functionComposition.js +0 -13
- package/src/og/utils/units.js +0 -78
- package/src/og/webgl/Framebuffer.js +0 -311
- package/src/og/webgl/Handler.js +0 -1168
- package/src/og/webgl/Multisample.js +0 -275
- package/src/og/webgl/Program.js +0 -407
- package/src/og/webgl/callbacks.js +0 -98
- package/src/og/webgl/index.js +0 -13
- package/src/og.jsdoc +0 -3
- package/types/Clock.d.ts +0 -99
- package/types/Deferred.d.ts +0 -6
- package/types/Events.d.ts +0 -78
- package/types/Extent.d.ts +0 -166
- package/types/Globe.d.ts +0 -108
- package/types/ImageCanvas.d.ts +0 -128
- package/types/Lock.d.ts +0 -12
- package/types/LonLat.d.ts +0 -127
- package/types/Object3d.d.ts +0 -35
- package/types/Popup.d.ts +0 -29
- package/types/QueueArray.d.ts +0 -19
- package/types/Rectangle.d.ts +0 -80
- package/types/Stack.d.ts +0 -19
- package/types/arial.d.ts +0 -49
- package/types/astro/astro.d.ts +0 -38
- package/types/astro/earth.d.ts +0 -7
- package/types/astro/jd.d.ts +0 -254
- package/types/bv/Box.d.ts +0 -30
- package/types/bv/Sphere.d.ts +0 -38
- package/types/bv/index.d.ts +0 -3
- package/types/camera/Camera.d.ts +0 -314
- package/types/camera/Frustum.d.ts +0 -133
- package/types/camera/PlanetCamera.d.ts +0 -219
- package/types/camera/index.d.ts +0 -3
- package/types/cons.d.ts +0 -40
- package/types/control/Atmosphere.d.ts +0 -15
- package/types/control/CompassButton.d.ts +0 -16
- package/types/control/Control.d.ts +0 -104
- package/types/control/DebugInfo.d.ts +0 -19
- package/types/control/DrawingSwitcher.d.ts +0 -13
- package/types/control/EarthCoordinates.d.ts +0 -44
- package/types/control/EarthNavigation.d.ts +0 -43
- package/types/control/GeoImageDragControl.d.ts +0 -14
- package/types/control/KeyboardNavigation.d.ts +0 -24
- package/types/control/LayerAnimation.d.ts +0 -73
- package/types/control/LayerSwitcher.d.ts +0 -64
- package/types/control/Lighting.d.ts +0 -41
- package/types/control/MouseNavigation.d.ts +0 -49
- package/types/control/MouseWheelZoomControl.d.ts +0 -46
- package/types/control/ScaleControl.d.ts +0 -23
- package/types/control/ShowFps.d.ts +0 -11
- package/types/control/SimpleNavigation.d.ts +0 -26
- package/types/control/SimpleSkyBackground.d.ts +0 -15
- package/types/control/Sun.d.ts +0 -53
- package/types/control/ToggleWireframe.d.ts +0 -12
- package/types/control/TouchNavigation.d.ts +0 -54
- package/types/control/ZoomControl.d.ts +0 -26
- package/types/control/drawing/DrawingControl.d.ts +0 -14
- package/types/control/drawing/LineStringDrawingScene.d.ts +0 -5
- package/types/control/drawing/PolygonDrawingScene.d.ts +0 -99
- package/types/control/heightRuler/HeightRuler.d.ts +0 -6
- package/types/control/heightRuler/HeightRulerScene.d.ts +0 -23
- package/types/control/index.d.ts +0 -27
- package/types/control/ruler/Ruler.d.ts +0 -13
- package/types/control/ruler/RulerScene.d.ts +0 -51
- package/types/control/selection/Selection.d.ts +0 -49
- package/types/control/selection/SelectionScene.d.ts +0 -32
- package/types/control/timeline/TimelineControl.d.ts +0 -10
- package/types/control/timeline/TimelineModel.d.ts +0 -33
- package/types/control/timeline/TimelineView.d.ts +0 -57
- package/types/control/timeline/timelineUtils.d.ts +0 -9
- package/types/ellipsoid/Ellipsoid.d.ts +0 -170
- package/types/ellipsoid/index.d.ts +0 -3
- package/types/ellipsoid/wgs84.d.ts +0 -6
- package/types/entity/BaseBillboard.d.ts +0 -215
- package/types/entity/Billboard.d.ts +0 -94
- package/types/entity/BillboardHandler.d.ts +0 -75
- package/types/entity/Entity.d.ts +0 -340
- package/types/entity/EntityCollection.d.ts +0 -303
- package/types/entity/GeoObject.d.ts +0 -117
- package/types/entity/GeoObjectHandler.d.ts +0 -41
- package/types/entity/Geometry.d.ts +0 -79
- package/types/entity/GeometryHandler.d.ts +0 -76
- package/types/entity/Label.d.ts +0 -190
- package/types/entity/LabelHandler.d.ts +0 -31
- package/types/entity/LabelWorker.d.ts +0 -9
- package/types/entity/PointCloud.d.ts +0 -174
- package/types/entity/PointCloudHandler.d.ts +0 -38
- package/types/entity/Polyline.d.ts +0 -307
- package/types/entity/PolylineHandler.d.ts +0 -18
- package/types/entity/Ray.d.ts +0 -122
- package/types/entity/RayHandler.d.ts +0 -63
- package/types/entity/Strip.d.ts +0 -119
- package/types/entity/StripHandler.d.ts +0 -38
- package/types/entity/index.d.ts +0 -8
- package/types/index.d.ts +0 -53
- package/types/input/KeyboardHandler.d.ts +0 -10
- package/types/input/MouseHandler.d.ts +0 -5
- package/types/input/TouchHandler.d.ts +0 -5
- package/types/input/input.d.ts +0 -42
- package/types/layer/BaseGeoImage.d.ts +0 -116
- package/types/layer/CanvasTiles.d.ts +0 -73
- package/types/layer/GeoImage.d.ts +0 -51
- package/types/layer/GeoTexture2d.d.ts +0 -7
- package/types/layer/GeoVideo.d.ts +0 -47
- package/types/layer/KML.d.ts +0 -93
- package/types/layer/Layer.d.ts +0 -320
- package/types/layer/Material.d.ts +0 -45
- package/types/layer/Vector.d.ts +0 -211
- package/types/layer/WMS.d.ts +0 -66
- package/types/layer/XYZ.d.ts +0 -122
- package/types/layer/index.d.ts +0 -10
- package/types/light/LightSource.d.ts +0 -178
- package/types/math/Line2.d.ts +0 -11
- package/types/math/Line3.d.ts +0 -10
- package/types/math/Mat3.d.ts +0 -65
- package/types/math/Mat4.d.ts +0 -176
- package/types/math/Plane.d.ts +0 -18
- package/types/math/Quat.d.ts +0 -379
- package/types/math/Ray.d.ts +0 -82
- package/types/math/Vec2.d.ts +0 -309
- package/types/math/Vec3.d.ts +0 -472
- package/types/math/Vec4.d.ts +0 -161
- package/types/math/coder.d.ts +0 -43
- package/types/math/index.d.ts +0 -11
- package/types/math.d.ts +0 -268
- package/types/mercator.d.ts +0 -92
- package/types/proj/EPSG3857.d.ts +0 -6
- package/types/proj/EPSG4326.d.ts +0 -6
- package/types/proj/Proj.d.ts +0 -42
- package/types/quadTree/EPSG4326QuadTreeStrategy.d.ts +0 -3
- package/types/quadTree/EarthQuadTreeStrategy.d.ts +0 -3
- package/types/quadTree/EntityCollectionNode.d.ts +0 -41
- package/types/quadTree/MarsQuadTreeStrategy.d.ts +0 -3
- package/types/quadTree/Node.d.ts +0 -58
- package/types/quadTree/QuadTreeStrategy.d.ts +0 -21
- package/types/quadTree/Wgs84QuadTreeStrategy.d.ts +0 -3
- package/types/quadTree/index.d.ts +0 -12
- package/types/quadTree/quadTree.d.ts +0 -40
- package/types/renderer/Renderer.d.ts +0 -291
- package/types/renderer/RendererEvents.d.ts +0 -255
- package/types/res/images.d.ts +0 -2
- package/types/scene/Axes.d.ts +0 -10
- package/types/scene/BaseNode.d.ts +0 -60
- package/types/scene/Planet.d.ts +0 -595
- package/types/scene/RenderNode.d.ts +0 -152
- package/types/scene/SkyBox.d.ts +0 -9
- package/types/scene/index.d.ts +0 -4
- package/types/segment/Segment.d.ts +0 -273
- package/types/segment/SegmentLonLat.d.ts +0 -22
- package/types/segment/SegmentLonLatWgs84.d.ts +0 -4
- package/types/segment/Slice.d.ts +0 -10
- package/types/segment/segmentHelper.d.ts +0 -13
- package/types/shaders/atmos.d.ts +0 -4
- package/types/shaders/billboard.d.ts +0 -3
- package/types/shaders/depth.d.ts +0 -2
- package/types/shaders/drawnode.d.ts +0 -8
- package/types/shaders/geoObject.d.ts +0 -3
- package/types/shaders/label.d.ts +0 -4
- package/types/shaders/pickingMask.d.ts +0 -2
- package/types/shaders/pointCloud.d.ts +0 -2
- package/types/shaders/polyline.d.ts +0 -3
- package/types/shaders/ray.d.ts +0 -2
- package/types/shaders/screenFrame.d.ts +0 -2
- package/types/shaders/skybox.d.ts +0 -2
- package/types/shaders/toneMapping.d.ts +0 -2
- package/types/shaders/utils.d.ts +0 -1
- package/types/terrain/BilTerrain.d.ts +0 -14
- package/types/terrain/EmptyTerrain.d.ts +0 -87
- package/types/terrain/Geoid.d.ts +0 -17
- package/types/terrain/GlobusTerrain.d.ts +0 -122
- package/types/terrain/MapboxTerrain.d.ts +0 -14
- package/types/terrain/index.d.ts +0 -5
- package/types/ui/Button.d.ts +0 -21
- package/types/ui/ButtonGroup.d.ts +0 -12
- package/types/ui/Dialog.d.ts +0 -41
- package/types/ui/Slider.d.ts +0 -33
- package/types/ui/ToggleButton.d.ts +0 -10
- package/types/ui/UIhelpers.d.ts +0 -13
- package/types/ui/View.d.ts +0 -33
- package/types/ui/icons.d.ts +0 -1
- package/types/utils/BaseWorker.d.ts +0 -14
- package/types/utils/FontAtlas.d.ts +0 -16
- package/types/utils/GeoImageCreator.d.ts +0 -30
- package/types/utils/ImagesCacheManager.d.ts +0 -10
- package/types/utils/Loader.d.ts +0 -31
- package/types/utils/NormalMapCreator.d.ts +0 -39
- package/types/utils/PlainSegmentWorker.d.ts +0 -8
- package/types/utils/TerrainWorker.d.ts +0 -7
- package/types/utils/TextureAtlas.d.ts +0 -113
- package/types/utils/VectorTileCreator.d.ts +0 -14
- package/types/utils/colorTable.d.ts +0 -143
- package/types/utils/earcut.d.ts +0 -6
- package/types/utils/functionComposition.d.ts +0 -5
- package/types/utils/objParser.d.ts +0 -8
- package/types/utils/shared.d.ts +0 -241
- package/types/utils/units.d.ts +0 -20
- package/types/webgl/Framebuffer.d.ts +0 -134
- package/types/webgl/Handler.d.ts +0 -403
- package/types/webgl/Multisample.d.ts +0 -91
- package/types/webgl/Program.d.ts +0 -163
- package/types/webgl/ProgramController.d.ts +0 -89
- package/types/webgl/callbacks.d.ts +0 -1
- package/types/webgl/index.d.ts +0 -6
- package/types/webgl/types.d.ts +0 -2
- /package/{src/og → dist/@openglobus/res/fonts}/arial.js +0 -0
- /package/src/{og/ui/icons.js → ui/icons.ts} +0 -0
|
@@ -1,48 +1,52 @@
|
|
|
1
|
-
|
|
1
|
+
import {BaseGeoImage, IBaseGeoImageParams} from "./BaseGeoImage";
|
|
2
|
+
import {Material} from "./Material";
|
|
2
3
|
|
|
3
|
-
|
|
4
|
+
interface IGeoVideoParams extends IBaseGeoImageParams {
|
|
5
|
+
videoElement?: HTMLVideoElement;
|
|
6
|
+
src?: string;
|
|
7
|
+
}
|
|
4
8
|
|
|
5
9
|
/**
|
|
6
|
-
* Used to load and display a video stream by specific corners coordinates on the globe
|
|
10
|
+
* Used to load and display a video stream by specific corners coordinates on the globe.
|
|
7
11
|
* @class
|
|
8
12
|
* @extends {BaseGeoImage}
|
|
9
13
|
*/
|
|
10
14
|
class GeoVideo extends BaseGeoImage {
|
|
11
|
-
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* HTML5 video element object.
|
|
18
|
+
* @protected
|
|
19
|
+
* @type {HTMLVideoElement}
|
|
20
|
+
*/
|
|
21
|
+
protected _video: HTMLVideoElement | null;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Video source url path.
|
|
25
|
+
* @protected
|
|
26
|
+
* @type {string}
|
|
27
|
+
*/
|
|
28
|
+
protected _src: string | null;
|
|
29
|
+
|
|
30
|
+
constructor(name: string | null, options: IGeoVideoParams = {}) {
|
|
12
31
|
super(name, options);
|
|
13
32
|
|
|
14
|
-
/**
|
|
15
|
-
* @protected
|
|
16
|
-
* @const
|
|
17
|
-
* @type {Boolean}
|
|
18
|
-
*/
|
|
19
33
|
this._animate = true;
|
|
20
34
|
|
|
21
|
-
/**
|
|
22
|
-
* HTML5 video element object.
|
|
23
|
-
* @private
|
|
24
|
-
* @type {Object}
|
|
25
|
-
*/
|
|
26
35
|
this._video = options.videoElement || null;
|
|
27
36
|
|
|
28
|
-
/**
|
|
29
|
-
* VIdeo source url path.
|
|
30
|
-
* @private
|
|
31
|
-
* @type {String}
|
|
32
|
-
*/
|
|
33
37
|
this._src = options.src || null;
|
|
34
38
|
}
|
|
35
39
|
|
|
36
|
-
get instanceName() {
|
|
40
|
+
public override get instanceName(): string {
|
|
37
41
|
return "GeoVideo";
|
|
38
42
|
}
|
|
39
43
|
|
|
40
44
|
/**
|
|
41
45
|
* Sets video source url path.
|
|
42
46
|
* @public
|
|
43
|
-
* @param {
|
|
47
|
+
* @param {string} src - Video url path.
|
|
44
48
|
*/
|
|
45
|
-
setSrc(src) {
|
|
49
|
+
public setSrc(src: string) {
|
|
46
50
|
this._planet && this._planet._geoImageCreator.remove(this);
|
|
47
51
|
this._src = src;
|
|
48
52
|
this._sourceReady = false;
|
|
@@ -51,9 +55,9 @@ class GeoVideo extends BaseGeoImage {
|
|
|
51
55
|
/**
|
|
52
56
|
* Sets HTML5 video object.
|
|
53
57
|
* @public
|
|
54
|
-
* @param {
|
|
58
|
+
* @param {HTMLVideoElement} video - HTML5 video element object.
|
|
55
59
|
*/
|
|
56
|
-
setVideoElement(video) {
|
|
60
|
+
public setVideoElement(video: HTMLVideoElement) {
|
|
57
61
|
this._planet && this._planet._geoImageCreator.remove(this);
|
|
58
62
|
this._video = video;
|
|
59
63
|
this._src = video.src;
|
|
@@ -65,17 +69,17 @@ class GeoVideo extends BaseGeoImage {
|
|
|
65
69
|
* @public
|
|
66
70
|
* @param {boolean} visibility - Layer visibility.
|
|
67
71
|
*/
|
|
68
|
-
setVisibility(visibility) {
|
|
72
|
+
public override setVisibility(visibility: boolean) {
|
|
69
73
|
if (visibility != this._visibility) {
|
|
70
74
|
super.setVisibility(visibility);
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
75
|
+
if (this._planet) {
|
|
76
|
+
if (visibility) {
|
|
77
|
+
this._sourceReady && this._planet._geoImageCreator.add(this);
|
|
78
|
+
this._video && this._video.play();
|
|
79
|
+
} else {
|
|
80
|
+
this._sourceReady && this._planet._geoImageCreator.remove(this);
|
|
81
|
+
this._video && this._video.pause();
|
|
82
|
+
}
|
|
79
83
|
}
|
|
80
84
|
}
|
|
81
85
|
}
|
|
@@ -85,13 +89,13 @@ class GeoVideo extends BaseGeoImage {
|
|
|
85
89
|
* @virtual
|
|
86
90
|
* @protected
|
|
87
91
|
*/
|
|
88
|
-
_createSourceTexture() {
|
|
89
|
-
let gl = this._planet
|
|
92
|
+
protected override _createSourceTexture() {
|
|
93
|
+
let gl = this._planet!.renderer!.handler.gl!;
|
|
90
94
|
if (this._sourceCreated) {
|
|
91
|
-
gl.bindTexture(gl.TEXTURE_2D, this._sourceTexture);
|
|
92
|
-
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, this._video);
|
|
95
|
+
gl.bindTexture(gl.TEXTURE_2D, this._sourceTexture!);
|
|
96
|
+
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, this._video!);
|
|
93
97
|
} else {
|
|
94
|
-
this._sourceTexture = this._planet
|
|
98
|
+
this._sourceTexture = this._planet!.renderer!.handler.createTexture_n_webgl1(this._video!);
|
|
95
99
|
this._sourceCreated = true;
|
|
96
100
|
}
|
|
97
101
|
}
|
|
@@ -99,22 +103,19 @@ class GeoVideo extends BaseGeoImage {
|
|
|
99
103
|
/**
|
|
100
104
|
* @private
|
|
101
105
|
*/
|
|
102
|
-
_onCanPlay(video) {
|
|
106
|
+
protected _onCanPlay(video: HTMLVideoElement) {
|
|
103
107
|
this._frameWidth = video.videoWidth;
|
|
104
108
|
this._frameHeight = video.videoHeight;
|
|
105
109
|
video.width = video.videoWidth;
|
|
106
110
|
video.height = video.videoHeight;
|
|
107
111
|
video.play();
|
|
108
112
|
this._sourceReady = true;
|
|
109
|
-
this._planet
|
|
113
|
+
this._planet!._geoImageCreator.add(this);
|
|
110
114
|
}
|
|
111
115
|
|
|
112
|
-
|
|
113
|
-
* @private
|
|
114
|
-
*/
|
|
115
|
-
_onError(video) {
|
|
116
|
+
protected _onError(video: HTMLVideoElement) {
|
|
116
117
|
let err = "unknown error";
|
|
117
|
-
switch (video.error
|
|
118
|
+
switch (video.error!.code) {
|
|
118
119
|
case 1:
|
|
119
120
|
err = "video loading aborted";
|
|
120
121
|
break;
|
|
@@ -128,16 +129,15 @@ class GeoVideo extends BaseGeoImage {
|
|
|
128
129
|
err = "video not supported";
|
|
129
130
|
break;
|
|
130
131
|
}
|
|
131
|
-
console.
|
|
132
|
+
console.warn(`Error: ${err} error-code=${video.error!.code})`);
|
|
132
133
|
}
|
|
133
134
|
|
|
134
135
|
/**
|
|
135
136
|
* Loads planet segment material. In this case - GeoImage source video.
|
|
136
|
-
* @virtual
|
|
137
137
|
* @public
|
|
138
138
|
* @param {Material} material - GeoImage planet material.
|
|
139
139
|
*/
|
|
140
|
-
loadMaterial(material) {
|
|
140
|
+
public override loadMaterial(material: Material) {
|
|
141
141
|
material.isLoading = true;
|
|
142
142
|
this._creationProceeding = true;
|
|
143
143
|
if (!this._sourceReady && this._src) {
|
|
@@ -146,7 +146,7 @@ class GeoVideo extends BaseGeoImage {
|
|
|
146
146
|
this._onCanPlay(this._video);
|
|
147
147
|
} else if (this._video.src) {
|
|
148
148
|
let that = this;
|
|
149
|
-
this._video.addEventListener("canplay", function (e) {
|
|
149
|
+
this._video.addEventListener("canplay", function (e: Event) {
|
|
150
150
|
that._onCanPlay(this);
|
|
151
151
|
});
|
|
152
152
|
}
|
|
@@ -164,11 +164,11 @@ class GeoVideo extends BaseGeoImage {
|
|
|
164
164
|
this._video.autoplay = true;
|
|
165
165
|
this._video.loop = true;
|
|
166
166
|
this._video.src = this._src;
|
|
167
|
-
this._video.muted =
|
|
167
|
+
this._video.muted = true;
|
|
168
168
|
this._video.setAttribute("playsinline", "true");
|
|
169
169
|
this._video.setAttribute("webkit-playsinline", "true");
|
|
170
170
|
} else {
|
|
171
|
-
this._planet
|
|
171
|
+
this._planet!._geoImageCreator.add(this);
|
|
172
172
|
}
|
|
173
173
|
}
|
|
174
174
|
|
|
@@ -176,7 +176,7 @@ class GeoVideo extends BaseGeoImage {
|
|
|
176
176
|
* @virtual
|
|
177
177
|
* @param {Material} material - GeoImage material.
|
|
178
178
|
*/
|
|
179
|
-
abortMaterialLoading(material) {
|
|
179
|
+
public override abortMaterialLoading(material: Material) {
|
|
180
180
|
this._video && (this._video.src = "");
|
|
181
181
|
this._creationProceeding = false;
|
|
182
182
|
material.isLoading = false;
|
|
@@ -184,4 +184,4 @@ class GeoVideo extends BaseGeoImage {
|
|
|
184
184
|
}
|
|
185
185
|
}
|
|
186
186
|
|
|
187
|
-
export {
|
|
187
|
+
export {GeoVideo};
|
|
@@ -1,44 +1,43 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
|
|
1
|
+
import {Billboard, IBillboardParams} from "../entity/Billboard";
|
|
2
|
+
import {Entity} from "../entity/Entity";
|
|
3
|
+
import {Extent} from "../Extent";
|
|
4
|
+
import {LonLat} from "../LonLat";
|
|
5
|
+
import {Vector, IVectorParams} from "./Vector";
|
|
6
|
+
import {NumberArray3} from "../math/Vec3";
|
|
7
|
+
|
|
8
|
+
interface IKMLParams extends IVectorParams {
|
|
9
|
+
color?: string;
|
|
10
|
+
billboard?: IBillboardParams;
|
|
11
|
+
}
|
|
8
12
|
|
|
9
13
|
/**
|
|
10
14
|
* Layer to render KMLs files
|
|
11
15
|
* @class
|
|
12
16
|
* @extends {Vector}
|
|
17
|
+
* @param {string} name
|
|
18
|
+
* @param {*} [options]
|
|
13
19
|
*/
|
|
14
20
|
export class KML extends Vector {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
constructor(name, options = {}) {
|
|
21
|
+
|
|
22
|
+
protected _color: string;
|
|
23
|
+
protected _billboard: IBillboardParams;
|
|
24
|
+
|
|
25
|
+
constructor(name: string, options: IKMLParams = {}) {
|
|
21
26
|
super(name, options);
|
|
22
|
-
this._extent = null;
|
|
23
27
|
this._billboard = options.billboard || {
|
|
24
28
|
src: "https://openglobus.org/examples/billboards/carrot.png"
|
|
25
29
|
};
|
|
26
|
-
|
|
27
|
-
* @type {string}
|
|
28
|
-
*/
|
|
30
|
+
|
|
29
31
|
this._color = options.color || "#6689db";
|
|
30
32
|
}
|
|
31
33
|
|
|
32
|
-
get instanceName() {
|
|
34
|
+
public override get instanceName() {
|
|
33
35
|
return "KML";
|
|
34
36
|
}
|
|
35
37
|
|
|
36
|
-
|
|
37
|
-
* @public
|
|
38
|
-
*/
|
|
39
|
-
_extractCoordonatesFromKml(xmlDoc) {
|
|
38
|
+
protected _extractCoordonatesFromKml(xmlDoc: XMLDocument) {
|
|
40
39
|
const raw = Array.from(xmlDoc.getElementsByTagName("coordinates"));
|
|
41
|
-
const rawText = raw.map(item => item.textContent
|
|
40
|
+
const rawText = raw.map(item => item.textContent!.trim());
|
|
42
41
|
const coordinates = rawText.map(item =>
|
|
43
42
|
item
|
|
44
43
|
.replace(/\n/g, " ")
|
|
@@ -50,11 +49,8 @@ export class KML extends Vector {
|
|
|
50
49
|
return coordinates;
|
|
51
50
|
}
|
|
52
51
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
*/
|
|
56
|
-
_AGBRtoRGBA(agbr) {
|
|
57
|
-
if (!agbr || agbr.length != 8) return
|
|
52
|
+
protected _AGBRtoRGBA(agbr: string): string | undefined {
|
|
53
|
+
if (!agbr || agbr.length != 8) return;
|
|
58
54
|
|
|
59
55
|
const a = parseInt(agbr.slice(0, 2), 16) / 255;
|
|
60
56
|
const b = parseInt(agbr.slice(2, 4), 16);
|
|
@@ -65,10 +61,10 @@ export class KML extends Vector {
|
|
|
65
61
|
}
|
|
66
62
|
|
|
67
63
|
/**
|
|
68
|
-
* @
|
|
64
|
+
* @protected
|
|
69
65
|
returns array of longitude, latitude, altitude (altitude optional)
|
|
70
66
|
*/
|
|
71
|
-
_parseKMLcoordinates(coords) {
|
|
67
|
+
protected _parseKMLcoordinates(coords: Element): number[][] {
|
|
72
68
|
const coordinates = coords.innerHTML.trim()
|
|
73
69
|
.replace(/\n/g, ' ')
|
|
74
70
|
.replace(/\t/g, ' ')
|
|
@@ -79,20 +75,17 @@ export class KML extends Vector {
|
|
|
79
75
|
return coordinates;
|
|
80
76
|
}
|
|
81
77
|
|
|
82
|
-
|
|
83
|
-
* @private
|
|
84
|
-
*/
|
|
85
|
-
_kmlPlacemarkToEntity(placemark, extent) {
|
|
78
|
+
protected _kmlPlacemarkToEntity(placemark: Element | undefined | null, extent: Extent): Entity | undefined {
|
|
86
79
|
if (!placemark) return;
|
|
87
80
|
|
|
88
|
-
const nameTags = Array.from(placemark.getElementsByTagName("name"))
|
|
89
|
-
const name = nameTags && nameTags.length > 0 ? nameTags[0].innerHTML.trim() : '';
|
|
81
|
+
const nameTags: Element[] = Array.from(placemark.getElementsByTagName("name"))
|
|
82
|
+
const name: string = nameTags && nameTags.length > 0 ? nameTags[0].innerHTML.trim() : '';
|
|
90
83
|
|
|
91
|
-
const {
|
|
84
|
+
const {iconHeading, iconURL, iconColor, lineWidth, lineColor} = this._extractStyle(placemark);
|
|
92
85
|
|
|
93
86
|
// TODO handle MultiGeometry
|
|
94
87
|
|
|
95
|
-
const lonLats = [];
|
|
88
|
+
const lonLats: LonLat[] = [];
|
|
96
89
|
for (const coord of placemark.getElementsByTagName("coordinates")) {
|
|
97
90
|
const coordinates = this._parseKMLcoordinates(coord) || [[0, 0, 0]]
|
|
98
91
|
|
|
@@ -138,7 +131,7 @@ export class KML extends Vector {
|
|
|
138
131
|
}
|
|
139
132
|
}
|
|
140
133
|
|
|
141
|
-
_extractStyle(placemark) {
|
|
134
|
+
protected _extractStyle(placemark: Element): any {
|
|
142
135
|
let iconColor;
|
|
143
136
|
let iconHeading;
|
|
144
137
|
let iconURL;
|
|
@@ -187,10 +180,10 @@ export class KML extends Vector {
|
|
|
187
180
|
if (!lineColor) lineColor = "#FFFFFF"
|
|
188
181
|
if (!lineWidth) lineWidth = 1
|
|
189
182
|
|
|
190
|
-
return {
|
|
183
|
+
return {iconHeading, iconURL, iconColor, lineWidth, lineColor};
|
|
191
184
|
}
|
|
192
185
|
|
|
193
|
-
_parseKML(xml, extent, entities
|
|
186
|
+
protected _parseKML(xml: XMLDocument, extent: Extent, entities?: Entity[]): Entity[] {
|
|
194
187
|
if (!entities)
|
|
195
188
|
entities = [];
|
|
196
189
|
|
|
@@ -205,23 +198,23 @@ export class KML extends Vector {
|
|
|
205
198
|
return entities;
|
|
206
199
|
}
|
|
207
200
|
|
|
208
|
-
_convertKMLintoEntities(xml) {
|
|
201
|
+
protected _convertKMLintoEntities(xml: XMLDocument): any {
|
|
209
202
|
const extent = new Extent(new LonLat(180.0, 90.0), new LonLat(-180.0, -90.0));
|
|
210
203
|
const entities = this._parseKML(xml, extent);
|
|
211
204
|
|
|
212
|
-
return {
|
|
205
|
+
return {entities, extent}
|
|
213
206
|
}
|
|
214
207
|
|
|
215
208
|
/**
|
|
216
209
|
* Creates billboards or polylines from array of lonlat.
|
|
217
|
-
* @
|
|
210
|
+
* @protected
|
|
218
211
|
* @param {Array} coordonates
|
|
219
212
|
* @param {string} color
|
|
220
|
-
* @returns {
|
|
213
|
+
* @returns {any}
|
|
221
214
|
*/
|
|
222
|
-
_convertCoordonatesIntoEntities(coordinates, color, billboard) {
|
|
215
|
+
protected _convertCoordonatesIntoEntities(coordinates: number[][][][], color: string, billboard?: IBillboardParams): any {
|
|
223
216
|
const extent = new Extent(new LonLat(180.0, 90.0), new LonLat(-180.0, -90.0));
|
|
224
|
-
const addToExtent = (c) => {
|
|
217
|
+
const addToExtent = (c: number[]) => {
|
|
225
218
|
const lon = c[0],
|
|
226
219
|
lat = c[1];
|
|
227
220
|
if (lon < extent.southWest.lon) extent.southWest.lon = lon;
|
|
@@ -229,45 +222,44 @@ export class KML extends Vector {
|
|
|
229
222
|
if (lon > extent.northEast.lon) extent.northEast.lon = lon;
|
|
230
223
|
if (lat > extent.northEast.lat) extent.northEast.lat = lat;
|
|
231
224
|
};
|
|
232
|
-
const _pathes = [];
|
|
233
|
-
|
|
225
|
+
const _pathes: number[][][] = [];
|
|
226
|
+
|
|
227
|
+
coordinates.forEach((kmlFile: number[][][]) => kmlFile.forEach((p: number[][]) => _pathes.push(p)));
|
|
228
|
+
|
|
234
229
|
const entities = _pathes.map((path) => {
|
|
235
230
|
if (path.length === 1) {
|
|
236
|
-
const lonlat = path[0];
|
|
237
|
-
const _entity = new Entity({
|
|
231
|
+
const lonlat = path[0] as NumberArray3;
|
|
232
|
+
const _entity = new Entity({lonlat, billboard});
|
|
238
233
|
addToExtent(lonlat);
|
|
239
234
|
return _entity;
|
|
240
235
|
} else if (path.length > 1) {
|
|
241
|
-
const pathLonLat = path.map((item) => {
|
|
236
|
+
const pathLonLat = path.map((item: number[]) => {
|
|
242
237
|
addToExtent(item);
|
|
243
238
|
return new LonLat(item[0], item[1], item[2]);
|
|
244
239
|
});
|
|
245
240
|
const _entity = new Entity({
|
|
246
|
-
polyline: {
|
|
241
|
+
polyline: {pathLonLat: [pathLonLat], thickness: 3, color, isClosed: false}
|
|
247
242
|
});
|
|
248
243
|
return _entity;
|
|
249
244
|
}
|
|
250
245
|
});
|
|
251
|
-
return {
|
|
246
|
+
return {entities, extent};
|
|
252
247
|
}
|
|
253
248
|
|
|
254
249
|
/**
|
|
255
|
-
* @
|
|
250
|
+
* @protected
|
|
256
251
|
* @returns {Document}
|
|
257
252
|
*/
|
|
258
|
-
_getXmlContent(file) {
|
|
253
|
+
protected _getXmlContent(file: Blob): Promise<XMLDocument> {
|
|
259
254
|
return new Promise((resolve) => {
|
|
260
255
|
const fileReader = new FileReader();
|
|
261
256
|
fileReader.onload = async (i) =>
|
|
262
|
-
resolve(new DOMParser().parseFromString(i.target
|
|
257
|
+
resolve(new DOMParser().parseFromString(i.target!.result as string, "text/xml"));
|
|
263
258
|
fileReader.readAsText(file);
|
|
264
259
|
});
|
|
265
260
|
}
|
|
266
261
|
|
|
267
|
-
|
|
268
|
-
* @public
|
|
269
|
-
*/
|
|
270
|
-
_expandExtents(extent1, extent2) {
|
|
262
|
+
protected _expandExtents(extent1: Extent | null | undefined, extent2: Extent): Extent {
|
|
271
263
|
if (!extent1) return extent2;
|
|
272
264
|
if (extent2.southWest.lon < extent1.southWest.lon)
|
|
273
265
|
extent1.southWest.lon = extent2.southWest.lon;
|
|
@@ -287,41 +279,38 @@ export class KML extends Vector {
|
|
|
287
279
|
* @param {Billboard} [billboard]
|
|
288
280
|
* @returns {Promise<{entities: Entity[], extent: Extent}>}
|
|
289
281
|
*/
|
|
290
|
-
async addKmlFromFiles(kmls, color
|
|
282
|
+
public async addKmlFromFiles(kmls: Blob[], color?: string, billboard?: IBillboardParams) {
|
|
291
283
|
if (!Array.isArray(kmls)) return null
|
|
292
284
|
const kmlObjs = await Promise.all(kmls.map(this._getXmlContent));
|
|
293
285
|
const coordonates = kmlObjs.map(this._extractCoordonatesFromKml);
|
|
294
|
-
const {
|
|
286
|
+
const {entities, extent} = this._convertCoordonatesIntoEntities(
|
|
295
287
|
coordonates,
|
|
296
288
|
color || this._color,
|
|
297
289
|
billboard || this._billboard
|
|
298
290
|
);
|
|
299
291
|
this._extent = this._expandExtents(this._extent, extent);
|
|
300
292
|
entities.forEach(this.add.bind(this));
|
|
301
|
-
return {
|
|
293
|
+
return {entities, extent};
|
|
302
294
|
}
|
|
303
295
|
|
|
304
296
|
/**
|
|
305
297
|
* @param {string} color
|
|
306
298
|
* @public
|
|
307
299
|
*/
|
|
308
|
-
setColor(color) {
|
|
300
|
+
public setColor(color: string) {
|
|
309
301
|
this._color = color;
|
|
310
302
|
this._billboard.color = color;
|
|
311
303
|
}
|
|
312
304
|
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
*/
|
|
316
|
-
_getKmlFromUrl(url) {
|
|
317
|
-
return new Promise((resolve, reject) => {
|
|
305
|
+
protected _getKmlFromUrl(url: string): Promise<Document> {
|
|
306
|
+
return new Promise<Document>((resolve, reject) => {
|
|
318
307
|
const request = new XMLHttpRequest();
|
|
319
308
|
request.open("GET", url, true);
|
|
320
309
|
request.responseType = "document";
|
|
321
310
|
request.overrideMimeType("text/xml");
|
|
322
311
|
request.onload = () => {
|
|
323
312
|
if (request.readyState === request.DONE && request.status === 200) {
|
|
324
|
-
resolve(request.responseXML);
|
|
313
|
+
resolve(request.responseXML!);
|
|
325
314
|
} else {
|
|
326
315
|
reject(new Error("no valid kml file"));
|
|
327
316
|
}
|
|
@@ -337,7 +326,7 @@ export class KML extends Vector {
|
|
|
337
326
|
* @param {Billboard} [billboard]
|
|
338
327
|
* @returns {Promise<{entities: Entity[], extent: Extent}>}
|
|
339
328
|
*/
|
|
340
|
-
async addKmlFromUrl(url, color
|
|
329
|
+
public async addKmlFromUrl(url: string, color?: string, billboard?: Billboard | IBillboardParams): Promise<any> {
|
|
341
330
|
const kml = await this._getKmlFromUrl(url);
|
|
342
331
|
/*
|
|
343
332
|
const coordonates = this._extractCoordonatesFromKml(kml);
|
|
@@ -347,12 +336,12 @@ export class KML extends Vector {
|
|
|
347
336
|
billboard || this._billboard
|
|
348
337
|
);
|
|
349
338
|
*/
|
|
350
|
-
const {
|
|
339
|
+
const {entities, extent} = this._convertKMLintoEntities(kml);
|
|
351
340
|
|
|
352
341
|
this._extent = this._expandExtents(this._extent, extent);
|
|
353
342
|
|
|
354
343
|
entities.forEach(this.add.bind(this));
|
|
355
344
|
|
|
356
|
-
return {
|
|
345
|
+
return {entities, extent};
|
|
357
346
|
}
|
|
358
347
|
}
|