@itwin/core-frontend 4.0.0-dev.23 → 4.0.0-dev.28
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/CHANGELOG.md +43 -36
- package/lib/cjs/AccuDraw.js +1 -1
- package/lib/cjs/AccuDraw.js.map +1 -1
- package/lib/cjs/AccuSnap.js +3 -3
- package/lib/cjs/AccuSnap.js.map +1 -1
- package/lib/cjs/BriefcaseConnection.js +9 -11
- package/lib/cjs/BriefcaseConnection.js.map +1 -1
- package/lib/cjs/DisplayStyleState.js +8 -12
- package/lib/cjs/DisplayStyleState.js.map +1 -1
- package/lib/cjs/DrawingViewState.js +4 -6
- package/lib/cjs/DrawingViewState.js.map +1 -1
- package/lib/cjs/EnvironmentDecorations.js +2 -3
- package/lib/cjs/EnvironmentDecorations.js.map +1 -1
- package/lib/cjs/FlashSettings.js +3 -4
- package/lib/cjs/FlashSettings.js.map +1 -1
- package/lib/cjs/GeoServices.js +7 -9
- package/lib/cjs/GeoServices.js.map +1 -1
- package/lib/cjs/IModelApp.js +19 -21
- package/lib/cjs/IModelApp.js.map +1 -1
- package/lib/cjs/IModelConnection.js +1 -1
- package/lib/cjs/IModelConnection.js.map +1 -1
- package/lib/cjs/IpcApp.js +1 -1
- package/lib/cjs/IpcApp.js.map +1 -1
- package/lib/cjs/LocalhostIpcApp.js +3 -4
- package/lib/cjs/LocalhostIpcApp.js.map +1 -1
- package/lib/cjs/ModelState.js +2 -3
- package/lib/cjs/ModelState.js.map +1 -1
- package/lib/cjs/NativeApp.js +4 -7
- package/lib/cjs/NativeApp.js.map +1 -1
- package/lib/cjs/NoRenderApp.js +1 -2
- package/lib/cjs/NoRenderApp.js.map +1 -1
- package/lib/cjs/PlanarClipMaskState.js +1 -1
- package/lib/cjs/PlanarClipMaskState.js.map +1 -1
- package/lib/cjs/RealityDataSourceContextShareImpl.js +2 -4
- package/lib/cjs/RealityDataSourceContextShareImpl.js.map +1 -1
- package/lib/cjs/SheetViewState.js +15 -23
- package/lib/cjs/SheetViewState.js.map +1 -1
- package/lib/cjs/Tiles.js +2 -2
- package/lib/cjs/Tiles.js.map +1 -1
- package/lib/cjs/ViewContext.js +1 -1
- package/lib/cjs/ViewContext.js.map +1 -1
- package/lib/cjs/ViewCreator2d.js +4 -5
- package/lib/cjs/ViewCreator2d.js.map +1 -1
- package/lib/cjs/ViewCreator3d.js +5 -5
- package/lib/cjs/ViewCreator3d.js.map +1 -1
- package/lib/cjs/ViewState.js +17 -24
- package/lib/cjs/ViewState.js.map +1 -1
- package/lib/cjs/Viewport.js +22 -32
- package/lib/cjs/Viewport.js.map +1 -1
- package/lib/cjs/extension/ExtensionImpl.js +1 -1
- package/lib/cjs/extension/ExtensionImpl.js.map +1 -1
- package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js +2 -3
- package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
- package/lib/cjs/quantity-formatting/QuantityFormatter.js +7 -9
- package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
- package/lib/cjs/render/FeatureSymbology.js +1 -2
- package/lib/cjs/render/FeatureSymbology.js.map +1 -1
- package/lib/cjs/render/GraphicBuilder.js +7 -9
- package/lib/cjs/render/GraphicBuilder.js.map +1 -1
- package/lib/cjs/render/MockRender.js +1 -2
- package/lib/cjs/render/MockRender.js.map +1 -1
- package/lib/cjs/render/ParticleCollectionBuilder.js +2 -3
- package/lib/cjs/render/ParticleCollectionBuilder.js.map +1 -1
- package/lib/cjs/render/RealityMeshParams.js +7 -10
- package/lib/cjs/render/RealityMeshParams.js.map +1 -1
- package/lib/cjs/render/RenderPlan.js +1 -1
- package/lib/cjs/render/RenderPlan.js.map +1 -1
- package/lib/cjs/render/RenderSystem.js +1 -2
- package/lib/cjs/render/RenderSystem.js.map +1 -1
- package/lib/cjs/render/VisibleFeature.js +2 -4
- package/lib/cjs/render/VisibleFeature.js.map +1 -1
- package/lib/cjs/render/primitives/AuxChannelTable.js +6 -9
- package/lib/cjs/render/primitives/AuxChannelTable.js.map +1 -1
- package/lib/cjs/render/primitives/EdgeParams.js +6 -7
- package/lib/cjs/render/primitives/EdgeParams.js.map +1 -1
- package/lib/cjs/render/primitives/PolylineParams.js +2 -3
- package/lib/cjs/render/primitives/PolylineParams.js.map +1 -1
- package/lib/cjs/render/primitives/VertexKey.js +1 -1
- package/lib/cjs/render/primitives/VertexKey.js.map +1 -1
- package/lib/cjs/render/primitives/VertexTable.js +1 -1
- package/lib/cjs/render/primitives/VertexTable.js.map +1 -1
- package/lib/cjs/render/primitives/VertexTableSplitter.js +6 -8
- package/lib/cjs/render/primitives/VertexTableSplitter.js.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js +9 -11
- package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js +3 -5
- package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshBuilder.js +1 -1
- package/lib/cjs/render/primitives/mesh/MeshBuilder.js.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshPrimitives.js +2 -3
- package/lib/cjs/render/primitives/mesh/MeshPrimitives.js.map +1 -1
- package/lib/cjs/render/webgl/BranchState.js +9 -10
- package/lib/cjs/render/webgl/BranchState.js.map +1 -1
- package/lib/cjs/render/webgl/EDL.js +17 -21
- package/lib/cjs/render/webgl/EDL.js.map +1 -1
- package/lib/cjs/render/webgl/FeatureOverrides.js +2 -2
- package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
- package/lib/cjs/render/webgl/Graphic.js +3 -5
- package/lib/cjs/render/webgl/Graphic.js.map +1 -1
- package/lib/cjs/render/webgl/IndexedEdgeGeometry.js +1 -1
- package/lib/cjs/render/webgl/IndexedEdgeGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/InstancedGeometry.js +2 -3
- package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/Mesh.js +7 -10
- package/lib/cjs/render/webgl/Mesh.js.map +1 -1
- package/lib/cjs/render/webgl/MeshData.js +1 -2
- package/lib/cjs/render/webgl/MeshData.js.map +1 -1
- package/lib/cjs/render/webgl/PlanarClassifier.js +10 -15
- package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/cjs/render/webgl/RealityMesh.js +5 -8
- package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
- package/lib/cjs/render/webgl/RealityModelUniforms.js +3 -4
- package/lib/cjs/render/webgl/RealityModelUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/RenderCommands.js +7 -8
- package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
- package/lib/cjs/render/webgl/SceneCompositor.js +7 -9
- package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/cjs/render/webgl/ShaderBuilder.js +1 -2
- package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
- package/lib/cjs/render/webgl/SolarShadowMap.js +1 -2
- package/lib/cjs/render/webgl/SolarShadowMap.js.map +1 -1
- package/lib/cjs/render/webgl/SurfaceGeometry.js +1 -1
- package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/System.js +12 -16
- package/lib/cjs/render/webgl/System.js.map +1 -1
- package/lib/cjs/render/webgl/Target.js +9 -14
- package/lib/cjs/render/webgl/Target.js.map +1 -1
- package/lib/cjs/render/webgl/TargetGraphics.js +1 -2
- package/lib/cjs/render/webgl/TargetGraphics.js.map +1 -1
- package/lib/cjs/render/webgl/Texture.js +1 -2
- package/lib/cjs/render/webgl/Texture.js.map +1 -1
- package/lib/cjs/render/webgl/ThematicSensors.js +2 -4
- package/lib/cjs/render/webgl/ThematicSensors.js.map +1 -1
- package/lib/cjs/render/webgl/VisibleTileFeatures.js +1 -2
- package/lib/cjs/render/webgl/VisibleTileFeatures.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Animation.js +6 -9
- package/lib/cjs/render/webgl/glsl/Animation.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +1 -2
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Instancing.js +4 -5
- package/lib/cjs/render/webgl/glsl/Instancing.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/RealityMesh.js +2 -4
- package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Surface.js +1 -2
- package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Thematic.js +1 -2
- package/lib/cjs/render/webgl/glsl/Thematic.js.map +1 -1
- package/lib/cjs/tile/ClassifierTileTree.js +3 -3
- package/lib/cjs/tile/ClassifierTileTree.js.map +1 -1
- package/lib/cjs/tile/GltfReader.js +61 -75
- package/lib/cjs/tile/GltfReader.js.map +1 -1
- package/lib/cjs/tile/IModelTile.js +2 -3
- package/lib/cjs/tile/IModelTile.js.map +1 -1
- package/lib/cjs/tile/IModelTileRequestChannels.js +6 -11
- package/lib/cjs/tile/IModelTileRequestChannels.js.map +1 -1
- package/lib/cjs/tile/IModelTileTree.js +5 -9
- package/lib/cjs/tile/IModelTileTree.js.map +1 -1
- package/lib/cjs/tile/ImdlReader.js +13 -17
- package/lib/cjs/tile/ImdlReader.js.map +1 -1
- package/lib/cjs/tile/OrbitGtTileTree.js +2 -2
- package/lib/cjs/tile/OrbitGtTileTree.js.map +1 -1
- package/lib/cjs/tile/PntsReader.js +4 -5
- package/lib/cjs/tile/PntsReader.js.map +1 -1
- package/lib/cjs/tile/PrimaryTileTree.js +22 -32
- package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
- package/lib/cjs/tile/RealityModelTileTree.js +12 -19
- package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
- package/lib/cjs/tile/RealityTile.js +3 -5
- package/lib/cjs/tile/RealityTile.js.map +1 -1
- package/lib/cjs/tile/RealityTileLoader.js +2 -2
- package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
- package/lib/cjs/tile/ThreeDTileFormatInterpreter.js +3 -5
- package/lib/cjs/tile/ThreeDTileFormatInterpreter.js.map +1 -1
- package/lib/cjs/tile/Tile.js +1 -1
- package/lib/cjs/tile/Tile.js.map +1 -1
- package/lib/cjs/tile/TileAdmin.js +22 -27
- package/lib/cjs/tile/TileAdmin.js.map +1 -1
- package/lib/cjs/tile/TileDrawArgs.js +3 -6
- package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
- package/lib/cjs/tile/TileRequestChannels.js +1 -1
- package/lib/cjs/tile/TileRequestChannels.js.map +1 -1
- package/lib/cjs/tile/TileTree.js +2 -3
- package/lib/cjs/tile/TileTree.js.map +1 -1
- package/lib/cjs/tile/TiledGraphicsProvider.js +1 -1
- package/lib/cjs/tile/TiledGraphicsProvider.js.map +1 -1
- package/lib/cjs/tile/map/ArcGISTileMap.js +5 -6
- package/lib/cjs/tile/map/ArcGISTileMap.js.map +1 -1
- package/lib/cjs/tile/map/ArcGisUtilities.js +6 -8
- package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js +4 -7
- package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +6 -8
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js +1 -2
- package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +14 -19
- package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +14 -20
- package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/MapCartoRectangle.js +1 -1
- package/lib/cjs/tile/map/MapCartoRectangle.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerFormatRegistry.js +5 -6
- package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryFormats.js +11 -14
- package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryProvider.js +2 -3
- package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerSources.js +1 -1
- package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
- package/lib/cjs/tile/map/MapTile.js +6 -8
- package/lib/cjs/tile/map/MapTile.js.map +1 -1
- package/lib/cjs/tile/map/MapTileLoader.js +1 -1
- package/lib/cjs/tile/map/MapTileLoader.js.map +1 -1
- package/lib/cjs/tile/map/MapTileTree.js +13 -18
- package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
- package/lib/cjs/tile/map/MapTiledGraphicsProvider.js +6 -7
- package/lib/cjs/tile/map/MapTiledGraphicsProvider.js.map +1 -1
- package/lib/cjs/tile/map/WmsCapabilities.js +4 -5
- package/lib/cjs/tile/map/WmsCapabilities.js.map +1 -1
- package/lib/cjs/tile/map/WmtsCapabilities.js +17 -25
- package/lib/cjs/tile/map/WmtsCapabilities.js.map +1 -1
- package/lib/cjs/tools/ClipViewTool.js +1 -1
- package/lib/cjs/tools/ClipViewTool.js.map +1 -1
- package/lib/cjs/tools/MeasureTool.js +2 -4
- package/lib/cjs/tools/MeasureTool.js.map +1 -1
- package/lib/cjs/tools/PrimitiveTool.js +2 -3
- package/lib/cjs/tools/PrimitiveTool.js.map +1 -1
- package/lib/cjs/tools/SelectTool.js +1 -2
- package/lib/cjs/tools/SelectTool.js.map +1 -1
- package/lib/cjs/tools/Tool.js +2 -3
- package/lib/cjs/tools/Tool.js.map +1 -1
- package/lib/cjs/tools/ToolAdmin.js +2 -4
- package/lib/cjs/tools/ToolAdmin.js.map +1 -1
- package/lib/cjs/tools/ViewTool.js +3 -3
- package/lib/cjs/tools/ViewTool.js.map +1 -1
- package/lib/esm/AccuDraw.js +1 -1
- package/lib/esm/AccuDraw.js.map +1 -1
- package/lib/esm/AccuSnap.js +3 -3
- package/lib/esm/AccuSnap.js.map +1 -1
- package/lib/esm/BriefcaseConnection.js +9 -11
- package/lib/esm/BriefcaseConnection.js.map +1 -1
- package/lib/esm/DisplayStyleState.js +8 -12
- package/lib/esm/DisplayStyleState.js.map +1 -1
- package/lib/esm/DrawingViewState.js +4 -6
- package/lib/esm/DrawingViewState.js.map +1 -1
- package/lib/esm/EnvironmentDecorations.js +2 -3
- package/lib/esm/EnvironmentDecorations.js.map +1 -1
- package/lib/esm/FlashSettings.js +3 -4
- package/lib/esm/FlashSettings.js.map +1 -1
- package/lib/esm/GeoServices.js +7 -9
- package/lib/esm/GeoServices.js.map +1 -1
- package/lib/esm/IModelApp.js +19 -21
- package/lib/esm/IModelApp.js.map +1 -1
- package/lib/esm/IModelConnection.js +1 -1
- package/lib/esm/IModelConnection.js.map +1 -1
- package/lib/esm/IpcApp.js +1 -1
- package/lib/esm/IpcApp.js.map +1 -1
- package/lib/esm/LocalhostIpcApp.js +3 -4
- package/lib/esm/LocalhostIpcApp.js.map +1 -1
- package/lib/esm/ModelState.js +2 -3
- package/lib/esm/ModelState.js.map +1 -1
- package/lib/esm/NativeApp.js +4 -7
- package/lib/esm/NativeApp.js.map +1 -1
- package/lib/esm/NoRenderApp.js +1 -2
- package/lib/esm/NoRenderApp.js.map +1 -1
- package/lib/esm/PlanarClipMaskState.js +1 -1
- package/lib/esm/PlanarClipMaskState.js.map +1 -1
- package/lib/esm/RealityDataSourceContextShareImpl.js +2 -4
- package/lib/esm/RealityDataSourceContextShareImpl.js.map +1 -1
- package/lib/esm/SheetViewState.js +15 -23
- package/lib/esm/SheetViewState.js.map +1 -1
- package/lib/esm/Tiles.js +2 -2
- package/lib/esm/Tiles.js.map +1 -1
- package/lib/esm/ViewContext.js +1 -1
- package/lib/esm/ViewContext.js.map +1 -1
- package/lib/esm/ViewCreator2d.js +4 -5
- package/lib/esm/ViewCreator2d.js.map +1 -1
- package/lib/esm/ViewCreator3d.js +5 -5
- package/lib/esm/ViewCreator3d.js.map +1 -1
- package/lib/esm/ViewState.js +17 -24
- package/lib/esm/ViewState.js.map +1 -1
- package/lib/esm/Viewport.js +22 -32
- package/lib/esm/Viewport.js.map +1 -1
- package/lib/esm/extension/ExtensionImpl.js +1 -1
- package/lib/esm/extension/ExtensionImpl.js.map +1 -1
- package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js +2 -3
- package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
- package/lib/esm/quantity-formatting/QuantityFormatter.js +7 -9
- package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
- package/lib/esm/render/FeatureSymbology.js +1 -2
- package/lib/esm/render/FeatureSymbology.js.map +1 -1
- package/lib/esm/render/GraphicBuilder.js +7 -9
- package/lib/esm/render/GraphicBuilder.js.map +1 -1
- package/lib/esm/render/MockRender.js +1 -2
- package/lib/esm/render/MockRender.js.map +1 -1
- package/lib/esm/render/ParticleCollectionBuilder.js +2 -3
- package/lib/esm/render/ParticleCollectionBuilder.js.map +1 -1
- package/lib/esm/render/RealityMeshParams.js +7 -10
- package/lib/esm/render/RealityMeshParams.js.map +1 -1
- package/lib/esm/render/RenderPlan.js +1 -1
- package/lib/esm/render/RenderPlan.js.map +1 -1
- package/lib/esm/render/RenderSystem.js +1 -2
- package/lib/esm/render/RenderSystem.js.map +1 -1
- package/lib/esm/render/VisibleFeature.js +2 -4
- package/lib/esm/render/VisibleFeature.js.map +1 -1
- package/lib/esm/render/primitives/AuxChannelTable.js +6 -9
- package/lib/esm/render/primitives/AuxChannelTable.js.map +1 -1
- package/lib/esm/render/primitives/EdgeParams.js +6 -7
- package/lib/esm/render/primitives/EdgeParams.js.map +1 -1
- package/lib/esm/render/primitives/PolylineParams.js +2 -3
- package/lib/esm/render/primitives/PolylineParams.js.map +1 -1
- package/lib/esm/render/primitives/VertexKey.js +1 -1
- package/lib/esm/render/primitives/VertexKey.js.map +1 -1
- package/lib/esm/render/primitives/VertexTable.js +1 -1
- package/lib/esm/render/primitives/VertexTable.js.map +1 -1
- package/lib/esm/render/primitives/VertexTableSplitter.js +6 -8
- package/lib/esm/render/primitives/VertexTableSplitter.js.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryAccumulator.js +9 -11
- package/lib/esm/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryListBuilder.js +3 -5
- package/lib/esm/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshBuilder.js +1 -1
- package/lib/esm/render/primitives/mesh/MeshBuilder.js.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshPrimitives.js +2 -3
- package/lib/esm/render/primitives/mesh/MeshPrimitives.js.map +1 -1
- package/lib/esm/render/webgl/BranchState.js +9 -10
- package/lib/esm/render/webgl/BranchState.js.map +1 -1
- package/lib/esm/render/webgl/EDL.js +17 -21
- package/lib/esm/render/webgl/EDL.js.map +1 -1
- package/lib/esm/render/webgl/FeatureOverrides.js +2 -2
- package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
- package/lib/esm/render/webgl/Graphic.js +3 -5
- package/lib/esm/render/webgl/Graphic.js.map +1 -1
- package/lib/esm/render/webgl/IndexedEdgeGeometry.js +1 -1
- package/lib/esm/render/webgl/IndexedEdgeGeometry.js.map +1 -1
- package/lib/esm/render/webgl/InstancedGeometry.js +2 -3
- package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
- package/lib/esm/render/webgl/Mesh.js +7 -10
- package/lib/esm/render/webgl/Mesh.js.map +1 -1
- package/lib/esm/render/webgl/MeshData.js +1 -2
- package/lib/esm/render/webgl/MeshData.js.map +1 -1
- package/lib/esm/render/webgl/PlanarClassifier.js +10 -15
- package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/esm/render/webgl/RealityMesh.js +5 -8
- package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
- package/lib/esm/render/webgl/RealityModelUniforms.js +3 -4
- package/lib/esm/render/webgl/RealityModelUniforms.js.map +1 -1
- package/lib/esm/render/webgl/RenderCommands.js +7 -8
- package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
- package/lib/esm/render/webgl/SceneCompositor.js +7 -9
- package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/esm/render/webgl/ShaderBuilder.js +1 -2
- package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
- package/lib/esm/render/webgl/SolarShadowMap.js +1 -2
- package/lib/esm/render/webgl/SolarShadowMap.js.map +1 -1
- package/lib/esm/render/webgl/SurfaceGeometry.js +1 -1
- package/lib/esm/render/webgl/SurfaceGeometry.js.map +1 -1
- package/lib/esm/render/webgl/System.js +12 -16
- package/lib/esm/render/webgl/System.js.map +1 -1
- package/lib/esm/render/webgl/Target.js +9 -14
- package/lib/esm/render/webgl/Target.js.map +1 -1
- package/lib/esm/render/webgl/TargetGraphics.js +1 -2
- package/lib/esm/render/webgl/TargetGraphics.js.map +1 -1
- package/lib/esm/render/webgl/Texture.js +1 -2
- package/lib/esm/render/webgl/Texture.js.map +1 -1
- package/lib/esm/render/webgl/ThematicSensors.js +2 -4
- package/lib/esm/render/webgl/ThematicSensors.js.map +1 -1
- package/lib/esm/render/webgl/VisibleTileFeatures.js +1 -2
- package/lib/esm/render/webgl/VisibleTileFeatures.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Animation.js +6 -9
- package/lib/esm/render/webgl/glsl/Animation.js.map +1 -1
- package/lib/esm/render/webgl/glsl/FeatureSymbology.js +1 -2
- package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Instancing.js +4 -5
- package/lib/esm/render/webgl/glsl/Instancing.js.map +1 -1
- package/lib/esm/render/webgl/glsl/RealityMesh.js +2 -4
- package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Surface.js +1 -2
- package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Thematic.js +1 -2
- package/lib/esm/render/webgl/glsl/Thematic.js.map +1 -1
- package/lib/esm/tile/ClassifierTileTree.js +3 -3
- package/lib/esm/tile/ClassifierTileTree.js.map +1 -1
- package/lib/esm/tile/GltfReader.js +61 -75
- package/lib/esm/tile/GltfReader.js.map +1 -1
- package/lib/esm/tile/IModelTile.js +2 -3
- package/lib/esm/tile/IModelTile.js.map +1 -1
- package/lib/esm/tile/IModelTileRequestChannels.js +6 -11
- package/lib/esm/tile/IModelTileRequestChannels.js.map +1 -1
- package/lib/esm/tile/IModelTileTree.js +5 -9
- package/lib/esm/tile/IModelTileTree.js.map +1 -1
- package/lib/esm/tile/ImdlReader.js +13 -17
- package/lib/esm/tile/ImdlReader.js.map +1 -1
- package/lib/esm/tile/OrbitGtTileTree.js +2 -2
- package/lib/esm/tile/OrbitGtTileTree.js.map +1 -1
- package/lib/esm/tile/PntsReader.js +4 -5
- package/lib/esm/tile/PntsReader.js.map +1 -1
- package/lib/esm/tile/PrimaryTileTree.js +22 -32
- package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
- package/lib/esm/tile/RealityModelTileTree.js +12 -19
- package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
- package/lib/esm/tile/RealityTile.js +3 -5
- package/lib/esm/tile/RealityTile.js.map +1 -1
- package/lib/esm/tile/RealityTileLoader.js +2 -2
- package/lib/esm/tile/RealityTileLoader.js.map +1 -1
- package/lib/esm/tile/ThreeDTileFormatInterpreter.js +3 -5
- package/lib/esm/tile/ThreeDTileFormatInterpreter.js.map +1 -1
- package/lib/esm/tile/Tile.js +1 -1
- package/lib/esm/tile/Tile.js.map +1 -1
- package/lib/esm/tile/TileAdmin.js +22 -27
- package/lib/esm/tile/TileAdmin.js.map +1 -1
- package/lib/esm/tile/TileDrawArgs.js +3 -6
- package/lib/esm/tile/TileDrawArgs.js.map +1 -1
- package/lib/esm/tile/TileRequestChannels.js +1 -1
- package/lib/esm/tile/TileRequestChannels.js.map +1 -1
- package/lib/esm/tile/TileTree.js +2 -3
- package/lib/esm/tile/TileTree.js.map +1 -1
- package/lib/esm/tile/TiledGraphicsProvider.js +1 -1
- package/lib/esm/tile/TiledGraphicsProvider.js.map +1 -1
- package/lib/esm/tile/map/ArcGISTileMap.js +5 -6
- package/lib/esm/tile/map/ArcGISTileMap.js.map +1 -1
- package/lib/esm/tile/map/ArcGisUtilities.js +6 -8
- package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js +4 -7
- package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +6 -8
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js +1 -2
- package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +14 -19
- package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +14 -20
- package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/MapCartoRectangle.js +1 -1
- package/lib/esm/tile/map/MapCartoRectangle.js.map +1 -1
- package/lib/esm/tile/map/MapLayerFormatRegistry.js +5 -6
- package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryFormats.js +11 -14
- package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryProvider.js +2 -3
- package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/MapLayerSources.js +1 -1
- package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
- package/lib/esm/tile/map/MapTile.js +6 -8
- package/lib/esm/tile/map/MapTile.js.map +1 -1
- package/lib/esm/tile/map/MapTileLoader.js +1 -1
- package/lib/esm/tile/map/MapTileLoader.js.map +1 -1
- package/lib/esm/tile/map/MapTileTree.js +13 -18
- package/lib/esm/tile/map/MapTileTree.js.map +1 -1
- package/lib/esm/tile/map/MapTiledGraphicsProvider.js +6 -7
- package/lib/esm/tile/map/MapTiledGraphicsProvider.js.map +1 -1
- package/lib/esm/tile/map/WmsCapabilities.js +4 -5
- package/lib/esm/tile/map/WmsCapabilities.js.map +1 -1
- package/lib/esm/tile/map/WmtsCapabilities.js +17 -25
- package/lib/esm/tile/map/WmtsCapabilities.js.map +1 -1
- package/lib/esm/tools/ClipViewTool.js +1 -1
- package/lib/esm/tools/ClipViewTool.js.map +1 -1
- package/lib/esm/tools/MeasureTool.js +2 -4
- package/lib/esm/tools/MeasureTool.js.map +1 -1
- package/lib/esm/tools/PrimitiveTool.js +2 -3
- package/lib/esm/tools/PrimitiveTool.js.map +1 -1
- package/lib/esm/tools/SelectTool.js +1 -2
- package/lib/esm/tools/SelectTool.js.map +1 -1
- package/lib/esm/tools/Tool.js +2 -3
- package/lib/esm/tools/Tool.js.map +1 -1
- package/lib/esm/tools/ToolAdmin.js +2 -4
- package/lib/esm/tools/ToolAdmin.js.map +1 -1
- package/lib/esm/tools/ViewTool.js +3 -3
- package/lib/esm/tools/ViewTool.js.map +1 -1
- package/package.json +18 -18
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WmsMapLayerImageryProvider.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/WmsMapLayerImageryProvider.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\nimport { IModelStatus } from \"@itwin/core-bentley\";\nimport { Cartographic, ImageMapLayerSettings, MapSubLayerSettings, ServerError } from \"@itwin/core-common\";\nimport { Point2d } from \"@itwin/core-geometry\";\nimport {\n ImageryMapTileTree, MapCartoRectangle, MapLayerImageryProvider, MapLayerImageryProviderStatus, QuadId, WmsCapabilities,\n WmsCapability, WmsUtilities,\n} from \"../../internal\";\n\n// eslint-disable-next-line prefer-const\nlet doToolTips = true;\n\nconst scratchPoint2d = Point2d.createZero();\n\n/** @internal */\nexport interface WmsCrsSupport {\n support3857: boolean;\n support4326: boolean;\n}\n\n/** @internal */\nexport class WmsMapLayerImageryProvider extends MapLayerImageryProvider {\n private _capabilities?: WmsCapabilities;\n private _allLayersRange?: MapCartoRectangle;\n private _subLayerRanges = new Map<string, MapCartoRectangle>();\n private _baseUrl: string;\n // eslint-disable-next-line @typescript-eslint/naming-convention\n private _crsSupport: WmsCrsSupport|undefined;\n\n constructor(settings: ImageMapLayerSettings) {\n super(settings, false);\n this._baseUrl = WmsUtilities.getBaseUrl(this._settings.url);\n }\n\n public override async initialize(): Promise<void> {\n try {\n const credentials = (this._settings.userName && this._settings.password ? {user: this._settings.userName, password: this._settings.password} : undefined);\n this._capabilities = await WmsCapabilities.create(this._baseUrl, credentials);\n if (undefined !== this._capabilities) {\n this._allLayersRange = this._capabilities.cartoRange;\n if (this._capabilities.layer && Array.isArray(this._capabilities.layer.subLayers)) {\n const mapCartoRanges = ((subLayer: WmsCapability.SubLayer) => {\n if (Array.isArray(subLayer.children))\n subLayer.children.forEach((child) => mapCartoRanges(child));\n else if (subLayer.cartoRange)\n this._subLayerRanges.set(subLayer.name, subLayer.cartoRange);\n });\n this._capabilities.layer.subLayers.forEach((subLayer) => mapCartoRanges(subLayer));\n this._settings.subLayers.forEach((subLayer) => {\n if (subLayer.isNamed && this._settings.isSubLayerVisible(subLayer)) {\n const subLayerRange = this._subLayerRanges.get(subLayer.name);\n if (subLayerRange)\n if (this.cartoRange)\n this.cartoRange.extendRange(subLayerRange);\n else\n this.cartoRange = subLayerRange.clone();\n }\n });\n }\n\n if (!this.cartoRange)\n this.cartoRange = this._allLayersRange;\n\n this._crsSupport = this.getCrsSupport();\n }\n } catch (error: any) {\n // Don't throw error if unauthorized status:\n // We want the tile tree to be created, so that end-user can get feedback on which layer is missing credentials.\n // When credentials will be provided, a new provider will be created, and initialization should be fine.\n if (error?.status === 401) {\n this.setStatus(MapLayerImageryProviderStatus.RequireAuth);\n } else {\n throw new ServerError(IModelStatus.ValidationFailed, \"\");\n }\n }\n }\n\n private getVisibleLayerString() {\n const layerNames = this.getVisibleLayers().map((layer)=>layer.name);\n return layerNames.join(\"%2C\");\n }\n\n private getVisibleLayers(): MapSubLayerSettings[] {\n return this._settings.subLayers.filter((subLayer) => this._settings.isSubLayerVisible(subLayer) && subLayer.isNamed);\n }\n\n private getVisibleLayersSrs() {\n const visibleLayers = this.getVisibleLayers();\n const visibleLayerNames = visibleLayers.map((layer) => layer.name);\n return this._capabilities?.getSubLayersCrs(visibleLayerNames);\n }\n\n private getQueryableLayers(): string[] {\n const layerNames = new Array<string>();\n const getQueryableSubLayers = ((subLayer: WmsCapability.SubLayer) => {\n if (!subLayer)\n return;\n\n if (subLayer.queryable)\n layerNames.push(subLayer.name);\n\n subLayer.children?.forEach((childSubLayer) => getQueryableSubLayers(childSubLayer));\n });\n\n this._capabilities?.layer?.subLayers?.forEach((subLayer) => getQueryableSubLayers(subLayer));\n return layerNames;\n }\n\n private getVisibleQueryableLayersString(): string {\n const layers = new Array<string>();\n const queryable = this.getQueryableLayers();\n const visibleLayerNames = this.getVisibleLayers().map((layer) => layer.name);\n queryable.forEach((layer: string) => {\n if (visibleLayerNames.includes(layer))\n layers.push(layer);\n });\n\n return layers.join(\"%2C\");\n }\n\n public getCrsSupport(): WmsCrsSupport {\n const layersCrs = this.getVisibleLayersSrs();\n\n let support3857: boolean|undefined;\n let support4326: boolean|undefined;\n if (layersCrs) {\n for (const [_layerName, crs] of layersCrs) {\n if (crs.find((layerCrs) => layerCrs.includes(\"3857\")) === undefined ) {\n support3857 = false;\n } else if (support3857 === undefined) {\n support3857 = true;\n }\n\n if (crs.find((layerCrs) => layerCrs.includes(\"4326\")) === undefined ) {\n support4326 = false;\n } else if (support4326 === undefined) {\n support4326 = true;\n }\n }\n }\n\n return {support3857: support3857 ?? false, support4326: support4326 ?? false};\n }\n\n // WMS standard requires 'TRUE' or 'FALSE' (case sensitive) values.\n public override get transparentBackgroundString(): string { return this._settings.transparentBackground ? \"TRUE\" : \"FALSE\"; }\n\n // construct the Url from the desired Tile\n public async constructUrl(row: number, column: number, zoomLevel: number): Promise<string> {\n\n let bboxString =\"\";\n let crsString =\"\";\n\n // We support 2 SRS: EPSG:3857 and EPSG:4326, we prefer EPSG:3857.\n if (this._crsSupport?.support3857) {\n bboxString = this.getEPSG3857ExtentString(row, column, zoomLevel);\n crsString= \"EPSG%3A3857\";\n } else if (this._crsSupport?.support4326) {\n // The WMS 1.3.0 specification mandates using the axis ordering as defined in the EPSG database.\n // For instance, for EPSG:4326 the axis ordering is latitude/longitude, or north/east.\n // WMS 1.1.0 always requires the axis ordering to be longitude/latitude. *sigh*\n if (this._capabilities !== undefined) {\n bboxString = this.getEPSG4326ExtentString(row, column, zoomLevel, this._capabilities?.isVersion13); // lat/long ordering\n crsString= \"EPSG%3A4326\";\n }\n\n }\n\n const layerString = this.getVisibleLayerString();\n\n if (bboxString.length === 0 || crsString.length === 0 ||layerString.length === 0)\n return \"\";\n\n const crsParamName = this._capabilities?.isVersion13 ? \"CRS\" : \"SRS\";\n return `${this._baseUrl}?SERVICE=WMS&VERSION=${this._capabilities?.version}&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=${this.transparentBackgroundString}&LAYERS=${layerString}&WIDTH=${this.tileSize}&HEIGHT=${this.tileSize}&${crsParamName}=${crsString}&STYLES=&BBOX=${bboxString}`;\n }\n\n public override async getToolTip(strings: string[], quadId: QuadId, carto: Cartographic, tree: ImageryMapTileTree): Promise<void> {\n await super.getToolTip(strings, quadId, carto, tree);\n const infoFormats = this._capabilities?.featureInfoFormats;\n if (!doToolTips || undefined === infoFormats)\n return;\n let formatString = infoFormats.find((format) => format === \"text/html\");\n if (!formatString)\n formatString = infoFormats[0];\n\n const bboxString = this.getEPSG3857ExtentString(quadId.row, quadId.column, quadId.level);\n const layerString = this.getVisibleQueryableLayersString();\n if (layerString.length === 0)\n return;\n const rectangle = tree.getTileRectangle(quadId);\n const fraction = rectangle.worldToLocal(Point2d.create(carto.longitude, carto.latitude, scratchPoint2d))!;\n const x = Math.floor(.5 + fraction.x * this.tileSize);\n const y = Math.floor(.5 + (1.0 - fraction.y) * this.tileSize);\n const coordinateString = this._capabilities?.isVersion13 ? `&i=${x}&j=${y}` : `&x=${x}&y=${y}`;\n const crsParamName = this._capabilities?.isVersion13 ? \"CRS\" : \"SRS\";\n const getFeatureUrl = `${this._baseUrl}?SERVICE=WMS&VERSION=${this._capabilities?.version}&REQUEST=GetFeatureInfo&LAYERS=${layerString}&WIDTH=${this.tileSize}&HEIGHT=${this.tileSize}&${crsParamName}=EPSG%3A3857&BBOX=${bboxString}&QUERY_LAYERS=${layerString}${coordinateString}&info_format=${formatString}`;\n return this.toolTipFromUrl(strings, getFeatureUrl);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"WmsMapLayerImageryProvider.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/WmsMapLayerImageryProvider.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\nimport { IModelStatus } from \"@itwin/core-bentley\";\nimport { Cartographic, ImageMapLayerSettings, MapSubLayerSettings, ServerError } from \"@itwin/core-common\";\nimport { Point2d } from \"@itwin/core-geometry\";\nimport {\n ImageryMapTileTree, MapCartoRectangle, MapLayerImageryProvider, MapLayerImageryProviderStatus, QuadId, WmsCapabilities,\n WmsCapability, WmsUtilities,\n} from \"../../internal\";\n\n// eslint-disable-next-line prefer-const\nlet doToolTips = true;\n\nconst scratchPoint2d = Point2d.createZero();\n\n/** @internal */\nexport interface WmsCrsSupport {\n support3857: boolean;\n support4326: boolean;\n}\n\n/** @internal */\nexport class WmsMapLayerImageryProvider extends MapLayerImageryProvider {\n private _capabilities?: WmsCapabilities;\n private _allLayersRange?: MapCartoRectangle;\n private _subLayerRanges = new Map<string, MapCartoRectangle>();\n private _baseUrl: string;\n // eslint-disable-next-line @typescript-eslint/naming-convention\n private _crsSupport: WmsCrsSupport|undefined;\n\n constructor(settings: ImageMapLayerSettings) {\n super(settings, false);\n this._baseUrl = WmsUtilities.getBaseUrl(this._settings.url);\n }\n\n public override async initialize(): Promise<void> {\n try {\n const credentials = (this._settings.userName && this._settings.password ? {user: this._settings.userName, password: this._settings.password} : undefined);\n this._capabilities = await WmsCapabilities.create(this._baseUrl, credentials);\n if (undefined !== this._capabilities) {\n this._allLayersRange = this._capabilities.cartoRange;\n if (this._capabilities.layer && Array.isArray(this._capabilities.layer.subLayers)) {\n const mapCartoRanges = ((subLayer: WmsCapability.SubLayer) => {\n if (Array.isArray(subLayer.children))\n subLayer.children.forEach((child) => mapCartoRanges(child));\n else if (subLayer.cartoRange)\n this._subLayerRanges.set(subLayer.name, subLayer.cartoRange);\n });\n this._capabilities.layer.subLayers.forEach((subLayer) => mapCartoRanges(subLayer));\n this._settings.subLayers.forEach((subLayer) => {\n if (subLayer.isNamed && this._settings.isSubLayerVisible(subLayer)) {\n const subLayerRange = this._subLayerRanges.get(subLayer.name);\n if (subLayerRange)\n if (this.cartoRange)\n this.cartoRange.extendRange(subLayerRange);\n else\n this.cartoRange = subLayerRange.clone();\n }\n });\n }\n\n if (!this.cartoRange)\n this.cartoRange = this._allLayersRange;\n\n this._crsSupport = this.getCrsSupport();\n }\n } catch (error: any) {\n // Don't throw error if unauthorized status:\n // We want the tile tree to be created, so that end-user can get feedback on which layer is missing credentials.\n // When credentials will be provided, a new provider will be created, and initialization should be fine.\n if (error?.status === 401) {\n this.setStatus(MapLayerImageryProviderStatus.RequireAuth);\n } else {\n throw new ServerError(IModelStatus.ValidationFailed, \"\");\n }\n }\n }\n\n private getVisibleLayerString() {\n const layerNames = this.getVisibleLayers().map((layer)=>layer.name);\n return layerNames.join(\"%2C\");\n }\n\n private getVisibleLayers(): MapSubLayerSettings[] {\n return this._settings.subLayers.filter((subLayer) => this._settings.isSubLayerVisible(subLayer) && subLayer.isNamed);\n }\n\n private getVisibleLayersSrs() {\n const visibleLayers = this.getVisibleLayers();\n const visibleLayerNames = visibleLayers.map((layer) => layer.name);\n return this._capabilities?.getSubLayersCrs(visibleLayerNames);\n }\n\n private getQueryableLayers(): string[] {\n const layerNames = new Array<string>();\n const getQueryableSubLayers = ((subLayer: WmsCapability.SubLayer) => {\n if (!subLayer)\n return;\n\n if (subLayer.queryable)\n layerNames.push(subLayer.name);\n\n subLayer.children?.forEach((childSubLayer) => getQueryableSubLayers(childSubLayer));\n });\n\n this._capabilities?.layer?.subLayers?.forEach((subLayer) => getQueryableSubLayers(subLayer));\n return layerNames;\n }\n\n private getVisibleQueryableLayersString(): string {\n const layers = new Array<string>();\n const queryable = this.getQueryableLayers();\n const visibleLayerNames = this.getVisibleLayers().map((layer) => layer.name);\n queryable.forEach((layer: string) => {\n if (visibleLayerNames.includes(layer))\n layers.push(layer);\n });\n\n return layers.join(\"%2C\");\n }\n\n public getCrsSupport(): WmsCrsSupport {\n const layersCrs = this.getVisibleLayersSrs();\n\n let support3857: boolean|undefined;\n let support4326: boolean|undefined;\n if (layersCrs) {\n for (const [_layerName, crs] of layersCrs) {\n if (crs.find((layerCrs) => layerCrs.includes(\"3857\")) === undefined ) {\n support3857 = false;\n } else if (support3857 === undefined) {\n support3857 = true;\n }\n\n if (crs.find((layerCrs) => layerCrs.includes(\"4326\")) === undefined ) {\n support4326 = false;\n } else if (support4326 === undefined) {\n support4326 = true;\n }\n }\n }\n\n return {support3857: support3857 ?? false, support4326: support4326 ?? false};\n }\n\n // WMS standard requires 'TRUE' or 'FALSE' (case sensitive) values.\n public override get transparentBackgroundString(): string { return this._settings.transparentBackground ? \"TRUE\" : \"FALSE\"; }\n\n // construct the Url from the desired Tile\n public async constructUrl(row: number, column: number, zoomLevel: number): Promise<string> {\n\n let bboxString =\"\";\n let crsString =\"\";\n\n // We support 2 SRS: EPSG:3857 and EPSG:4326, we prefer EPSG:3857.\n if (this._crsSupport?.support3857) {\n bboxString = this.getEPSG3857ExtentString(row, column, zoomLevel);\n crsString= \"EPSG%3A3857\";\n } else if (this._crsSupport?.support4326) {\n // The WMS 1.3.0 specification mandates using the axis ordering as defined in the EPSG database.\n // For instance, for EPSG:4326 the axis ordering is latitude/longitude, or north/east.\n // WMS 1.1.0 always requires the axis ordering to be longitude/latitude. *sigh*\n if (this._capabilities !== undefined) {\n bboxString = this.getEPSG4326ExtentString(row, column, zoomLevel, this._capabilities?.isVersion13); // lat/long ordering\n crsString= \"EPSG%3A4326\";\n }\n\n }\n\n const layerString = this.getVisibleLayerString();\n\n if (bboxString.length === 0 || crsString.length === 0 ||layerString.length === 0)\n return \"\";\n\n const crsParamName = this._capabilities?.isVersion13 ? \"CRS\" : \"SRS\";\n return `${this._baseUrl}?SERVICE=WMS&VERSION=${this._capabilities?.version}&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=${this.transparentBackgroundString}&LAYERS=${layerString}&WIDTH=${this.tileSize}&HEIGHT=${this.tileSize}&${crsParamName}=${crsString}&STYLES=&BBOX=${bboxString}`;\n }\n\n public override async getToolTip(strings: string[], quadId: QuadId, carto: Cartographic, tree: ImageryMapTileTree): Promise<void> {\n await super.getToolTip(strings, quadId, carto, tree);\n const infoFormats = this._capabilities?.featureInfoFormats;\n if (!doToolTips || undefined === infoFormats)\n return;\n let formatString = infoFormats.find((format) => format === \"text/html\");\n if (!formatString)\n formatString = infoFormats[0];\n\n const bboxString = this.getEPSG3857ExtentString(quadId.row, quadId.column, quadId.level);\n const layerString = this.getVisibleQueryableLayersString();\n if (layerString.length === 0)\n return;\n const rectangle = tree.getTileRectangle(quadId);\n const fraction = rectangle.worldToLocal(Point2d.create(carto.longitude, carto.latitude, scratchPoint2d))!;\n const x = Math.floor(.5 + fraction.x * this.tileSize);\n const y = Math.floor(.5 + (1.0 - fraction.y) * this.tileSize);\n const coordinateString = this._capabilities?.isVersion13 ? `&i=${x}&j=${y}` : `&x=${x}&y=${y}`;\n const crsParamName = this._capabilities?.isVersion13 ? \"CRS\" : \"SRS\";\n const getFeatureUrl = `${this._baseUrl}?SERVICE=WMS&VERSION=${this._capabilities?.version}&REQUEST=GetFeatureInfo&LAYERS=${layerString}&WIDTH=${this.tileSize}&HEIGHT=${this.tileSize}&${crsParamName}=EPSG%3A3857&BBOX=${bboxString}&QUERY_LAYERS=${layerString}${coordinateString}&info_format=${formatString}`;\n return this.toolTipFromUrl(strings, getFeatureUrl);\n }\n}\n"]}
|
|
@@ -35,7 +35,7 @@ class WmtsMapLayerImageryProvider extends internal_1.MapLayerImageryProvider {
|
|
|
35
35
|
// Don't throw error if unauthorized status:
|
|
36
36
|
// We want the tile tree to be created, so that end-user can get feedback on which layer is missing credentials.
|
|
37
37
|
// When credentials will be provided, a new provider will be created, and initialization should be fine.
|
|
38
|
-
if (
|
|
38
|
+
if (error?.status === 401) {
|
|
39
39
|
this.setStatus(internal_1.MapLayerImageryProviderStatus.RequireAuth);
|
|
40
40
|
}
|
|
41
41
|
else {
|
|
@@ -54,11 +54,9 @@ class WmtsMapLayerImageryProvider extends internal_1.MapLayerImageryProvider {
|
|
|
54
54
|
// Each layer can be served in multiple tile matrix set (i.e. TileTree).
|
|
55
55
|
// We have to pick one for each layer: for now we look for a Google Maps compatible tile tree.
|
|
56
56
|
initPreferredTileMatrixSet() {
|
|
57
|
-
|
|
58
|
-
const
|
|
59
|
-
|
|
60
|
-
(_d = (_c = this._capabilities) === null || _c === void 0 ? void 0 : _c.contents) === null || _d === void 0 ? void 0 : _d.layers.forEach((layer) => {
|
|
61
|
-
var _a, _b;
|
|
57
|
+
const googleMapsTms = this._capabilities?.contents?.getGoogleMapsCompatibleTileMatrixSet();
|
|
58
|
+
const wellGoogleKnownTms = googleMapsTms?.find((tms) => tms.wellKnownScaleSet?.toLowerCase().includes(internal_1.WmtsConstants.GOOGLEMAPS_COMPATIBLE_WELLKNOWNNAME));
|
|
59
|
+
this._capabilities?.contents?.layers.forEach((layer) => {
|
|
62
60
|
let preferredTms;
|
|
63
61
|
if (wellGoogleKnownTms && layer.tileMatrixSetLinks.some((tmsl) => tmsl.tileMatrixSet === wellGoogleKnownTms.identifier)) {
|
|
64
62
|
// Favor tile matrix set that was explicitly marked as GoogleMaps compatible
|
|
@@ -67,30 +65,29 @@ class WmtsMapLayerImageryProvider extends internal_1.MapLayerImageryProvider {
|
|
|
67
65
|
else {
|
|
68
66
|
// Search all compatible tile set matrix if previous attempt didn't work.
|
|
69
67
|
// If more than one candidate is found, pick the tile set with the most LODs.
|
|
70
|
-
let tileMatrixSets = googleMapsTms
|
|
68
|
+
let tileMatrixSets = googleMapsTms?.filter((tms) => {
|
|
71
69
|
return layer.tileMatrixSetLinks.some((tmsl) => tmsl.tileMatrixSet === tms.identifier);
|
|
72
70
|
});
|
|
73
71
|
if (!tileMatrixSets || tileMatrixSets.length === 0) {
|
|
74
|
-
const eps4326CompatibleTms =
|
|
75
|
-
tileMatrixSets = eps4326CompatibleTms
|
|
72
|
+
const eps4326CompatibleTms = this._capabilities?.contents?.getEpsg4326CompatibleTileMatrixSet();
|
|
73
|
+
tileMatrixSets = eps4326CompatibleTms?.filter((tms) => {
|
|
76
74
|
return layer.tileMatrixSetLinks.some((tmsl) => tmsl.tileMatrixSet === tms.identifier);
|
|
77
75
|
});
|
|
78
76
|
}
|
|
79
77
|
if (tileMatrixSets && tileMatrixSets.length === 1)
|
|
80
78
|
preferredTms = tileMatrixSets[0];
|
|
81
|
-
else if (tileMatrixSets &&
|
|
79
|
+
else if (tileMatrixSets && tileMatrixSets?.length > 1)
|
|
82
80
|
preferredTms = tileMatrixSets.reduce((prev, current) => (prev.tileMatrix.length > current.tileMatrix.length) ? prev : current);
|
|
83
81
|
}
|
|
84
82
|
if (preferredTms !== undefined) {
|
|
85
83
|
const tmsLink = layer.tileMatrixSetLinks.find((tmsl) => tmsl.tileMatrixSet === preferredTms.identifier);
|
|
86
|
-
this._preferredLayerTileMatrixSet.set(layer.identifier, { tileMatrixSet: preferredTms, limits: tmsLink
|
|
84
|
+
this._preferredLayerTileMatrixSet.set(layer.identifier, { tileMatrixSet: preferredTms, limits: tmsLink?.tileMatrixSetLimits });
|
|
87
85
|
}
|
|
88
86
|
});
|
|
89
87
|
}
|
|
90
88
|
// Each layer can be published different style. We look for a style flagged as 'Default'.
|
|
91
89
|
initPreferredStyle() {
|
|
92
|
-
|
|
93
|
-
(_b = (_a = this._capabilities) === null || _a === void 0 ? void 0 : _a.contents) === null || _b === void 0 ? void 0 : _b.layers.forEach((layer) => {
|
|
90
|
+
this._capabilities?.contents?.layers.forEach((layer) => {
|
|
94
91
|
let preferredStyle;
|
|
95
92
|
if (layer.styles.length === 1)
|
|
96
93
|
preferredStyle = layer.styles[0];
|
|
@@ -107,8 +104,7 @@ class WmtsMapLayerImageryProvider extends internal_1.MapLayerImageryProvider {
|
|
|
107
104
|
});
|
|
108
105
|
}
|
|
109
106
|
initCartoRange() {
|
|
110
|
-
|
|
111
|
-
(_b = (_a = this._capabilities) === null || _a === void 0 ? void 0 : _a.contents) === null || _b === void 0 ? void 0 : _b.layers.forEach((layer) => {
|
|
107
|
+
this._capabilities?.contents?.layers.forEach((layer) => {
|
|
112
108
|
if (layer.wsg84BoundingBox) {
|
|
113
109
|
if (this.cartoRange)
|
|
114
110
|
this.cartoRange.extendRange(layer.wsg84BoundingBox);
|
|
@@ -121,14 +117,13 @@ class WmtsMapLayerImageryProvider extends internal_1.MapLayerImageryProvider {
|
|
|
121
117
|
return this._preferredLayerTileMatrixSet.get(this.displayedLayerName);
|
|
122
118
|
}
|
|
123
119
|
_generateChildIds(tile, resolveChildren) {
|
|
124
|
-
var _a, _b;
|
|
125
120
|
const childIds = this.getPotentialChildIds(tile);
|
|
126
121
|
const matrixSetAndLimits = this.getDisplayedTileMatrixSetAndLimits();
|
|
127
122
|
if (!matrixSetAndLimits) {
|
|
128
123
|
(0, core_bentley_1.assert)(false); // Must always hava a matrix set.
|
|
129
124
|
return;
|
|
130
125
|
}
|
|
131
|
-
const limits =
|
|
126
|
+
const limits = matrixSetAndLimits.limits?.[tile.quadId.level + 1]?.limits;
|
|
132
127
|
if (!limits) {
|
|
133
128
|
resolveChildren(childIds);
|
|
134
129
|
return;
|
|
@@ -140,9 +135,8 @@ class WmtsMapLayerImageryProvider extends internal_1.MapLayerImageryProvider {
|
|
|
140
135
|
resolveChildren(availableChildIds);
|
|
141
136
|
}
|
|
142
137
|
get useGeographicTilingScheme() {
|
|
143
|
-
var _a, _b;
|
|
144
138
|
const matrixSetAndLimits = this.getDisplayedTileMatrixSetAndLimits();
|
|
145
|
-
return matrixSetAndLimits ? (
|
|
139
|
+
return matrixSetAndLimits ? (matrixSetAndLimits?.tileMatrixSet.identifier?.includes("4326") || matrixSetAndLimits?.tileMatrixSet.supportedCrs?.includes("4326")) : false;
|
|
146
140
|
}
|
|
147
141
|
async constructUrl(row, column, zoomLevel) {
|
|
148
142
|
const matrixSetAndLimits = this.getDisplayedTileMatrixSetAndLimits();
|
|
@@ -152,7 +146,7 @@ class WmtsMapLayerImageryProvider extends internal_1.MapLayerImageryProvider {
|
|
|
152
146
|
let tileMatrix;
|
|
153
147
|
if (matrixSetAndLimits && matrixSetAndLimits.tileMatrixSet.tileMatrix.length > zoomLevel)
|
|
154
148
|
tileMatrix = matrixSetAndLimits.tileMatrixSet.tileMatrix[zoomLevel].identifier;
|
|
155
|
-
const styleParam = (
|
|
149
|
+
const styleParam = (style?.identifier === undefined ? "" : `&style=${style.identifier}`);
|
|
156
150
|
if (tileMatrix !== undefined && matrixSetAndLimits !== undefined)
|
|
157
151
|
return `${this._baseUrl}?Service=WMTS&Version=1.0.0&Request=GetTile&Format=image%2Fpng&layer=${this.displayedLayerName}${styleParam}&TileMatrixSet=${matrixSetAndLimits.tileMatrixSet.identifier}&TileMatrix=${tileMatrix}&TileCol=${column}&TileRow=${row} `;
|
|
158
152
|
else
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WmtsMapLayerImageryProvider.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\nimport { assert } from \"@itwin/core-bentley\";\nimport { ImageMapLayerSettings, IModelStatus, ServerError } from \"@itwin/core-common\";\nimport {\n ImageryMapTile,\n MapLayerImageryProvider,\n MapLayerImageryProviderStatus,\n QuadId,\n WmsUtilities, WmtsCapabilities, WmtsCapability, WmtsConstants,\n} from \"../../internal\";\n\ninterface TileMatrixSetAndLimits { tileMatrixSet: WmtsCapability.TileMatrixSet, limits: WmtsCapability.TileMatrixSetLimits[] | undefined }\n/** @internal */\nexport class WmtsMapLayerImageryProvider extends MapLayerImageryProvider {\n private _baseUrl: string;\n private _capabilities?: WmtsCapabilities;\n private _preferredLayerTileMatrixSet = new Map<string, TileMatrixSetAndLimits>();\n private _preferredLayerStyle = new Map<string, WmtsCapability.Style>();\n public displayedLayerName = \"\";\n\n public override get mutualExclusiveSubLayer(): boolean { return true; }\n\n constructor(settings: ImageMapLayerSettings) {\n super(settings, true);\n this._baseUrl = WmsUtilities.getBaseUrl(this._settings.url);\n }\n\n public override async initialize(): Promise<void> {\n try {\n this._capabilities = await WmtsCapabilities.create(this._baseUrl);\n this.initPreferredTileMatrixSet();\n this.initPreferredStyle();\n this.initCartoRange();\n this.initDisplayedLayer();\n\n if (this._preferredLayerTileMatrixSet.size === 0 || this._preferredLayerStyle.size === 0)\n throw new ServerError(IModelStatus.ValidationFailed, \"\");\n } catch (error: any) {\n // Don't throw error if unauthorized status:\n // We want the tile tree to be created, so that end-user can get feedback on which layer is missing credentials.\n // When credentials will be provided, a new provider will be created, and initialization should be fine.\n if (error?.status === 401) {\n this.setStatus(MapLayerImageryProviderStatus.RequireAuth);\n } else {\n throw new ServerError(IModelStatus.ValidationFailed, \"\");\n }\n }\n }\n private initDisplayedLayer() {\n if (0 === this._settings.subLayers.length) {\n assert(false);\n return;\n }\n\n const firstDisplayedLayer = this._settings.subLayers.find((subLayer) => subLayer.visible);\n this.displayedLayerName = firstDisplayedLayer ? firstDisplayedLayer.name : this._settings.subLayers[0].name;\n }\n\n // Each layer can be served in multiple tile matrix set (i.e. TileTree).\n // We have to pick one for each layer: for now we look for a Google Maps compatible tile tree.\n private initPreferredTileMatrixSet() {\n const googleMapsTms = this._capabilities?.contents?.getGoogleMapsCompatibleTileMatrixSet();\n const wellGoogleKnownTms = googleMapsTms?.find((tms) => tms.wellKnownScaleSet?.toLowerCase().includes(WmtsConstants.GOOGLEMAPS_COMPATIBLE_WELLKNOWNNAME));\n\n this._capabilities?.contents?.layers.forEach((layer) => {\n let preferredTms: WmtsCapability.TileMatrixSet | undefined;\n\n if (wellGoogleKnownTms && layer.tileMatrixSetLinks.some((tmsl) => tmsl.tileMatrixSet === wellGoogleKnownTms.identifier)) {\n // Favor tile matrix set that was explicitly marked as GoogleMaps compatible\n preferredTms = wellGoogleKnownTms;\n } else {\n\n // Search all compatible tile set matrix if previous attempt didn't work.\n // If more than one candidate is found, pick the tile set with the most LODs.\n let tileMatrixSets = googleMapsTms?.filter((tms) => {\n return layer.tileMatrixSetLinks.some((tmsl) => tmsl.tileMatrixSet === tms.identifier);\n });\n\n if (!tileMatrixSets || tileMatrixSets.length === 0) {\n const eps4326CompatibleTms = this._capabilities?.contents?.getEpsg4326CompatibleTileMatrixSet();\n tileMatrixSets = eps4326CompatibleTms?.filter((tms) => {\n return layer.tileMatrixSetLinks.some((tmsl) => tmsl.tileMatrixSet === tms.identifier);\n });\n }\n\n if (tileMatrixSets && tileMatrixSets.length === 1)\n preferredTms = tileMatrixSets[0];\n else if (tileMatrixSets && tileMatrixSets?.length > 1)\n preferredTms = tileMatrixSets.reduce((prev, current) => (prev.tileMatrix.length > current.tileMatrix.length) ? prev : current);\n\n }\n\n if (preferredTms !== undefined) {\n const tmsLink= layer.tileMatrixSetLinks.find((tmsl) => tmsl.tileMatrixSet === preferredTms!.identifier);\n this._preferredLayerTileMatrixSet.set(layer.identifier, { tileMatrixSet: preferredTms, limits: tmsLink?.tileMatrixSetLimits } );\n }\n });\n }\n\n // Each layer can be published different style. We look for a style flagged as 'Default'.\n private initPreferredStyle() {\n this._capabilities?.contents?.layers.forEach((layer) => {\n let preferredStyle: WmtsCapability.Style | undefined;\n if (layer.styles.length === 1)\n preferredStyle = layer.styles[0];\n else if (layer.styles.length > 1) {\n // If more than style is available, takes the default one, otherwise the first one.\n const defaultStyle = layer.styles.find((style) => style.isDefault);\n if (defaultStyle)\n preferredStyle = defaultStyle;\n else\n preferredStyle = layer.styles[0];\n }\n\n if (preferredStyle)\n this._preferredLayerStyle.set(layer.identifier, preferredStyle);\n });\n }\n\n private initCartoRange() {\n this._capabilities?.contents?.layers.forEach((layer) => {\n\n if (layer.wsg84BoundingBox) {\n if (this.cartoRange)\n this.cartoRange.extendRange(layer.wsg84BoundingBox);\n else\n this.cartoRange = layer.wsg84BoundingBox.clone();\n }\n });\n }\n private getDisplayedTileMatrixSetAndLimits(): TileMatrixSetAndLimits | undefined {\n return this._preferredLayerTileMatrixSet.get(this.displayedLayerName);\n }\n\n protected override _generateChildIds(tile: ImageryMapTile, resolveChildren: (childIds: QuadId[]) => void) {\n const childIds = this.getPotentialChildIds(tile);\n const matrixSetAndLimits = this.getDisplayedTileMatrixSetAndLimits();\n if (!matrixSetAndLimits) {\n assert(false); // Must always hava a matrix set.\n return;\n }\n const limits = matrixSetAndLimits.limits?.[tile.quadId.level + 1]?.limits;\n if (!limits) {\n resolveChildren(childIds);\n return;\n }\n\n const availableChildIds = [];\n for (const childId of childIds)\n if (limits.containsXY(childId.column, childId.row))\n availableChildIds.push(childId);\n\n resolveChildren(availableChildIds);\n }\n public override get useGeographicTilingScheme(): boolean {\n const matrixSetAndLimits = this.getDisplayedTileMatrixSetAndLimits();\n return matrixSetAndLimits ? (matrixSetAndLimits?.tileMatrixSet.identifier?.includes(\"4326\") || matrixSetAndLimits?.tileMatrixSet.supportedCrs?.includes(\"4326\")) : false;\n }\n\n public async constructUrl(row: number, column: number, zoomLevel: number): Promise<string> {\n const matrixSetAndLimits = this.getDisplayedTileMatrixSetAndLimits();\n const style = this._preferredLayerStyle.get(this.displayedLayerName);\n\n // Matrix identifier might be something other than standard 0..n zoom level,\n // so lookup the matrix identifier just in case.\n let tileMatrix;\n if (matrixSetAndLimits && matrixSetAndLimits.tileMatrixSet.tileMatrix.length > zoomLevel)\n tileMatrix = matrixSetAndLimits.tileMatrixSet.tileMatrix[zoomLevel].identifier;\n\n const styleParam = (style?.identifier === undefined ? \"\" : `&style=${style.identifier}`);\n if (tileMatrix !== undefined && matrixSetAndLimits !== undefined)\n return `${this._baseUrl}?Service=WMTS&Version=1.0.0&Request=GetTile&Format=image%2Fpng&layer=${this.displayedLayerName}${styleParam}&TileMatrixSet=${matrixSetAndLimits.tileMatrixSet.identifier}&TileMatrix=${tileMatrix}&TileCol=${column}&TileRow=${row} `;\n else\n return \"\";\n\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"WmtsMapLayerImageryProvider.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\nimport { assert } from \"@itwin/core-bentley\";\nimport { ImageMapLayerSettings, IModelStatus, ServerError } from \"@itwin/core-common\";\nimport {\n ImageryMapTile,\n MapLayerImageryProvider,\n MapLayerImageryProviderStatus,\n QuadId,\n WmsUtilities, WmtsCapabilities, WmtsCapability, WmtsConstants,\n} from \"../../internal\";\n\ninterface TileMatrixSetAndLimits { tileMatrixSet: WmtsCapability.TileMatrixSet, limits: WmtsCapability.TileMatrixSetLimits[] | undefined }\n/** @internal */\nexport class WmtsMapLayerImageryProvider extends MapLayerImageryProvider {\n private _baseUrl: string;\n private _capabilities?: WmtsCapabilities;\n private _preferredLayerTileMatrixSet = new Map<string, TileMatrixSetAndLimits>();\n private _preferredLayerStyle = new Map<string, WmtsCapability.Style>();\n public displayedLayerName = \"\";\n\n public override get mutualExclusiveSubLayer(): boolean { return true; }\n\n constructor(settings: ImageMapLayerSettings) {\n super(settings, true);\n this._baseUrl = WmsUtilities.getBaseUrl(this._settings.url);\n }\n\n public override async initialize(): Promise<void> {\n try {\n this._capabilities = await WmtsCapabilities.create(this._baseUrl);\n this.initPreferredTileMatrixSet();\n this.initPreferredStyle();\n this.initCartoRange();\n this.initDisplayedLayer();\n\n if (this._preferredLayerTileMatrixSet.size === 0 || this._preferredLayerStyle.size === 0)\n throw new ServerError(IModelStatus.ValidationFailed, \"\");\n } catch (error: any) {\n // Don't throw error if unauthorized status:\n // We want the tile tree to be created, so that end-user can get feedback on which layer is missing credentials.\n // When credentials will be provided, a new provider will be created, and initialization should be fine.\n if (error?.status === 401) {\n this.setStatus(MapLayerImageryProviderStatus.RequireAuth);\n } else {\n throw new ServerError(IModelStatus.ValidationFailed, \"\");\n }\n }\n }\n private initDisplayedLayer() {\n if (0 === this._settings.subLayers.length) {\n assert(false);\n return;\n }\n\n const firstDisplayedLayer = this._settings.subLayers.find((subLayer) => subLayer.visible);\n this.displayedLayerName = firstDisplayedLayer ? firstDisplayedLayer.name : this._settings.subLayers[0].name;\n }\n\n // Each layer can be served in multiple tile matrix set (i.e. TileTree).\n // We have to pick one for each layer: for now we look for a Google Maps compatible tile tree.\n private initPreferredTileMatrixSet() {\n const googleMapsTms = this._capabilities?.contents?.getGoogleMapsCompatibleTileMatrixSet();\n const wellGoogleKnownTms = googleMapsTms?.find((tms) => tms.wellKnownScaleSet?.toLowerCase().includes(WmtsConstants.GOOGLEMAPS_COMPATIBLE_WELLKNOWNNAME));\n\n this._capabilities?.contents?.layers.forEach((layer) => {\n let preferredTms: WmtsCapability.TileMatrixSet | undefined;\n\n if (wellGoogleKnownTms && layer.tileMatrixSetLinks.some((tmsl) => tmsl.tileMatrixSet === wellGoogleKnownTms.identifier)) {\n // Favor tile matrix set that was explicitly marked as GoogleMaps compatible\n preferredTms = wellGoogleKnownTms;\n } else {\n\n // Search all compatible tile set matrix if previous attempt didn't work.\n // If more than one candidate is found, pick the tile set with the most LODs.\n let tileMatrixSets = googleMapsTms?.filter((tms) => {\n return layer.tileMatrixSetLinks.some((tmsl) => tmsl.tileMatrixSet === tms.identifier);\n });\n\n if (!tileMatrixSets || tileMatrixSets.length === 0) {\n const eps4326CompatibleTms = this._capabilities?.contents?.getEpsg4326CompatibleTileMatrixSet();\n tileMatrixSets = eps4326CompatibleTms?.filter((tms) => {\n return layer.tileMatrixSetLinks.some((tmsl) => tmsl.tileMatrixSet === tms.identifier);\n });\n }\n\n if (tileMatrixSets && tileMatrixSets.length === 1)\n preferredTms = tileMatrixSets[0];\n else if (tileMatrixSets && tileMatrixSets?.length > 1)\n preferredTms = tileMatrixSets.reduce((prev, current) => (prev.tileMatrix.length > current.tileMatrix.length) ? prev : current);\n\n }\n\n if (preferredTms !== undefined) {\n const tmsLink= layer.tileMatrixSetLinks.find((tmsl) => tmsl.tileMatrixSet === preferredTms!.identifier);\n this._preferredLayerTileMatrixSet.set(layer.identifier, { tileMatrixSet: preferredTms, limits: tmsLink?.tileMatrixSetLimits } );\n }\n });\n }\n\n // Each layer can be published different style. We look for a style flagged as 'Default'.\n private initPreferredStyle() {\n this._capabilities?.contents?.layers.forEach((layer) => {\n let preferredStyle: WmtsCapability.Style | undefined;\n if (layer.styles.length === 1)\n preferredStyle = layer.styles[0];\n else if (layer.styles.length > 1) {\n // If more than style is available, takes the default one, otherwise the first one.\n const defaultStyle = layer.styles.find((style) => style.isDefault);\n if (defaultStyle)\n preferredStyle = defaultStyle;\n else\n preferredStyle = layer.styles[0];\n }\n\n if (preferredStyle)\n this._preferredLayerStyle.set(layer.identifier, preferredStyle);\n });\n }\n\n private initCartoRange() {\n this._capabilities?.contents?.layers.forEach((layer) => {\n\n if (layer.wsg84BoundingBox) {\n if (this.cartoRange)\n this.cartoRange.extendRange(layer.wsg84BoundingBox);\n else\n this.cartoRange = layer.wsg84BoundingBox.clone();\n }\n });\n }\n private getDisplayedTileMatrixSetAndLimits(): TileMatrixSetAndLimits | undefined {\n return this._preferredLayerTileMatrixSet.get(this.displayedLayerName);\n }\n\n protected override _generateChildIds(tile: ImageryMapTile, resolveChildren: (childIds: QuadId[]) => void) {\n const childIds = this.getPotentialChildIds(tile);\n const matrixSetAndLimits = this.getDisplayedTileMatrixSetAndLimits();\n if (!matrixSetAndLimits) {\n assert(false); // Must always hava a matrix set.\n return;\n }\n const limits = matrixSetAndLimits.limits?.[tile.quadId.level + 1]?.limits;\n if (!limits) {\n resolveChildren(childIds);\n return;\n }\n\n const availableChildIds = [];\n for (const childId of childIds)\n if (limits.containsXY(childId.column, childId.row))\n availableChildIds.push(childId);\n\n resolveChildren(availableChildIds);\n }\n public override get useGeographicTilingScheme(): boolean {\n const matrixSetAndLimits = this.getDisplayedTileMatrixSetAndLimits();\n return matrixSetAndLimits ? (matrixSetAndLimits?.tileMatrixSet.identifier?.includes(\"4326\") || matrixSetAndLimits?.tileMatrixSet.supportedCrs?.includes(\"4326\")) : false;\n }\n\n public async constructUrl(row: number, column: number, zoomLevel: number): Promise<string> {\n const matrixSetAndLimits = this.getDisplayedTileMatrixSetAndLimits();\n const style = this._preferredLayerStyle.get(this.displayedLayerName);\n\n // Matrix identifier might be something other than standard 0..n zoom level,\n // so lookup the matrix identifier just in case.\n let tileMatrix;\n if (matrixSetAndLimits && matrixSetAndLimits.tileMatrixSet.tileMatrix.length > zoomLevel)\n tileMatrix = matrixSetAndLimits.tileMatrixSet.tileMatrix[zoomLevel].identifier;\n\n const styleParam = (style?.identifier === undefined ? \"\" : `&style=${style.identifier}`);\n if (tileMatrix !== undefined && matrixSetAndLimits !== undefined)\n return `${this._baseUrl}?Service=WMTS&Version=1.0.0&Request=GetTile&Format=image%2Fpng&layer=${this.displayedLayerName}${styleParam}&TileMatrixSet=${matrixSetAndLimits.tileMatrixSet.identifier}&TileMatrix=${tileMatrix}&TileCol=${column}&TileRow=${row} `;\n else\n return \"\";\n\n }\n}\n"]}
|
|
@@ -49,7 +49,7 @@ class MapCartoRectangle extends core_geometry_1.Range2d {
|
|
|
49
49
|
* @note If `north` is less than `south`, they will be swapped.
|
|
50
50
|
*/
|
|
51
51
|
static fromRadians(west, south, east, north, result) {
|
|
52
|
-
result = result
|
|
52
|
+
result = result ?? MapCartoRectangle.createZero();
|
|
53
53
|
result.setRadians(west, south, east, north);
|
|
54
54
|
return result;
|
|
55
55
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MapCartoRectangle.js","sourceRoot":"","sources":["../../../../src/tile/map/MapCartoRectangle.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\n\nimport { Angle, Point2d, Range2d } from \"@itwin/core-geometry\";\nimport { Cartographic } from \"@itwin/core-common\";\nimport { GlobalLocation, GlobalLocationArea } from \"../../ViewGlobalLocation\";\nimport { MapTilingScheme } from \"../internal\";\n\nconst scratchMercatorFractionRange = Range2d.createNull();\nconst scratchPoint2d = Point2d.createZero();\n\n/** A specialization of [Range2d]($core-geometry) representing a [Cartographic]($common) region on the surface of the Earth,\n * used by [[MapTile]]s.\n * The `x` components of the `low` and `high` points refer to the western and eastern longitudes, respectively.\n * The `y` components of the `low` and `high` points refer to the southern and northern latitudes, respectively.\n * Longitudes are stored in radians in the range [-pi, pi].\n * Latitudes are stored in radians in the range [-pi/2, pi/2].\n * @public\n */\nexport class MapCartoRectangle extends Range2d {\n /** Construct a new rectangle with angles specified in radians.\n * @param west The western longitude in radians, in [-pi, pi].\n * @param south The southern latitude in radians, in [-pi/2, pi/2].\n * @param east The eastern latitude in radians, in [-pi, pi].\n * @param north The northern latitude in radians, in [-pi/2, pi/2].\n * @note If `north` is less than `south`, they will be swapped.\n * @see [[fromRadians]], [[fromDegrees]], [[createZero]], and [[createMaximum]] to construct a new rectangle.\n */\n protected constructor(west: number, south: number, east: number, north: number) {\n super(west, Math.min(south, north), east, Math.max(south, north));\n }\n\n /** Create a rectangle with all angles set to zero. */\n public static createZero(): MapCartoRectangle {\n return new MapCartoRectangle(0, 0, 0, 0);\n }\n\n /** Create a rectangle encompassing all points on the surface of the Earth. */\n public static createMaximum(): MapCartoRectangle {\n return new MapCartoRectangle(-Angle.piRadians, -Angle.piOver2Radians, Angle.piRadians, Angle.piOver2Radians);\n }\n\n /** Create a new rectangle with angles specified in radians.\n * @param west The western longitude in radians, in [-pi, pi].\n * @param south The southern latitude in radians, in [-pi/2, pi/2].\n * @param east The eastern latitude in radians, in [-pi, pi].\n * @param north The northern latitude in radians, in [-pi/2, pi/2].\n * @param result An optional preallocated rectangle to hold the result.\n * @note If `north` is less than `south`, they will be swapped.\n */\n public static fromRadians(west: number, south: number, east: number, north: number, result?: MapCartoRectangle): MapCartoRectangle {\n result = result ?? MapCartoRectangle.createZero();\n result.setRadians(west, south, east, north);\n return result;\n }\n\n /** Create a new rectangle with angles specified in degrees.\n * @param west The western longitude in degrees, in [-180, 180].\n * @param south The southern latitude in degrees, in [-90, 90].\n * @param east The eastern latitude in degrees, in [-180, 180].\n * @param north The northern latitude in degrees, in [-90, 90].\n * @param result An optional preallocated rectangle to hold the result.\n * @note If `north` is less than `south`, they will be swapped.\n */\n public static fromDegrees(west: number, south: number, east: number, north: number, result?: MapCartoRectangle): MapCartoRectangle {\n const mult = Angle.radiansPerDegree;\n return MapCartoRectangle.fromRadians(west * mult, south * mult, east * mult, north * mult, result);\n }\n\n /** The western longitude in radians. */\n public get west() { return this.low.x; }\n public set west(x: number) { this.low.x = x; }\n\n /** The southern latitude in radians. */\n public get south() { return this.low.y; }\n public set south(y: number) { this.low.y = y; }\n\n /** The eastern longitude in radians. */\n public get east() { return this.high.x; }\n public set east(x: number) { this.high.x = x; }\n\n /** The northern latitude in radians. */\n public get north() { return this.high.y; }\n public set north(y: number) { this.high.y = y; }\n\n /** A non-localized string representation of this rectangle, for debugging purposes. */\n public get latLongString() {\n return `Latitude: ${this.low.y * Angle.degreesPerRadian} - ${this.high.y * Angle.degreesPerRadian} Longitude: ${this.low.x * Angle.degreesPerRadian} - ${this.high.x * Angle.degreesPerRadian}`;\n }\n\n /** A pair of [[Cartographic]]s representing the same area as this rectangle. */\n public get globalLocationArea(): GlobalLocationArea {\n return {\n southwest: Cartographic.fromRadians({longitude: this.west, latitude: this.south}),\n northeast: Cartographic.fromRadians({longitude: this.east, latitude: this.north}),\n };\n }\n\n /** The cartographic center of this rectangle. */\n public get cartoCenter(): Cartographic {\n return Cartographic.fromRadians({\n longitude: (this.low.x + this.high.x) / 2,\n latitude: (this.low.y + this.high.y) / 2,\n });\n }\n\n /** The [[globalLocationArea]] and [[cartoCenter]] of this rectangle. */\n public get globalLocation(): GlobalLocation {\n return {\n center: this.cartoCenter,\n area: this.globalLocationArea,\n };\n }\n\n /** Reinitialize this rectangle using angles specified in radians.\n * @param west The western longitude in radians, in [-pi, pi].\n * @param south The southern latitude in radians, in [-pi/2, pi/2].\n * @param east The eastern latitude in radians, in [-pi, pi].\n * @param north The northern latitude in radians, in [-pi/2, pi/2].\n * @note If `north` is less than `south`, they will be swapped.\n */\n public setRadians(west = 0, south = 0, east = 0, north = 0) {\n this.west = west;\n this.south = south;\n this.east = east;\n this.north = north;\n }\n\n /** Returns true if the specified cartographic location is contained within this rectangle's area, ignoring elevation. */\n public containsCartographic(carto: Cartographic) {\n return this.containsXY(carto.longitude, carto.latitude);\n }\n\n /** Returns the position at the center of this rectangle, at an elevation of zero.\n * @param result An optional preallocated Cartographic to store the result.\n * @returns the center of this rectangle.\n */\n public getCenter(result?: Cartographic): Cartographic {\n return Cartographic.fromRadians({\n longitude: (this.west + this.east) / 2,\n latitude: (this.north + this.south) / 2,\n height: 0,\n }, result);\n }\n\n /** Computes fractional coordinates of the specified position within this rectangle's area.\n * @see [Range2d.worldToLocal]($core-geometry)\n */\n public fractionFromCartographic(carto: Cartographic): Point2d | undefined {\n const pt = Point2d.create(carto.longitude, carto.latitude, scratchPoint2d);\n return this.worldToLocal(pt);\n }\n\n /** @internal */\n public getTileFractionRange(tilingScheme: MapTilingScheme) {\n scratchMercatorFractionRange.low.x = tilingScheme.longitudeToXFraction(this.low.x);\n scratchMercatorFractionRange.high.x = tilingScheme.longitudeToXFraction(this.high.x);\n scratchMercatorFractionRange.low.y = tilingScheme.latitudeToYFraction(this.low.y);\n scratchMercatorFractionRange.high.y = tilingScheme.latitudeToYFraction(this.high.y);\n\n return scratchMercatorFractionRange;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"MapCartoRectangle.js","sourceRoot":"","sources":["../../../../src/tile/map/MapCartoRectangle.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\n\nimport { Angle, Point2d, Range2d } from \"@itwin/core-geometry\";\nimport { Cartographic } from \"@itwin/core-common\";\nimport { GlobalLocation, GlobalLocationArea } from \"../../ViewGlobalLocation\";\nimport { MapTilingScheme } from \"../internal\";\n\nconst scratchMercatorFractionRange = Range2d.createNull();\nconst scratchPoint2d = Point2d.createZero();\n\n/** A specialization of [Range2d]($core-geometry) representing a [Cartographic]($common) region on the surface of the Earth,\n * used by [[MapTile]]s.\n * The `x` components of the `low` and `high` points refer to the western and eastern longitudes, respectively.\n * The `y` components of the `low` and `high` points refer to the southern and northern latitudes, respectively.\n * Longitudes are stored in radians in the range [-pi, pi].\n * Latitudes are stored in radians in the range [-pi/2, pi/2].\n * @public\n */\nexport class MapCartoRectangle extends Range2d {\n /** Construct a new rectangle with angles specified in radians.\n * @param west The western longitude in radians, in [-pi, pi].\n * @param south The southern latitude in radians, in [-pi/2, pi/2].\n * @param east The eastern latitude in radians, in [-pi, pi].\n * @param north The northern latitude in radians, in [-pi/2, pi/2].\n * @note If `north` is less than `south`, they will be swapped.\n * @see [[fromRadians]], [[fromDegrees]], [[createZero]], and [[createMaximum]] to construct a new rectangle.\n */\n protected constructor(west: number, south: number, east: number, north: number) {\n super(west, Math.min(south, north), east, Math.max(south, north));\n }\n\n /** Create a rectangle with all angles set to zero. */\n public static createZero(): MapCartoRectangle {\n return new MapCartoRectangle(0, 0, 0, 0);\n }\n\n /** Create a rectangle encompassing all points on the surface of the Earth. */\n public static createMaximum(): MapCartoRectangle {\n return new MapCartoRectangle(-Angle.piRadians, -Angle.piOver2Radians, Angle.piRadians, Angle.piOver2Radians);\n }\n\n /** Create a new rectangle with angles specified in radians.\n * @param west The western longitude in radians, in [-pi, pi].\n * @param south The southern latitude in radians, in [-pi/2, pi/2].\n * @param east The eastern latitude in radians, in [-pi, pi].\n * @param north The northern latitude in radians, in [-pi/2, pi/2].\n * @param result An optional preallocated rectangle to hold the result.\n * @note If `north` is less than `south`, they will be swapped.\n */\n public static fromRadians(west: number, south: number, east: number, north: number, result?: MapCartoRectangle): MapCartoRectangle {\n result = result ?? MapCartoRectangle.createZero();\n result.setRadians(west, south, east, north);\n return result;\n }\n\n /** Create a new rectangle with angles specified in degrees.\n * @param west The western longitude in degrees, in [-180, 180].\n * @param south The southern latitude in degrees, in [-90, 90].\n * @param east The eastern latitude in degrees, in [-180, 180].\n * @param north The northern latitude in degrees, in [-90, 90].\n * @param result An optional preallocated rectangle to hold the result.\n * @note If `north` is less than `south`, they will be swapped.\n */\n public static fromDegrees(west: number, south: number, east: number, north: number, result?: MapCartoRectangle): MapCartoRectangle {\n const mult = Angle.radiansPerDegree;\n return MapCartoRectangle.fromRadians(west * mult, south * mult, east * mult, north * mult, result);\n }\n\n /** The western longitude in radians. */\n public get west() { return this.low.x; }\n public set west(x: number) { this.low.x = x; }\n\n /** The southern latitude in radians. */\n public get south() { return this.low.y; }\n public set south(y: number) { this.low.y = y; }\n\n /** The eastern longitude in radians. */\n public get east() { return this.high.x; }\n public set east(x: number) { this.high.x = x; }\n\n /** The northern latitude in radians. */\n public get north() { return this.high.y; }\n public set north(y: number) { this.high.y = y; }\n\n /** A non-localized string representation of this rectangle, for debugging purposes. */\n public get latLongString() {\n return `Latitude: ${this.low.y * Angle.degreesPerRadian} - ${this.high.y * Angle.degreesPerRadian} Longitude: ${this.low.x * Angle.degreesPerRadian} - ${this.high.x * Angle.degreesPerRadian}`;\n }\n\n /** A pair of [[Cartographic]]s representing the same area as this rectangle. */\n public get globalLocationArea(): GlobalLocationArea {\n return {\n southwest: Cartographic.fromRadians({longitude: this.west, latitude: this.south}),\n northeast: Cartographic.fromRadians({longitude: this.east, latitude: this.north}),\n };\n }\n\n /** The cartographic center of this rectangle. */\n public get cartoCenter(): Cartographic {\n return Cartographic.fromRadians({\n longitude: (this.low.x + this.high.x) / 2,\n latitude: (this.low.y + this.high.y) / 2,\n });\n }\n\n /** The [[globalLocationArea]] and [[cartoCenter]] of this rectangle. */\n public get globalLocation(): GlobalLocation {\n return {\n center: this.cartoCenter,\n area: this.globalLocationArea,\n };\n }\n\n /** Reinitialize this rectangle using angles specified in radians.\n * @param west The western longitude in radians, in [-pi, pi].\n * @param south The southern latitude in radians, in [-pi/2, pi/2].\n * @param east The eastern latitude in radians, in [-pi, pi].\n * @param north The northern latitude in radians, in [-pi/2, pi/2].\n * @note If `north` is less than `south`, they will be swapped.\n */\n public setRadians(west = 0, south = 0, east = 0, north = 0) {\n this.west = west;\n this.south = south;\n this.east = east;\n this.north = north;\n }\n\n /** Returns true if the specified cartographic location is contained within this rectangle's area, ignoring elevation. */\n public containsCartographic(carto: Cartographic) {\n return this.containsXY(carto.longitude, carto.latitude);\n }\n\n /** Returns the position at the center of this rectangle, at an elevation of zero.\n * @param result An optional preallocated Cartographic to store the result.\n * @returns the center of this rectangle.\n */\n public getCenter(result?: Cartographic): Cartographic {\n return Cartographic.fromRadians({\n longitude: (this.west + this.east) / 2,\n latitude: (this.north + this.south) / 2,\n height: 0,\n }, result);\n }\n\n /** Computes fractional coordinates of the specified position within this rectangle's area.\n * @see [Range2d.worldToLocal]($core-geometry)\n */\n public fractionFromCartographic(carto: Cartographic): Point2d | undefined {\n const pt = Point2d.create(carto.longitude, carto.latitude, scratchPoint2d);\n return this.worldToLocal(pt);\n }\n\n /** @internal */\n public getTileFractionRange(tilingScheme: MapTilingScheme) {\n scratchMercatorFractionRange.low.x = tilingScheme.longitudeToXFraction(this.low.x);\n scratchMercatorFractionRange.high.x = tilingScheme.longitudeToXFraction(this.high.x);\n scratchMercatorFractionRange.low.y = tilingScheme.latitudeToYFraction(this.low.y);\n scratchMercatorFractionRange.high.y = tilingScheme.latitudeToYFraction(this.high.y);\n\n return scratchMercatorFractionRange;\n }\n}\n"]}
|
|
@@ -43,7 +43,7 @@ exports.MapLayerFormat = MapLayerFormat;
|
|
|
43
43
|
class MapLayerFormatRegistry {
|
|
44
44
|
constructor(opts) {
|
|
45
45
|
this._formats = new Map();
|
|
46
|
-
this._configOptions = opts
|
|
46
|
+
this._configOptions = opts ?? {};
|
|
47
47
|
internal_1.internalMapLayerImageryFormats.forEach((format) => this.register(format));
|
|
48
48
|
}
|
|
49
49
|
isRegistered(formatId) { return this._formats.get(formatId) !== undefined; }
|
|
@@ -61,10 +61,9 @@ class MapLayerFormatRegistry {
|
|
|
61
61
|
return false;
|
|
62
62
|
}
|
|
63
63
|
getAccessClient(formatId) {
|
|
64
|
-
var _a;
|
|
65
64
|
if (formatId.length === 0)
|
|
66
65
|
return undefined;
|
|
67
|
-
return
|
|
66
|
+
return this._formats.get(formatId)?.accessClient;
|
|
68
67
|
}
|
|
69
68
|
get configOptions() {
|
|
70
69
|
return this._configOptions;
|
|
@@ -72,7 +71,7 @@ class MapLayerFormatRegistry {
|
|
|
72
71
|
/** @internal */
|
|
73
72
|
createImageryMapLayerTree(layerSettings, layerIndex, iModel) {
|
|
74
73
|
const entry = this._formats.get(layerSettings.formatId);
|
|
75
|
-
const format = entry
|
|
74
|
+
const format = entry?.type;
|
|
76
75
|
if (format === undefined) {
|
|
77
76
|
core_bentley_1.Logger.logError(loggerCategory, `Could not find format '${layerSettings.formatId}' in registry`);
|
|
78
77
|
return undefined;
|
|
@@ -82,7 +81,7 @@ class MapLayerFormatRegistry {
|
|
|
82
81
|
/** @internal */
|
|
83
82
|
createImageryProvider(layerSettings) {
|
|
84
83
|
const entry = this._formats.get(layerSettings.formatId);
|
|
85
|
-
const format = entry
|
|
84
|
+
const format = entry?.type;
|
|
86
85
|
if (this._configOptions[layerSettings.formatId] !== undefined) {
|
|
87
86
|
const keyValuePair = this._configOptions[layerSettings.formatId];
|
|
88
87
|
const key = { key: keyValuePair.key, value: keyValuePair.value };
|
|
@@ -92,7 +91,7 @@ class MapLayerFormatRegistry {
|
|
|
92
91
|
}
|
|
93
92
|
async validateSource(formatId, url, userName, password, ignoreCache) {
|
|
94
93
|
const entry = this._formats.get(formatId);
|
|
95
|
-
const format = entry
|
|
94
|
+
const format = entry?.type;
|
|
96
95
|
return (format === undefined) ? { status: internal_1.MapLayerSourceStatus.InvalidFormat } : format.validateSource(url, userName, password, ignoreCache);
|
|
97
96
|
}
|
|
98
97
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MapLayerFormatRegistry.js","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerFormatRegistry.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAAqD;AAErD,+CAA4C;AAE5C,0CAAuN;AACvN,MAAM,cAAc,GAAG,uBAAuB,CAAC;AAE/C,YAAY;AACZ;;;;;;;GAOG;AACH,MAAa,cAAc;IAGzB;MACE;IACK,MAAM,CAAC,QAAQ,KAAK,qBAAS,CAAC,sBAAsB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAE7E;MACE;IACK,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,IAAY,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,IAAuC,OAAO,EAAE,MAAM,EAAE,+BAAoB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAEtM;;MAEE;IACK,MAAM,CAAC,qBAAqB,CAAC,SAA2B,IAAyC,IAAA,qBAAM,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAExH,gBAAgB;IACT,MAAM,CAAC,kBAAkB,CAAC,cAAgC,EAAE,WAAmB,EAAE,OAAyB;QAC/G,IAAA,qBAAM,EAAC,KAAK,CAAC,CAAC;QACd,OAAO,SAAS,CAAC;IACnB,CAAC;CAEF;AAtBD,wCAsBC;AAyCD,YAAY;AACZ,MAAa,sBAAsB;IAEjC,YAAY,IAAsB;QAI1B,aAAQ,GAAG,IAAI,GAAG,EAA+B,CAAC;QAHxD,IAAI,CAAC,cAAc,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"MapLayerFormatRegistry.js","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerFormatRegistry.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module MapLayers\n */\n\nimport { assert, Logger } from \"@itwin/core-bentley\";\nimport { ImageMapLayerSettings, MapLayerKey, MapLayerSettings, MapSubLayerProps } from \"@itwin/core-common\";\nimport { IModelApp } from \"../../IModelApp\";\nimport { IModelConnection } from \"../../IModelConnection\";\nimport { ImageryMapLayerTreeReference, internalMapLayerImageryFormats, MapLayerAccessClient, MapLayerAuthenticationInfo, MapLayerImageryProvider, MapLayerSourceStatus, MapLayerTileTreeReference } from \"../internal\";\nconst loggerCategory = \"ArcGISFeatureProvider\";\n\n/** @beta */\n/** Class representing a map-layer format.\n * Each format has it's unique 'formatId' string, used to uniquely identify a format in the [[MapLayerFormatRegistry]].\n * When creating an [[ImageMapLayerSettings]] object, a format needs to be specified this 'formatId'.\n * The MapLayerFormat object can later be used to validate a source, or create a provider.\n *\n* Subclasses should override formatId and [[MapLayerFormat.createImageryProvider]].\n * @beta\n */\nexport class MapLayerFormat {\n public static formatId: string;\n\n /** Register the current format in the [[MapLayerFormatRegistry]].\n */\n public static register() { IModelApp.mapLayerFormatRegistry.register(this); }\n\n /** Allow a source of a specific to be validated before being attached as a map-layer.\n */\n public static async validateSource(_url: string, _userName?: string, _password?: string, _ignoreCache?: boolean): Promise<MapLayerSourceValidation> { return { status: MapLayerSourceStatus.Valid }; }\n\n /** Create a [[MapLayerImageryProvider]] that will be used to feed data in a map-layer tile Tree.\n * @internal\n */\n public static createImageryProvider(_settings: MapLayerSettings): MapLayerImageryProvider | undefined { assert(false); }\n\n /** @internal */\n public static createMapLayerTree(_layerSettings: MapLayerSettings, _layerIndex: number, _iModel: IModelConnection): MapLayerTileTreeReference | undefined {\n assert(false);\n return undefined;\n }\n\n}\n\n/** @beta */\nexport type MapLayerFormatType = typeof MapLayerFormat;\n\n/** @public */\nexport interface MapLayerSourceValidation {\n status: MapLayerSourceStatus;\n subLayers?: MapSubLayerProps[];\n\n /** @beta */\n authInfo?: MapLayerAuthenticationInfo;\n}\n\n/**\n * Options supplied at startup via [[IModelAppOptions.mapLayerOptions]] to specify access keys for various map layer formats.\n * 'BingMaps' must have it's key value set to 'key'\n * 'MapboxImagery' must have it's key value set to 'access_token'\n *\n * @beta\n */\nexport interface MapLayerOptions {\n /** Access key for Azure Maps in the format `{ key: \"subscription-key\", value: \"your-azure-maps-key\" }`. */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n AzureMaps?: MapLayerKey;\n /** Access key for Mapbox in the format `{ key: \"access_token\", value: \"your-mapbox-key\" }`. */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n MapboxImagery?: MapLayerKey;\n /** Access key for Bing Maps in the format `{ key: \"key\", value: \"your-bing-maps-key\" }`. */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n BingMaps?: MapLayerKey;\n /** Access keys for additional map layer formats. */\n [format: string]: MapLayerKey | undefined;\n}\n\n/** @internal */\nexport interface MapLayerFormatEntry {\n type: MapLayerFormatType;\n accessClient?: MapLayerAccessClient;\n}\n\n/** @beta */\nexport class MapLayerFormatRegistry {\n private _configOptions: MapLayerOptions;\n constructor(opts?: MapLayerOptions) {\n this._configOptions = opts ?? {};\n internalMapLayerImageryFormats.forEach((format) => this.register(format));\n }\n private _formats = new Map<string, MapLayerFormatEntry>();\n\n public isRegistered(formatId: string) {return this._formats.get(formatId) !== undefined;}\n\n public register(formatClass: MapLayerFormatType, accessClient?: MapLayerAccessClient) {\n if (formatClass.formatId.length === 0)\n return; // must be an abstract class, ignore it\n\n this._formats.set(formatClass.formatId, {type: formatClass, accessClient});\n }\n\n public setAccessClient(formatId: string, accessClient: MapLayerAccessClient ): boolean {\n const entry = this._formats.get(formatId);\n if (entry !== undefined) {\n entry.accessClient = accessClient;\n return true;\n }\n return false;\n }\n\n public getAccessClient(formatId: string): MapLayerAccessClient | undefined {\n if (formatId.length === 0)\n return undefined;\n\n return this._formats.get(formatId)?.accessClient;\n }\n\n public get configOptions(): MapLayerOptions {\n return this._configOptions;\n }\n\n /** @internal */\n public createImageryMapLayerTree(layerSettings: ImageMapLayerSettings, layerIndex: number, iModel: IModelConnection): ImageryMapLayerTreeReference | undefined {\n const entry = this._formats.get(layerSettings.formatId);\n const format = entry?.type;\n if (format === undefined) {\n Logger.logError(loggerCategory, `Could not find format '${layerSettings.formatId}' in registry`);\n return undefined;\n }\n return format.createMapLayerTree(layerSettings, layerIndex, iModel) as ImageryMapLayerTreeReference;\n }\n\n /** @internal */\n public createImageryProvider(layerSettings: ImageMapLayerSettings): MapLayerImageryProvider | undefined {\n const entry = this._formats.get(layerSettings.formatId);\n const format = entry?.type;\n if (this._configOptions[layerSettings.formatId] !== undefined) {\n const keyValuePair = this._configOptions[layerSettings.formatId]!;\n const key: MapLayerKey = { key: keyValuePair.key, value: keyValuePair.value };\n layerSettings = layerSettings.clone({ accessKey: key });\n }\n return (format === undefined) ? undefined : format.createImageryProvider(layerSettings);\n }\n\n public async validateSource(formatId: string, url: string, userName?: string, password?: string, ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\n const entry = this._formats.get(formatId);\n const format = entry?.type;\n return (format === undefined) ? { status: MapLayerSourceStatus.InvalidFormat } : format.validateSource(url, userName, password, ignoreCache);\n }\n}\n"]}
|
|
@@ -25,7 +25,7 @@ class WmsMapLayerFormat extends ImageryMapLayerFormat {
|
|
|
25
25
|
const capabilities = await internal_1.WmsCapabilities.create(url, (userName && password ? { user: userName, password } : undefined), ignoreCache);
|
|
26
26
|
if (capabilities !== undefined) {
|
|
27
27
|
subLayers = capabilities.getSubLayers(false);
|
|
28
|
-
const rootsSubLayer = subLayers
|
|
28
|
+
const rootsSubLayer = subLayers?.find((sublayer) => sublayer.parent === undefined);
|
|
29
29
|
const hasTooManyLayers = subLayers && subLayers.length > maxVisibleSubLayers;
|
|
30
30
|
if (!Array.isArray(subLayers))
|
|
31
31
|
return { status: internal_1.MapLayerSourceStatus.Valid, subLayers };
|
|
@@ -33,20 +33,19 @@ class WmsMapLayerFormat extends ImageryMapLayerFormat {
|
|
|
33
33
|
// In general for WMS, we prefer to have the children of root node visible, but not the root itself.
|
|
34
34
|
// Thats simply to give more flexibility in the UI.
|
|
35
35
|
// Two exceptions to this rule: If there are too many layers or the root node is not named.
|
|
36
|
-
if (subLayer.id && subLayer.id ===
|
|
36
|
+
if (subLayer.id && subLayer.id === rootsSubLayer?.id
|
|
37
37
|
&& (!(subLayer.name && subLayer.name.length > 0) || hasTooManyLayers)) {
|
|
38
38
|
subLayer.visible = true;
|
|
39
39
|
break; // if root node is visible, don't bother turning ON any other layers
|
|
40
40
|
}
|
|
41
41
|
// Make children of the root node visible.
|
|
42
|
-
if (subLayer.parent && subLayer.parent ===
|
|
42
|
+
if (subLayer.parent && subLayer.parent === rootsSubLayer?.id && !hasTooManyLayers) {
|
|
43
43
|
const isUnnamedGroup = (layer) => {
|
|
44
44
|
return layer.children && layer.children.length > 0 && (!layer.name || layer.name.length === 0);
|
|
45
45
|
};
|
|
46
46
|
const makeChildrenVisible = (layers, layer) => {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
const childSubLayer = subLayers === null || subLayers === void 0 ? void 0 : subLayers.find((child) => (child === null || child === void 0 ? void 0 : child.id) === childId);
|
|
47
|
+
layer?.children?.forEach((childId) => {
|
|
48
|
+
const childSubLayer = subLayers?.find((child) => child?.id === childId);
|
|
50
49
|
if (childSubLayer) {
|
|
51
50
|
childSubLayer.visible = true;
|
|
52
51
|
if (isUnnamedGroup(childSubLayer))
|
|
@@ -65,7 +64,7 @@ class WmsMapLayerFormat extends ImageryMapLayerFormat {
|
|
|
65
64
|
}
|
|
66
65
|
catch (err) {
|
|
67
66
|
let status = internal_1.MapLayerSourceStatus.InvalidUrl;
|
|
68
|
-
if (
|
|
67
|
+
if (err?.status === 401) {
|
|
69
68
|
status = ((userName && password) ? internal_1.MapLayerSourceStatus.InvalidCredentials : internal_1.MapLayerSourceStatus.RequireAuth);
|
|
70
69
|
}
|
|
71
70
|
return { status };
|
|
@@ -78,7 +77,6 @@ class WmtsMapLayerFormat extends ImageryMapLayerFormat {
|
|
|
78
77
|
return new internal_1.WmtsMapLayerImageryProvider(settings);
|
|
79
78
|
}
|
|
80
79
|
static async validateSource(url, userName, password, ignoreCache) {
|
|
81
|
-
var _a, _b, _c;
|
|
82
80
|
try {
|
|
83
81
|
const subLayers = [];
|
|
84
82
|
const capabilities = await internal_1.WmtsCapabilities.create(url, (userName && password ? { user: userName, password } : undefined), ignoreCache);
|
|
@@ -86,11 +84,11 @@ class WmtsMapLayerFormat extends ImageryMapLayerFormat {
|
|
|
86
84
|
return { status: internal_1.MapLayerSourceStatus.InvalidUrl };
|
|
87
85
|
// Only returns layer that can be published in the Google maps or WGS84 aligned tile trees.
|
|
88
86
|
let supportedTms = [];
|
|
89
|
-
const googleMapsTms =
|
|
87
|
+
const googleMapsTms = capabilities?.contents?.getGoogleMapsCompatibleTileMatrixSet();
|
|
90
88
|
if (googleMapsTms) {
|
|
91
89
|
supportedTms = googleMapsTms;
|
|
92
90
|
}
|
|
93
|
-
const wsg84Tms =
|
|
91
|
+
const wsg84Tms = capabilities?.contents?.getEpsg4326CompatibleTileMatrixSet();
|
|
94
92
|
if (wsg84Tms) {
|
|
95
93
|
supportedTms = supportedTms.concat(wsg84Tms);
|
|
96
94
|
}
|
|
@@ -99,15 +97,14 @@ class WmtsMapLayerFormat extends ImageryMapLayerFormat {
|
|
|
99
97
|
return { status: internal_1.MapLayerSourceStatus.InvalidCoordinateSystem };
|
|
100
98
|
}
|
|
101
99
|
let subLayerId = 0;
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
const hasSupportedTms = supportedTms === null || supportedTms === void 0 ? void 0 : supportedTms.some((tms) => {
|
|
100
|
+
capabilities?.contents?.layers.forEach((layer) => {
|
|
101
|
+
const hasSupportedTms = supportedTms?.some((tms) => {
|
|
105
102
|
return layer.tileMatrixSetLinks.some((tmls) => tmls.tileMatrixSet === tms.identifier);
|
|
106
103
|
});
|
|
107
104
|
if (hasSupportedTms) {
|
|
108
105
|
subLayers.push({
|
|
109
106
|
name: layer.identifier,
|
|
110
|
-
title:
|
|
107
|
+
title: layer.title ?? layer.identifier,
|
|
111
108
|
visible: (subLayers.length === 0),
|
|
112
109
|
parent: undefined,
|
|
113
110
|
children: undefined,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MapLayerImageryFormats.js","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerImageryFormats.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module MapLayers\r\n */\r\nimport { ImageMapLayerSettings, MapSubLayerProps } from \"@itwin/core-common\";\r\nimport { IModelConnection } from \"../../IModelConnection\";\r\nimport {\r\n ArcGISMapLayerImageryProvider,\r\n ArcGisUtilities,\r\n AzureMapsLayerImageryProvider,\r\n BingMapsImageryLayerProvider,\r\n ImageryMapLayerTreeReference,\r\n MapBoxLayerImageryProvider,\r\n MapLayerFormat,\r\n MapLayerImageryProvider,\r\n MapLayerSourceStatus,\r\n MapLayerSourceValidation,\r\n MapLayerTileTreeReference,\r\n TileUrlImageryProvider,\r\n WmsCapabilities,\r\n WmsMapLayerImageryProvider,\r\n WmtsCapabilities,\r\n WmtsCapability,\r\n WmtsMapLayerImageryProvider,\r\n} from \"../internal\";\r\n\r\n/** Base class imagery map layer formats.\r\n * Subclasses should override formatId and [[MapLayerFormat.createImageryProvider]].\r\n * @see [[MapLayerFormat]]\r\n * @beta\r\n */\r\nexport class ImageryMapLayerFormat extends MapLayerFormat {\r\n /** @internal */\r\n public static override createMapLayerTree(layerSettings: ImageMapLayerSettings, layerIndex: number, iModel: IModelConnection): MapLayerTileTreeReference | undefined {\r\n return new ImageryMapLayerTreeReference(layerSettings, layerIndex, iModel);\r\n }\r\n}\r\n\r\nclass WmsMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"WMS\";\r\n\r\n public static override createImageryProvider(settings: ImageMapLayerSettings): MapLayerImageryProvider | undefined {\r\n return new WmsMapLayerImageryProvider(settings);\r\n }\r\n public static override async validateSource(url: string, userName?: string, password?: string, ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\r\n try {\r\n let subLayers: MapSubLayerProps[] | undefined;\r\n const maxVisibleSubLayers = 50;\r\n const capabilities = await WmsCapabilities.create(url, (userName && password ? {user: userName, password} : undefined), ignoreCache);\r\n if (capabilities !== undefined) {\r\n subLayers = capabilities.getSubLayers(false);\r\n const rootsSubLayer = subLayers?.find((sublayer) => sublayer.parent === undefined);\r\n const hasTooManyLayers = subLayers && subLayers.length > maxVisibleSubLayers;\r\n\r\n if (!Array.isArray(subLayers))\r\n return { status: MapLayerSourceStatus.Valid, subLayers };\r\n\r\n for (const subLayer of subLayers) {\r\n // In general for WMS, we prefer to have the children of root node visible, but not the root itself.\r\n // Thats simply to give more flexibility in the UI.\r\n // Two exceptions to this rule: If there are too many layers or the root node is not named.\r\n if (subLayer.id && subLayer.id === rootsSubLayer?.id\r\n && (!(subLayer.name && subLayer.name.length > 0) || hasTooManyLayers)) {\r\n subLayer.visible = true;\r\n break; // if root node is visible, don't bother turning ON any other layers\r\n }\r\n\r\n // Make children of the root node visible.\r\n if (subLayer.parent && subLayer.parent === rootsSubLayer?.id && !hasTooManyLayers) {\r\n const isUnnamedGroup = (layer: MapSubLayerProps) => {\r\n return layer.children && layer.children.length > 0 && (!layer.name || layer.name.length === 0);\r\n };\r\n\r\n const makeChildrenVisible = (layers: MapSubLayerProps[] | undefined, layer: MapSubLayerProps) => {\r\n layer?.children?.forEach((childId) => {\r\n const childSubLayer = subLayers?.find((child) => child?.id === childId);\r\n if (childSubLayer) {\r\n childSubLayer.visible = true;\r\n if (isUnnamedGroup(childSubLayer))\r\n makeChildrenVisible(layers, childSubLayer);\r\n }\r\n });\r\n };\r\n\r\n subLayer.visible = true;\r\n\r\n // If we got a unnamed group, make children visible recursively until we have a leaf or named group\r\n if (isUnnamedGroup(subLayer))\r\n makeChildrenVisible(subLayers, subLayer);\r\n }\r\n }\r\n }\r\n\r\n return { status: MapLayerSourceStatus.Valid, subLayers };\r\n } catch (err: any) {\r\n let status = MapLayerSourceStatus.InvalidUrl;\r\n if (err?.status === 401) {\r\n status = ((userName && password) ? MapLayerSourceStatus.InvalidCredentials : MapLayerSourceStatus.RequireAuth);\r\n }\r\n return { status};\r\n }\r\n }\r\n}\r\n\r\nclass WmtsMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"WMTS\";\r\n\r\n public static override createImageryProvider(settings: ImageMapLayerSettings): MapLayerImageryProvider | undefined {\r\n return new WmtsMapLayerImageryProvider(settings);\r\n }\r\n\r\n public static override async validateSource(url: string, userName?: string, password?: string, ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\r\n try {\r\n const subLayers: MapSubLayerProps[] = [];\r\n const capabilities = await WmtsCapabilities.create(url, (userName && password ? {user: userName, password} : undefined), ignoreCache);\r\n if (!capabilities)\r\n return { status: MapLayerSourceStatus.InvalidUrl };\r\n\r\n // Only returns layer that can be published in the Google maps or WGS84 aligned tile trees.\r\n let supportedTms: WmtsCapability.TileMatrixSet[] = [];\r\n const googleMapsTms = capabilities?.contents?.getGoogleMapsCompatibleTileMatrixSet();\r\n if (googleMapsTms) {\r\n supportedTms = googleMapsTms;\r\n }\r\n const wsg84Tms = capabilities?.contents?.getEpsg4326CompatibleTileMatrixSet();\r\n if (wsg84Tms) {\r\n supportedTms = supportedTms.concat(wsg84Tms);\r\n }\r\n\r\n if (supportedTms.length === 0) {\r\n // This WMTS server doesn't support either GoogleMaps or WSG84\r\n return { status: MapLayerSourceStatus.InvalidCoordinateSystem };\r\n }\r\n\r\n let subLayerId = 0;\r\n capabilities?.contents?.layers.forEach((layer) => {\r\n const hasSupportedTms = supportedTms?.some((tms) => {\r\n return layer.tileMatrixSetLinks.some((tmls) => tmls.tileMatrixSet === tms.identifier);\r\n });\r\n if (hasSupportedTms) {\r\n subLayers.push({\r\n name: layer.identifier,\r\n title: layer.title ?? layer.identifier,\r\n visible: (subLayers.length === 0), // Make the first layer visible.\r\n parent: undefined,\r\n children: undefined,\r\n id: subLayerId++,\r\n });\r\n }\r\n });\r\n\r\n // Return error if we could find a single compatible layer.\r\n if (subLayers.length === 0)\r\n return { status: MapLayerSourceStatus.InvalidTileTree };\r\n\r\n return { status: MapLayerSourceStatus.Valid, subLayers };\r\n } catch (err) {\r\n console.error(err); // eslint-disable-line no-console\r\n return { status: MapLayerSourceStatus.InvalidUrl };\r\n }\r\n }\r\n\r\n}\r\n\r\nclass ArcGISMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"ArcGIS\";\r\n public static override async validateSource(url: string, userName?: string, password?: string, ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\r\n // Some Map service supporting only tiles don't include the 'Map' capabilities, thus we can't make it mandatory.\r\n return ArcGisUtilities.validateSource(url, this.formatId, [], userName, password, ignoreCache);\r\n }\r\n public static override createImageryProvider(settings: ImageMapLayerSettings): MapLayerImageryProvider | undefined {\r\n return new ArcGISMapLayerImageryProvider(settings);\r\n }\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\nclass AzureMapsMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"AzureMaps\";\r\n public static override createImageryProvider(settings: ImageMapLayerSettings): MapLayerImageryProvider | undefined {\r\n return new AzureMapsLayerImageryProvider(settings);\r\n }\r\n}\r\nclass BingMapsMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"BingMaps\";\r\n public static override createImageryProvider(settings: ImageMapLayerSettings): MapLayerImageryProvider | undefined {\r\n return new BingMapsImageryLayerProvider(settings);\r\n }\r\n}\r\n\r\nclass MapBoxImageryMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"MapboxImagery\";\r\n public static override createImageryProvider(settings: ImageMapLayerSettings): MapLayerImageryProvider | undefined {\r\n return new MapBoxLayerImageryProvider(settings);\r\n }\r\n}\r\nclass TileUrlMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"TileURL\";\r\n public static override createImageryProvider(settings: ImageMapLayerSettings): MapLayerImageryProvider | undefined { return new TileUrlImageryProvider(settings); }\r\n}\r\n\r\n/** @internal */\r\nexport const internalMapLayerImageryFormats = [WmsMapLayerFormat, WmtsMapLayerFormat, ArcGISMapLayerFormat, /* AzureMapsMapLayerFormat, */ BingMapsMapLayerFormat, MapBoxImageryMapLayerFormat, TileUrlMapLayerFormat];\r\n"]}
|
|
1
|
+
{"version":3,"file":"MapLayerImageryFormats.js","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerImageryFormats.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module MapLayers\r\n */\r\nimport { ImageMapLayerSettings, MapSubLayerProps } from \"@itwin/core-common\";\r\nimport { IModelConnection } from \"../../IModelConnection\";\r\nimport {\r\n ArcGISMapLayerImageryProvider,\r\n ArcGisUtilities,\r\n AzureMapsLayerImageryProvider,\r\n BingMapsImageryLayerProvider,\r\n ImageryMapLayerTreeReference,\r\n MapBoxLayerImageryProvider,\r\n MapLayerFormat,\r\n MapLayerImageryProvider,\r\n MapLayerSourceStatus,\r\n MapLayerSourceValidation,\r\n MapLayerTileTreeReference,\r\n TileUrlImageryProvider,\r\n WmsCapabilities,\r\n WmsMapLayerImageryProvider,\r\n WmtsCapabilities,\r\n WmtsCapability,\r\n WmtsMapLayerImageryProvider,\r\n} from \"../internal\";\r\n\r\n/** Base class imagery map layer formats.\r\n * Subclasses should override formatId and [[MapLayerFormat.createImageryProvider]].\r\n * @see [[MapLayerFormat]]\r\n * @beta\r\n */\r\nexport class ImageryMapLayerFormat extends MapLayerFormat {\r\n /** @internal */\r\n public static override createMapLayerTree(layerSettings: ImageMapLayerSettings, layerIndex: number, iModel: IModelConnection): MapLayerTileTreeReference | undefined {\r\n return new ImageryMapLayerTreeReference(layerSettings, layerIndex, iModel);\r\n }\r\n}\r\n\r\nclass WmsMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"WMS\";\r\n\r\n public static override createImageryProvider(settings: ImageMapLayerSettings): MapLayerImageryProvider | undefined {\r\n return new WmsMapLayerImageryProvider(settings);\r\n }\r\n public static override async validateSource(url: string, userName?: string, password?: string, ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\r\n try {\r\n let subLayers: MapSubLayerProps[] | undefined;\r\n const maxVisibleSubLayers = 50;\r\n const capabilities = await WmsCapabilities.create(url, (userName && password ? {user: userName, password} : undefined), ignoreCache);\r\n if (capabilities !== undefined) {\r\n subLayers = capabilities.getSubLayers(false);\r\n const rootsSubLayer = subLayers?.find((sublayer) => sublayer.parent === undefined);\r\n const hasTooManyLayers = subLayers && subLayers.length > maxVisibleSubLayers;\r\n\r\n if (!Array.isArray(subLayers))\r\n return { status: MapLayerSourceStatus.Valid, subLayers };\r\n\r\n for (const subLayer of subLayers) {\r\n // In general for WMS, we prefer to have the children of root node visible, but not the root itself.\r\n // Thats simply to give more flexibility in the UI.\r\n // Two exceptions to this rule: If there are too many layers or the root node is not named.\r\n if (subLayer.id && subLayer.id === rootsSubLayer?.id\r\n && (!(subLayer.name && subLayer.name.length > 0) || hasTooManyLayers)) {\r\n subLayer.visible = true;\r\n break; // if root node is visible, don't bother turning ON any other layers\r\n }\r\n\r\n // Make children of the root node visible.\r\n if (subLayer.parent && subLayer.parent === rootsSubLayer?.id && !hasTooManyLayers) {\r\n const isUnnamedGroup = (layer: MapSubLayerProps) => {\r\n return layer.children && layer.children.length > 0 && (!layer.name || layer.name.length === 0);\r\n };\r\n\r\n const makeChildrenVisible = (layers: MapSubLayerProps[] | undefined, layer: MapSubLayerProps) => {\r\n layer?.children?.forEach((childId) => {\r\n const childSubLayer = subLayers?.find((child) => child?.id === childId);\r\n if (childSubLayer) {\r\n childSubLayer.visible = true;\r\n if (isUnnamedGroup(childSubLayer))\r\n makeChildrenVisible(layers, childSubLayer);\r\n }\r\n });\r\n };\r\n\r\n subLayer.visible = true;\r\n\r\n // If we got a unnamed group, make children visible recursively until we have a leaf or named group\r\n if (isUnnamedGroup(subLayer))\r\n makeChildrenVisible(subLayers, subLayer);\r\n }\r\n }\r\n }\r\n\r\n return { status: MapLayerSourceStatus.Valid, subLayers };\r\n } catch (err: any) {\r\n let status = MapLayerSourceStatus.InvalidUrl;\r\n if (err?.status === 401) {\r\n status = ((userName && password) ? MapLayerSourceStatus.InvalidCredentials : MapLayerSourceStatus.RequireAuth);\r\n }\r\n return { status};\r\n }\r\n }\r\n}\r\n\r\nclass WmtsMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"WMTS\";\r\n\r\n public static override createImageryProvider(settings: ImageMapLayerSettings): MapLayerImageryProvider | undefined {\r\n return new WmtsMapLayerImageryProvider(settings);\r\n }\r\n\r\n public static override async validateSource(url: string, userName?: string, password?: string, ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\r\n try {\r\n const subLayers: MapSubLayerProps[] = [];\r\n const capabilities = await WmtsCapabilities.create(url, (userName && password ? {user: userName, password} : undefined), ignoreCache);\r\n if (!capabilities)\r\n return { status: MapLayerSourceStatus.InvalidUrl };\r\n\r\n // Only returns layer that can be published in the Google maps or WGS84 aligned tile trees.\r\n let supportedTms: WmtsCapability.TileMatrixSet[] = [];\r\n const googleMapsTms = capabilities?.contents?.getGoogleMapsCompatibleTileMatrixSet();\r\n if (googleMapsTms) {\r\n supportedTms = googleMapsTms;\r\n }\r\n const wsg84Tms = capabilities?.contents?.getEpsg4326CompatibleTileMatrixSet();\r\n if (wsg84Tms) {\r\n supportedTms = supportedTms.concat(wsg84Tms);\r\n }\r\n\r\n if (supportedTms.length === 0) {\r\n // This WMTS server doesn't support either GoogleMaps or WSG84\r\n return { status: MapLayerSourceStatus.InvalidCoordinateSystem };\r\n }\r\n\r\n let subLayerId = 0;\r\n capabilities?.contents?.layers.forEach((layer) => {\r\n const hasSupportedTms = supportedTms?.some((tms) => {\r\n return layer.tileMatrixSetLinks.some((tmls) => tmls.tileMatrixSet === tms.identifier);\r\n });\r\n if (hasSupportedTms) {\r\n subLayers.push({\r\n name: layer.identifier,\r\n title: layer.title ?? layer.identifier,\r\n visible: (subLayers.length === 0), // Make the first layer visible.\r\n parent: undefined,\r\n children: undefined,\r\n id: subLayerId++,\r\n });\r\n }\r\n });\r\n\r\n // Return error if we could find a single compatible layer.\r\n if (subLayers.length === 0)\r\n return { status: MapLayerSourceStatus.InvalidTileTree };\r\n\r\n return { status: MapLayerSourceStatus.Valid, subLayers };\r\n } catch (err) {\r\n console.error(err); // eslint-disable-line no-console\r\n return { status: MapLayerSourceStatus.InvalidUrl };\r\n }\r\n }\r\n\r\n}\r\n\r\nclass ArcGISMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"ArcGIS\";\r\n public static override async validateSource(url: string, userName?: string, password?: string, ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\r\n // Some Map service supporting only tiles don't include the 'Map' capabilities, thus we can't make it mandatory.\r\n return ArcGisUtilities.validateSource(url, this.formatId, [], userName, password, ignoreCache);\r\n }\r\n public static override createImageryProvider(settings: ImageMapLayerSettings): MapLayerImageryProvider | undefined {\r\n return new ArcGISMapLayerImageryProvider(settings);\r\n }\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\nclass AzureMapsMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"AzureMaps\";\r\n public static override createImageryProvider(settings: ImageMapLayerSettings): MapLayerImageryProvider | undefined {\r\n return new AzureMapsLayerImageryProvider(settings);\r\n }\r\n}\r\nclass BingMapsMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"BingMaps\";\r\n public static override createImageryProvider(settings: ImageMapLayerSettings): MapLayerImageryProvider | undefined {\r\n return new BingMapsImageryLayerProvider(settings);\r\n }\r\n}\r\n\r\nclass MapBoxImageryMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"MapboxImagery\";\r\n public static override createImageryProvider(settings: ImageMapLayerSettings): MapLayerImageryProvider | undefined {\r\n return new MapBoxLayerImageryProvider(settings);\r\n }\r\n}\r\nclass TileUrlMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"TileURL\";\r\n public static override createImageryProvider(settings: ImageMapLayerSettings): MapLayerImageryProvider | undefined { return new TileUrlImageryProvider(settings); }\r\n}\r\n\r\n/** @internal */\r\nexport const internalMapLayerImageryFormats = [WmsMapLayerFormat, WmtsMapLayerFormat, ArcGISMapLayerFormat, /* AzureMapsMapLayerFormat, */ BingMapsMapLayerFormat, MapBoxImageryMapLayerFormat, TileUrlMapLayerFormat];\r\n"]}
|