@itwin/core-frontend 3.1.0-dev.8 → 3.2.0-dev.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (789) hide show
  1. package/CHANGELOG.md +163 -35
  2. package/lib/cjs/AccuSnap.js +2 -2
  3. package/lib/cjs/AccuSnap.js.map +1 -1
  4. package/lib/cjs/ApproximateTerrainHeights.d.ts +1 -1
  5. package/lib/cjs/ApproximateTerrainHeights.d.ts.map +1 -1
  6. package/lib/cjs/ApproximateTerrainHeights.js +21 -9
  7. package/lib/cjs/ApproximateTerrainHeights.js.map +1 -1
  8. package/lib/cjs/ApproximateTerrainHeightsProps.d.ts +12 -0
  9. package/lib/cjs/ApproximateTerrainHeightsProps.d.ts.map +1 -0
  10. package/lib/cjs/ApproximateTerrainHeightsProps.js +13 -0
  11. package/lib/cjs/ApproximateTerrainHeightsProps.js.map +1 -0
  12. package/lib/cjs/CategorySelectorState.js +1 -1
  13. package/lib/cjs/CategorySelectorState.js.map +1 -1
  14. package/lib/cjs/DisplayStyleState.d.ts +4 -3
  15. package/lib/cjs/DisplayStyleState.d.ts.map +1 -1
  16. package/lib/cjs/DisplayStyleState.js +32 -8
  17. package/lib/cjs/DisplayStyleState.js.map +1 -1
  18. package/lib/cjs/DrawingViewState.d.ts.map +1 -1
  19. package/lib/cjs/DrawingViewState.js +6 -5
  20. package/lib/cjs/DrawingViewState.js.map +1 -1
  21. package/lib/cjs/FrontendLoggerCategory.d.ts +3 -1
  22. package/lib/cjs/FrontendLoggerCategory.d.ts.map +1 -1
  23. package/lib/cjs/FrontendLoggerCategory.js +2 -0
  24. package/lib/cjs/FrontendLoggerCategory.js.map +1 -1
  25. package/lib/cjs/HitDetail.js.map +1 -1
  26. package/lib/cjs/IModelApp.d.ts +8 -4
  27. package/lib/cjs/IModelApp.d.ts.map +1 -1
  28. package/lib/cjs/IModelApp.js +20 -10
  29. package/lib/cjs/IModelApp.js.map +1 -1
  30. package/lib/cjs/IModelConnection.d.ts +3 -5
  31. package/lib/cjs/IModelConnection.d.ts.map +1 -1
  32. package/lib/cjs/IModelConnection.js +4 -10
  33. package/lib/cjs/IModelConnection.js.map +1 -1
  34. package/lib/cjs/ImageUtil.d.ts.map +1 -1
  35. package/lib/cjs/ImageUtil.js +8 -14
  36. package/lib/cjs/ImageUtil.js.map +1 -1
  37. package/lib/cjs/LocalhostIpcApp.d.ts +2 -0
  38. package/lib/cjs/LocalhostIpcApp.d.ts.map +1 -1
  39. package/lib/cjs/LocalhostIpcApp.js +10 -4
  40. package/lib/cjs/LocalhostIpcApp.js.map +1 -1
  41. package/lib/cjs/RealityDataSource.d.ts +60 -14
  42. package/lib/cjs/RealityDataSource.d.ts.map +1 -1
  43. package/lib/cjs/RealityDataSource.js +36 -235
  44. package/lib/cjs/RealityDataSource.js.map +1 -1
  45. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.d.ts +67 -0
  46. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.d.ts.map +1 -0
  47. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.js +166 -0
  48. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.js.map +1 -0
  49. package/lib/cjs/RealityDataSourceContextShareImpl.d.ts +83 -0
  50. package/lib/cjs/RealityDataSourceContextShareImpl.d.ts.map +1 -0
  51. package/lib/cjs/RealityDataSourceContextShareImpl.js +234 -0
  52. package/lib/cjs/RealityDataSourceContextShareImpl.js.map +1 -0
  53. package/lib/cjs/RealityDataSourceTilesetUrlImpl.d.ts +65 -0
  54. package/lib/cjs/RealityDataSourceTilesetUrlImpl.d.ts.map +1 -0
  55. package/lib/cjs/RealityDataSourceTilesetUrlImpl.js +135 -0
  56. package/lib/cjs/RealityDataSourceTilesetUrlImpl.js.map +1 -0
  57. package/lib/cjs/SheetViewState.js +4 -0
  58. package/lib/cjs/SheetViewState.js.map +1 -1
  59. package/lib/cjs/ViewState.d.ts +8 -0
  60. package/lib/cjs/ViewState.d.ts.map +1 -1
  61. package/lib/cjs/ViewState.js +1 -1
  62. package/lib/cjs/ViewState.js.map +1 -1
  63. package/lib/cjs/Viewport.d.ts +30 -12
  64. package/lib/cjs/Viewport.d.ts.map +1 -1
  65. package/lib/cjs/Viewport.js +43 -1
  66. package/lib/cjs/Viewport.js.map +1 -1
  67. package/lib/cjs/core-frontend.d.ts +6 -4
  68. package/lib/cjs/core-frontend.d.ts.map +1 -1
  69. package/lib/cjs/core-frontend.js +6 -4
  70. package/lib/cjs/core-frontend.js.map +1 -1
  71. package/lib/cjs/extension/Extension.d.ts +48 -0
  72. package/lib/cjs/extension/Extension.d.ts.map +1 -0
  73. package/lib/cjs/extension/Extension.js +18 -0
  74. package/lib/cjs/extension/Extension.js.map +1 -0
  75. package/lib/cjs/extension/ExtensionAdmin.d.ts +64 -0
  76. package/lib/cjs/extension/ExtensionAdmin.d.ts.map +1 -0
  77. package/lib/cjs/extension/ExtensionAdmin.js +106 -0
  78. package/lib/cjs/extension/ExtensionAdmin.js.map +1 -0
  79. package/lib/cjs/extension/ExtensionHost.d.ts +23 -0
  80. package/lib/cjs/extension/ExtensionHost.d.ts.map +1 -0
  81. package/lib/cjs/extension/ExtensionHost.js +26 -0
  82. package/lib/cjs/extension/ExtensionHost.js.map +1 -0
  83. package/lib/cjs/extension/ExtensionImpl.d.ts +21 -0
  84. package/lib/cjs/extension/ExtensionImpl.d.ts.map +1 -0
  85. package/lib/cjs/extension/ExtensionImpl.js +45 -0
  86. package/lib/cjs/extension/ExtensionImpl.js.map +1 -0
  87. package/lib/cjs/extension/ExtensionLoader.d.ts +26 -0
  88. package/lib/cjs/extension/ExtensionLoader.d.ts.map +1 -0
  89. package/lib/cjs/extension/ExtensionLoader.js +10 -0
  90. package/lib/cjs/extension/ExtensionLoader.js.map +1 -0
  91. package/lib/cjs/extension/ExtensionRuntime.d.ts +5 -0
  92. package/lib/cjs/extension/ExtensionRuntime.d.ts.map +1 -0
  93. package/lib/cjs/extension/ExtensionRuntime.js +86 -0
  94. package/lib/cjs/extension/ExtensionRuntime.js.map +1 -0
  95. package/lib/cjs/extension/extensions.d.ts +19 -0
  96. package/lib/cjs/extension/extensions.d.ts.map +1 -0
  97. package/lib/cjs/extension/extensions.js +36 -0
  98. package/lib/cjs/extension/extensions.js.map +1 -0
  99. package/lib/cjs/quantity-formatting/BasicUnitsProvider.d.ts +2 -2
  100. package/lib/cjs/quantity-formatting/BasicUnitsProvider.d.ts.map +1 -1
  101. package/lib/cjs/quantity-formatting/BasicUnitsProvider.js +48 -44
  102. package/lib/cjs/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  103. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts +90 -80
  104. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  105. package/lib/cjs/quantity-formatting/QuantityFormatter.js +85 -45
  106. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  107. package/lib/cjs/quantity-formatting/QuantityTypesEditorSpecs.d.ts +54 -0
  108. package/lib/cjs/quantity-formatting/QuantityTypesEditorSpecs.d.ts.map +1 -0
  109. package/lib/cjs/quantity-formatting/QuantityTypesEditorSpecs.js +32 -0
  110. package/lib/cjs/quantity-formatting/QuantityTypesEditorSpecs.js.map +1 -0
  111. package/lib/cjs/quantity-formatting/UnitsData.d.ts +11 -0
  112. package/lib/cjs/quantity-formatting/UnitsData.d.ts.map +1 -0
  113. package/lib/cjs/quantity-formatting/UnitsData.js +59 -0
  114. package/lib/cjs/quantity-formatting/UnitsData.js.map +1 -0
  115. package/lib/cjs/render/GraphicBranch.d.ts +2 -0
  116. package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
  117. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  118. package/lib/cjs/render/ParticleCollectionBuilder.d.ts.map +1 -1
  119. package/lib/cjs/render/ParticleCollectionBuilder.js +16 -9
  120. package/lib/cjs/render/ParticleCollectionBuilder.js.map +1 -1
  121. package/lib/cjs/render/RenderPlanarClassifier.d.ts +1 -1
  122. package/lib/cjs/render/RenderPlanarClassifier.d.ts.map +1 -1
  123. package/lib/cjs/render/RenderPlanarClassifier.js.map +1 -1
  124. package/lib/cjs/render/RenderSystem.d.ts +12 -7
  125. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  126. package/lib/cjs/render/RenderSystem.js +27 -22
  127. package/lib/cjs/render/RenderSystem.js.map +1 -1
  128. package/lib/cjs/render/RenderTarget.d.ts +4 -4
  129. package/lib/cjs/render/RenderTarget.d.ts.map +1 -1
  130. package/lib/cjs/render/RenderTarget.js.map +1 -1
  131. package/lib/cjs/render/Scene.d.ts.map +1 -1
  132. package/lib/cjs/render/Scene.js.map +1 -1
  133. package/lib/cjs/render/primitives/EdgeParams.d.ts.map +1 -1
  134. package/lib/cjs/render/primitives/EdgeParams.js +3 -1
  135. package/lib/cjs/render/primitives/EdgeParams.js.map +1 -1
  136. package/lib/cjs/render/primitives/PolylineParams.d.ts.map +1 -1
  137. package/lib/cjs/render/primitives/PolylineParams.js +10 -5
  138. package/lib/cjs/render/primitives/PolylineParams.js.map +1 -1
  139. package/lib/cjs/render/primitives/VertexKey.d.ts +11 -8
  140. package/lib/cjs/render/primitives/VertexKey.d.ts.map +1 -1
  141. package/lib/cjs/render/primitives/VertexKey.js +24 -6
  142. package/lib/cjs/render/primitives/VertexKey.js.map +1 -1
  143. package/lib/cjs/render/primitives/VertexTable.d.ts +15 -2
  144. package/lib/cjs/render/primitives/VertexTable.d.ts.map +1 -1
  145. package/lib/cjs/render/primitives/VertexTable.js +273 -108
  146. package/lib/cjs/render/primitives/VertexTable.js.map +1 -1
  147. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
  148. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js +22 -10
  149. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  150. package/lib/cjs/render/primitives/mesh/MeshBuilder.d.ts +4 -6
  151. package/lib/cjs/render/primitives/mesh/MeshBuilder.d.ts.map +1 -1
  152. package/lib/cjs/render/primitives/mesh/MeshBuilder.js +16 -13
  153. package/lib/cjs/render/primitives/mesh/MeshBuilder.js.map +1 -1
  154. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.d.ts.map +1 -1
  155. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.js +12 -1
  156. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
  157. package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts +45 -28
  158. package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
  159. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js +107 -146
  160. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  161. package/lib/cjs/render/primitives/mesh/RealityMeshPrimitive.d.ts +17 -2
  162. package/lib/cjs/render/primitives/mesh/RealityMeshPrimitive.d.ts.map +1 -1
  163. package/lib/cjs/render/primitives/mesh/RealityMeshPrimitive.js +39 -2
  164. package/lib/cjs/render/primitives/mesh/RealityMeshPrimitive.js.map +1 -1
  165. package/lib/cjs/render/webgl/BackgroundMapDrape.js +1 -1
  166. package/lib/cjs/render/webgl/BackgroundMapDrape.js.map +1 -1
  167. package/lib/cjs/render/webgl/BranchState.d.ts +2 -0
  168. package/lib/cjs/render/webgl/BranchState.d.ts.map +1 -1
  169. package/lib/cjs/render/webgl/BranchState.js +5 -3
  170. package/lib/cjs/render/webgl/BranchState.js.map +1 -1
  171. package/lib/cjs/render/webgl/CachedGeometry.d.ts +6 -0
  172. package/lib/cjs/render/webgl/CachedGeometry.d.ts.map +1 -1
  173. package/lib/cjs/render/webgl/CachedGeometry.js +6 -0
  174. package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
  175. package/lib/cjs/render/webgl/DrawCommand.js +1 -1
  176. package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
  177. package/lib/cjs/render/webgl/Graphic.d.ts +5 -3
  178. package/lib/cjs/render/webgl/Graphic.d.ts.map +1 -1
  179. package/lib/cjs/render/webgl/Graphic.js +7 -2
  180. package/lib/cjs/render/webgl/Graphic.js.map +1 -1
  181. package/lib/cjs/render/webgl/PlanarClassifier.d.ts +4 -1
  182. package/lib/cjs/render/webgl/PlanarClassifier.d.ts.map +1 -1
  183. package/lib/cjs/render/webgl/PlanarClassifier.js +22 -9
  184. package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
  185. package/lib/cjs/render/webgl/PlanarTextureProjection.d.ts +2 -2
  186. package/lib/cjs/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  187. package/lib/cjs/render/webgl/PlanarTextureProjection.js +5 -3
  188. package/lib/cjs/render/webgl/PlanarTextureProjection.js.map +1 -1
  189. package/lib/cjs/render/webgl/RealityMesh.d.ts +31 -11
  190. package/lib/cjs/render/webgl/RealityMesh.d.ts.map +1 -1
  191. package/lib/cjs/render/webgl/RealityMesh.js +155 -52
  192. package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
  193. package/lib/cjs/render/webgl/RenderCommands.d.ts.map +1 -1
  194. package/lib/cjs/render/webgl/RenderCommands.js +4 -0
  195. package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
  196. package/lib/cjs/render/webgl/SceneCompositor.d.ts +3 -0
  197. package/lib/cjs/render/webgl/SceneCompositor.d.ts.map +1 -1
  198. package/lib/cjs/render/webgl/SceneCompositor.js +45 -19
  199. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  200. package/lib/cjs/render/webgl/ShaderBuilder.d.ts +8 -7
  201. package/lib/cjs/render/webgl/ShaderBuilder.d.ts.map +1 -1
  202. package/lib/cjs/render/webgl/ShaderBuilder.js +12 -5
  203. package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
  204. package/lib/cjs/render/webgl/ShaderProgram.d.ts +1 -0
  205. package/lib/cjs/render/webgl/ShaderProgram.d.ts.map +1 -1
  206. package/lib/cjs/render/webgl/ShaderProgram.js +1 -0
  207. package/lib/cjs/render/webgl/ShaderProgram.js.map +1 -1
  208. package/lib/cjs/render/webgl/System.d.ts +9 -9
  209. package/lib/cjs/render/webgl/System.d.ts.map +1 -1
  210. package/lib/cjs/render/webgl/System.js +5 -5
  211. package/lib/cjs/render/webgl/System.js.map +1 -1
  212. package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
  213. package/lib/cjs/render/webgl/Target.js.map +1 -1
  214. package/lib/cjs/render/webgl/VertexLUT.d.ts +2 -1
  215. package/lib/cjs/render/webgl/VertexLUT.d.ts.map +1 -1
  216. package/lib/cjs/render/webgl/VertexLUT.js +4 -3
  217. package/lib/cjs/render/webgl/VertexLUT.js.map +1 -1
  218. package/lib/cjs/render/webgl/glsl/Color.js +1 -1
  219. package/lib/cjs/render/webgl/glsl/Color.js.map +1 -1
  220. package/lib/cjs/render/webgl/glsl/Decode.d.ts +6 -0
  221. package/lib/cjs/render/webgl/glsl/Decode.d.ts.map +1 -1
  222. package/lib/cjs/render/webgl/glsl/Decode.js +18 -1
  223. package/lib/cjs/render/webgl/glsl/Decode.js.map +1 -1
  224. package/lib/cjs/render/webgl/glsl/Edge.d.ts.map +1 -1
  225. package/lib/cjs/render/webgl/glsl/Edge.js +15 -6
  226. package/lib/cjs/render/webgl/glsl/Edge.js.map +1 -1
  227. package/lib/cjs/render/webgl/glsl/PlanarClassification.js +1 -1
  228. package/lib/cjs/render/webgl/glsl/PlanarClassification.js.map +1 -1
  229. package/lib/cjs/render/webgl/glsl/PointString.d.ts.map +1 -1
  230. package/lib/cjs/render/webgl/glsl/PointString.js +1 -1
  231. package/lib/cjs/render/webgl/glsl/PointString.js.map +1 -1
  232. package/lib/cjs/render/webgl/glsl/Polyline.d.ts +2 -2
  233. package/lib/cjs/render/webgl/glsl/Polyline.d.ts.map +1 -1
  234. package/lib/cjs/render/webgl/glsl/Polyline.js +24 -9
  235. package/lib/cjs/render/webgl/glsl/Polyline.js.map +1 -1
  236. package/lib/cjs/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  237. package/lib/cjs/render/webgl/glsl/RealityMesh.js +102 -27
  238. package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
  239. package/lib/cjs/render/webgl/glsl/Surface.d.ts.map +1 -1
  240. package/lib/cjs/render/webgl/glsl/Surface.js +18 -19
  241. package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
  242. package/lib/cjs/render/webgl/glsl/Thematic.d.ts.map +1 -1
  243. package/lib/cjs/render/webgl/glsl/Thematic.js +1 -6
  244. package/lib/cjs/render/webgl/glsl/Thematic.js.map +1 -1
  245. package/lib/cjs/render/webgl/glsl/Vertex.d.ts.map +1 -1
  246. package/lib/cjs/render/webgl/glsl/Vertex.js +31 -14
  247. package/lib/cjs/render/webgl/glsl/Vertex.js.map +1 -1
  248. package/lib/cjs/tile/ClassifierTileTree.d.ts +4 -2
  249. package/lib/cjs/tile/ClassifierTileTree.d.ts.map +1 -1
  250. package/lib/cjs/tile/ClassifierTileTree.js +31 -16
  251. package/lib/cjs/tile/ClassifierTileTree.js.map +1 -1
  252. package/lib/cjs/tile/GltfReader.d.ts +22 -3
  253. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  254. package/lib/cjs/tile/GltfReader.js +231 -45
  255. package/lib/cjs/tile/GltfReader.js.map +1 -1
  256. package/lib/cjs/tile/OPCFormatInterpreter.d.ts +22 -0
  257. package/lib/cjs/tile/OPCFormatInterpreter.d.ts.map +1 -0
  258. package/lib/cjs/tile/OPCFormatInterpreter.js +92 -0
  259. package/lib/cjs/tile/OPCFormatInterpreter.js.map +1 -0
  260. package/lib/cjs/tile/PntsReader.d.ts +1 -1
  261. package/lib/cjs/tile/PntsReader.d.ts.map +1 -1
  262. package/lib/cjs/tile/PntsReader.js +170 -36
  263. package/lib/cjs/tile/PntsReader.js.map +1 -1
  264. package/lib/cjs/tile/PrimaryTileTree.d.ts +18 -2
  265. package/lib/cjs/tile/PrimaryTileTree.d.ts.map +1 -1
  266. package/lib/cjs/tile/PrimaryTileTree.js +53 -2
  267. package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
  268. package/lib/cjs/tile/RealityModelTileTree.d.ts +24 -3
  269. package/lib/cjs/tile/RealityModelTileTree.d.ts.map +1 -1
  270. package/lib/cjs/tile/RealityModelTileTree.js +36 -11
  271. package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
  272. package/lib/cjs/tile/RealityTile.d.ts +16 -2
  273. package/lib/cjs/tile/RealityTile.d.ts.map +1 -1
  274. package/lib/cjs/tile/RealityTile.js +32 -0
  275. package/lib/cjs/tile/RealityTile.js.map +1 -1
  276. package/lib/cjs/tile/RealityTileDrawArgs.d.ts +4 -1
  277. package/lib/cjs/tile/RealityTileDrawArgs.d.ts.map +1 -1
  278. package/lib/cjs/tile/RealityTileDrawArgs.js +3 -1
  279. package/lib/cjs/tile/RealityTileDrawArgs.js.map +1 -1
  280. package/lib/cjs/tile/RealityTileLoader.d.ts +7 -4
  281. package/lib/cjs/tile/RealityTileLoader.d.ts.map +1 -1
  282. package/lib/cjs/tile/RealityTileLoader.js +19 -5
  283. package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
  284. package/lib/cjs/tile/RealityTileTree.d.ts +4 -1
  285. package/lib/cjs/tile/RealityTileTree.d.ts.map +1 -1
  286. package/lib/cjs/tile/RealityTileTree.js +11 -3
  287. package/lib/cjs/tile/RealityTileTree.js.map +1 -1
  288. package/lib/cjs/tile/ThreeDTileFormatInterpreter.d.ts +52 -0
  289. package/lib/cjs/tile/ThreeDTileFormatInterpreter.d.ts.map +1 -0
  290. package/lib/cjs/tile/ThreeDTileFormatInterpreter.js +179 -0
  291. package/lib/cjs/tile/ThreeDTileFormatInterpreter.js.map +1 -0
  292. package/lib/cjs/tile/TileDrawArgs.d.ts +2 -0
  293. package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
  294. package/lib/cjs/tile/TileDrawArgs.js +5 -0
  295. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  296. package/lib/cjs/tile/TileGeometryCollector.d.ts +80 -0
  297. package/lib/cjs/tile/TileGeometryCollector.d.ts.map +1 -0
  298. package/lib/cjs/tile/TileGeometryCollector.js +71 -0
  299. package/lib/cjs/tile/TileGeometryCollector.js.map +1 -0
  300. package/lib/cjs/tile/TileTree.d.ts +7 -1
  301. package/lib/cjs/tile/TileTree.d.ts.map +1 -1
  302. package/lib/cjs/tile/TileTree.js +7 -0
  303. package/lib/cjs/tile/TileTree.js.map +1 -1
  304. package/lib/cjs/tile/TileTreeReference.d.ts +26 -1
  305. package/lib/cjs/tile/TileTreeReference.d.ts.map +1 -1
  306. package/lib/cjs/tile/TileTreeReference.js +40 -0
  307. package/lib/cjs/tile/TileTreeReference.js.map +1 -1
  308. package/lib/cjs/tile/internal.d.ts +4 -0
  309. package/lib/cjs/tile/internal.d.ts.map +1 -1
  310. package/lib/cjs/tile/internal.js +4 -0
  311. package/lib/cjs/tile/internal.js.map +1 -1
  312. package/lib/cjs/tile/map/BingElevation.d.ts +2 -16
  313. package/lib/cjs/tile/map/BingElevation.d.ts.map +1 -1
  314. package/lib/cjs/tile/map/BingElevation.js +1 -63
  315. package/lib/cjs/tile/map/BingElevation.js.map +1 -1
  316. package/lib/cjs/tile/map/CesiumTerrainProvider.js +2 -2
  317. package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
  318. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +5 -3
  319. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  320. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +45 -12
  321. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  322. package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts +2 -2
  323. package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts.map +1 -1
  324. package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
  325. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.d.ts +2 -2
  326. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
  327. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  328. package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts +2 -2
  329. package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts.map +1 -1
  330. package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js +4 -3
  331. package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
  332. package/lib/cjs/tile/map/ImageryProviders/TileUrlImageryProvider.d.ts +2 -2
  333. package/lib/cjs/tile/map/ImageryProviders/TileUrlImageryProvider.d.ts.map +1 -1
  334. package/lib/cjs/tile/map/ImageryProviders/TileUrlImageryProvider.js.map +1 -1
  335. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts +2 -2
  336. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
  337. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +1 -1
  338. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  339. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts +2 -2
  340. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts.map +1 -1
  341. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  342. package/lib/cjs/tile/map/ImageryTileTree.d.ts +2 -3
  343. package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
  344. package/lib/cjs/tile/map/ImageryTileTree.js +4 -3
  345. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  346. package/lib/cjs/tile/map/MapFeatureInfo.d.ts +26 -0
  347. package/lib/cjs/tile/map/MapFeatureInfo.d.ts.map +1 -0
  348. package/lib/cjs/tile/map/MapFeatureInfo.js +19 -0
  349. package/lib/cjs/tile/map/MapFeatureInfo.js.map +1 -0
  350. package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts +4 -4
  351. package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
  352. package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
  353. package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts +3 -3
  354. package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
  355. package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
  356. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +5 -4
  357. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  358. package/lib/cjs/tile/map/MapLayerImageryProvider.js +5 -1
  359. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  360. package/lib/cjs/tile/map/MapLayerSources.d.ts +2 -2
  361. package/lib/cjs/tile/map/MapLayerSources.d.ts.map +1 -1
  362. package/lib/cjs/tile/map/MapLayerSources.js +6 -4
  363. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  364. package/lib/cjs/tile/map/MapLayerTileTreeReference.d.ts +10 -2
  365. package/lib/cjs/tile/map/MapLayerTileTreeReference.d.ts.map +1 -1
  366. package/lib/cjs/tile/map/MapLayerTileTreeReference.js +26 -3
  367. package/lib/cjs/tile/map/MapLayerTileTreeReference.js.map +1 -1
  368. package/lib/cjs/tile/map/MapTile.d.ts +12 -10
  369. package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
  370. package/lib/cjs/tile/map/MapTile.js +60 -39
  371. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  372. package/lib/cjs/tile/map/MapTileLoader.d.ts +2 -1
  373. package/lib/cjs/tile/map/MapTileLoader.d.ts.map +1 -1
  374. package/lib/cjs/tile/map/MapTileLoader.js +4 -1
  375. package/lib/cjs/tile/map/MapTileLoader.js.map +1 -1
  376. package/lib/cjs/tile/map/MapTileTree.d.ts +18 -8
  377. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  378. package/lib/cjs/tile/map/MapTileTree.js +148 -61
  379. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  380. package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  381. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js +1 -1
  382. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  383. package/lib/cjs/tools/ToolAdmin.d.ts +2 -3
  384. package/lib/cjs/tools/ToolAdmin.d.ts.map +1 -1
  385. package/lib/cjs/tools/ToolAdmin.js +7 -2
  386. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  387. package/lib/cjs/tools/ViewTool.d.ts +4 -4
  388. package/lib/cjs/tools/ViewTool.d.ts.map +1 -1
  389. package/lib/cjs/tools/ViewTool.js +1 -1
  390. package/lib/cjs/tools/ViewTool.js.map +1 -1
  391. package/lib/esm/AccuSnap.js +2 -2
  392. package/lib/esm/AccuSnap.js.map +1 -1
  393. package/lib/esm/ApproximateTerrainHeights.d.ts +1 -1
  394. package/lib/esm/ApproximateTerrainHeights.d.ts.map +1 -1
  395. package/lib/esm/ApproximateTerrainHeights.js +2 -9
  396. package/lib/esm/ApproximateTerrainHeights.js.map +1 -1
  397. package/lib/esm/ApproximateTerrainHeightsProps.d.ts +12 -0
  398. package/lib/esm/ApproximateTerrainHeightsProps.d.ts.map +1 -0
  399. package/lib/esm/ApproximateTerrainHeightsProps.js +10 -0
  400. package/lib/esm/ApproximateTerrainHeightsProps.js.map +1 -0
  401. package/lib/esm/CategorySelectorState.js +1 -1
  402. package/lib/esm/CategorySelectorState.js.map +1 -1
  403. package/lib/esm/DisplayStyleState.d.ts +4 -3
  404. package/lib/esm/DisplayStyleState.d.ts.map +1 -1
  405. package/lib/esm/DisplayStyleState.js +34 -10
  406. package/lib/esm/DisplayStyleState.js.map +1 -1
  407. package/lib/esm/DrawingViewState.d.ts.map +1 -1
  408. package/lib/esm/DrawingViewState.js +6 -5
  409. package/lib/esm/DrawingViewState.js.map +1 -1
  410. package/lib/esm/FrontendLoggerCategory.d.ts +3 -1
  411. package/lib/esm/FrontendLoggerCategory.d.ts.map +1 -1
  412. package/lib/esm/FrontendLoggerCategory.js +2 -0
  413. package/lib/esm/FrontendLoggerCategory.js.map +1 -1
  414. package/lib/esm/HitDetail.js.map +1 -1
  415. package/lib/esm/IModelApp.d.ts +8 -4
  416. package/lib/esm/IModelApp.d.ts.map +1 -1
  417. package/lib/esm/IModelApp.js +20 -10
  418. package/lib/esm/IModelApp.js.map +1 -1
  419. package/lib/esm/IModelConnection.d.ts +3 -5
  420. package/lib/esm/IModelConnection.d.ts.map +1 -1
  421. package/lib/esm/IModelConnection.js +5 -11
  422. package/lib/esm/IModelConnection.js.map +1 -1
  423. package/lib/esm/ImageUtil.d.ts.map +1 -1
  424. package/lib/esm/ImageUtil.js +8 -14
  425. package/lib/esm/ImageUtil.js.map +1 -1
  426. package/lib/esm/LocalhostIpcApp.d.ts +2 -0
  427. package/lib/esm/LocalhostIpcApp.d.ts.map +1 -1
  428. package/lib/esm/LocalhostIpcApp.js +10 -4
  429. package/lib/esm/LocalhostIpcApp.js.map +1 -1
  430. package/lib/esm/RealityDataSource.d.ts +60 -14
  431. package/lib/esm/RealityDataSource.d.ts.map +1 -1
  432. package/lib/esm/RealityDataSource.js +37 -237
  433. package/lib/esm/RealityDataSource.js.map +1 -1
  434. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.d.ts +67 -0
  435. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.d.ts.map +1 -0
  436. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.js +162 -0
  437. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.js.map +1 -0
  438. package/lib/esm/RealityDataSourceContextShareImpl.d.ts +83 -0
  439. package/lib/esm/RealityDataSourceContextShareImpl.d.ts.map +1 -0
  440. package/lib/esm/RealityDataSourceContextShareImpl.js +230 -0
  441. package/lib/esm/RealityDataSourceContextShareImpl.js.map +1 -0
  442. package/lib/esm/RealityDataSourceTilesetUrlImpl.d.ts +65 -0
  443. package/lib/esm/RealityDataSourceTilesetUrlImpl.d.ts.map +1 -0
  444. package/lib/esm/RealityDataSourceTilesetUrlImpl.js +131 -0
  445. package/lib/esm/RealityDataSourceTilesetUrlImpl.js.map +1 -0
  446. package/lib/esm/SheetViewState.js +4 -0
  447. package/lib/esm/SheetViewState.js.map +1 -1
  448. package/lib/esm/ViewState.d.ts +8 -0
  449. package/lib/esm/ViewState.d.ts.map +1 -1
  450. package/lib/esm/ViewState.js +1 -1
  451. package/lib/esm/ViewState.js.map +1 -1
  452. package/lib/esm/Viewport.d.ts +30 -12
  453. package/lib/esm/Viewport.d.ts.map +1 -1
  454. package/lib/esm/Viewport.js +43 -1
  455. package/lib/esm/Viewport.js.map +1 -1
  456. package/lib/esm/core-frontend.d.ts +6 -4
  457. package/lib/esm/core-frontend.d.ts.map +1 -1
  458. package/lib/esm/core-frontend.js +6 -4
  459. package/lib/esm/core-frontend.js.map +1 -1
  460. package/lib/esm/extension/Extension.d.ts +48 -0
  461. package/lib/esm/extension/Extension.d.ts.map +1 -0
  462. package/lib/esm/extension/Extension.js +15 -0
  463. package/lib/esm/extension/Extension.js.map +1 -0
  464. package/lib/esm/extension/ExtensionAdmin.d.ts +64 -0
  465. package/lib/esm/extension/ExtensionAdmin.d.ts.map +1 -0
  466. package/lib/esm/extension/ExtensionAdmin.js +102 -0
  467. package/lib/esm/extension/ExtensionAdmin.js.map +1 -0
  468. package/lib/esm/extension/ExtensionHost.d.ts +23 -0
  469. package/lib/esm/extension/ExtensionHost.d.ts.map +1 -0
  470. package/lib/esm/extension/ExtensionHost.js +22 -0
  471. package/lib/esm/extension/ExtensionHost.js.map +1 -0
  472. package/lib/esm/extension/ExtensionImpl.d.ts +21 -0
  473. package/lib/esm/extension/ExtensionImpl.d.ts.map +1 -0
  474. package/lib/esm/extension/ExtensionImpl.js +40 -0
  475. package/lib/esm/extension/ExtensionImpl.js.map +1 -0
  476. package/lib/esm/extension/ExtensionLoader.d.ts +26 -0
  477. package/lib/esm/extension/ExtensionLoader.d.ts.map +1 -0
  478. package/lib/esm/extension/ExtensionLoader.js +9 -0
  479. package/lib/esm/extension/ExtensionLoader.js.map +1 -0
  480. package/lib/esm/extension/ExtensionRuntime.d.ts +5 -0
  481. package/lib/esm/extension/ExtensionRuntime.d.ts.map +1 -0
  482. package/lib/esm/extension/ExtensionRuntime.js +84 -0
  483. package/lib/esm/extension/ExtensionRuntime.js.map +1 -0
  484. package/lib/esm/extension/extensions.d.ts +19 -0
  485. package/lib/esm/extension/extensions.d.ts.map +1 -0
  486. package/lib/esm/extension/extensions.js +24 -0
  487. package/lib/esm/extension/extensions.js.map +1 -0
  488. package/lib/esm/quantity-formatting/BasicUnitsProvider.d.ts +2 -2
  489. package/lib/esm/quantity-formatting/BasicUnitsProvider.d.ts.map +1 -1
  490. package/lib/esm/quantity-formatting/BasicUnitsProvider.js +48 -44
  491. package/lib/esm/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  492. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts +90 -80
  493. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  494. package/lib/esm/quantity-formatting/QuantityFormatter.js +85 -42
  495. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  496. package/lib/esm/quantity-formatting/QuantityTypesEditorSpecs.d.ts +54 -0
  497. package/lib/esm/quantity-formatting/QuantityTypesEditorSpecs.d.ts.map +1 -0
  498. package/lib/esm/quantity-formatting/QuantityTypesEditorSpecs.js +26 -0
  499. package/lib/esm/quantity-formatting/QuantityTypesEditorSpecs.js.map +1 -0
  500. package/lib/esm/quantity-formatting/UnitsData.d.ts +11 -0
  501. package/lib/esm/quantity-formatting/UnitsData.d.ts.map +1 -0
  502. package/lib/esm/quantity-formatting/UnitsData.js +56 -0
  503. package/lib/esm/quantity-formatting/UnitsData.js.map +1 -0
  504. package/lib/esm/render/GraphicBranch.d.ts +2 -0
  505. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  506. package/lib/esm/render/GraphicBranch.js.map +1 -1
  507. package/lib/esm/render/ParticleCollectionBuilder.d.ts.map +1 -1
  508. package/lib/esm/render/ParticleCollectionBuilder.js +17 -10
  509. package/lib/esm/render/ParticleCollectionBuilder.js.map +1 -1
  510. package/lib/esm/render/RenderPlanarClassifier.d.ts +1 -1
  511. package/lib/esm/render/RenderPlanarClassifier.d.ts.map +1 -1
  512. package/lib/esm/render/RenderPlanarClassifier.js.map +1 -1
  513. package/lib/esm/render/RenderSystem.d.ts +12 -7
  514. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  515. package/lib/esm/render/RenderSystem.js +25 -20
  516. package/lib/esm/render/RenderSystem.js.map +1 -1
  517. package/lib/esm/render/RenderTarget.d.ts +4 -4
  518. package/lib/esm/render/RenderTarget.d.ts.map +1 -1
  519. package/lib/esm/render/RenderTarget.js.map +1 -1
  520. package/lib/esm/render/Scene.d.ts.map +1 -1
  521. package/lib/esm/render/Scene.js.map +1 -1
  522. package/lib/esm/render/primitives/EdgeParams.d.ts.map +1 -1
  523. package/lib/esm/render/primitives/EdgeParams.js +3 -1
  524. package/lib/esm/render/primitives/EdgeParams.js.map +1 -1
  525. package/lib/esm/render/primitives/PolylineParams.d.ts.map +1 -1
  526. package/lib/esm/render/primitives/PolylineParams.js +11 -6
  527. package/lib/esm/render/primitives/PolylineParams.js.map +1 -1
  528. package/lib/esm/render/primitives/VertexKey.d.ts +11 -8
  529. package/lib/esm/render/primitives/VertexKey.d.ts.map +1 -1
  530. package/lib/esm/render/primitives/VertexKey.js +24 -6
  531. package/lib/esm/render/primitives/VertexKey.js.map +1 -1
  532. package/lib/esm/render/primitives/VertexTable.d.ts +15 -2
  533. package/lib/esm/render/primitives/VertexTable.d.ts.map +1 -1
  534. package/lib/esm/render/primitives/VertexTable.js +274 -109
  535. package/lib/esm/render/primitives/VertexTable.js.map +1 -1
  536. package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
  537. package/lib/esm/render/primitives/geometry/GeometryAccumulator.js +23 -11
  538. package/lib/esm/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  539. package/lib/esm/render/primitives/mesh/MeshBuilder.d.ts +4 -6
  540. package/lib/esm/render/primitives/mesh/MeshBuilder.d.ts.map +1 -1
  541. package/lib/esm/render/primitives/mesh/MeshBuilder.js +17 -14
  542. package/lib/esm/render/primitives/mesh/MeshBuilder.js.map +1 -1
  543. package/lib/esm/render/primitives/mesh/MeshBuilderMap.d.ts.map +1 -1
  544. package/lib/esm/render/primitives/mesh/MeshBuilderMap.js +12 -1
  545. package/lib/esm/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
  546. package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts +45 -28
  547. package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
  548. package/lib/esm/render/primitives/mesh/MeshPrimitives.js +108 -144
  549. package/lib/esm/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  550. package/lib/esm/render/primitives/mesh/RealityMeshPrimitive.d.ts +17 -2
  551. package/lib/esm/render/primitives/mesh/RealityMeshPrimitive.d.ts.map +1 -1
  552. package/lib/esm/render/primitives/mesh/RealityMeshPrimitive.js +39 -2
  553. package/lib/esm/render/primitives/mesh/RealityMeshPrimitive.js.map +1 -1
  554. package/lib/esm/render/webgl/BackgroundMapDrape.js +1 -1
  555. package/lib/esm/render/webgl/BackgroundMapDrape.js.map +1 -1
  556. package/lib/esm/render/webgl/BranchState.d.ts +2 -0
  557. package/lib/esm/render/webgl/BranchState.d.ts.map +1 -1
  558. package/lib/esm/render/webgl/BranchState.js +5 -3
  559. package/lib/esm/render/webgl/BranchState.js.map +1 -1
  560. package/lib/esm/render/webgl/CachedGeometry.d.ts +6 -0
  561. package/lib/esm/render/webgl/CachedGeometry.d.ts.map +1 -1
  562. package/lib/esm/render/webgl/CachedGeometry.js +6 -0
  563. package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
  564. package/lib/esm/render/webgl/DrawCommand.js +1 -1
  565. package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
  566. package/lib/esm/render/webgl/Graphic.d.ts +5 -3
  567. package/lib/esm/render/webgl/Graphic.d.ts.map +1 -1
  568. package/lib/esm/render/webgl/Graphic.js +7 -2
  569. package/lib/esm/render/webgl/Graphic.js.map +1 -1
  570. package/lib/esm/render/webgl/PlanarClassifier.d.ts +4 -1
  571. package/lib/esm/render/webgl/PlanarClassifier.d.ts.map +1 -1
  572. package/lib/esm/render/webgl/PlanarClassifier.js +22 -9
  573. package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
  574. package/lib/esm/render/webgl/PlanarTextureProjection.d.ts +2 -2
  575. package/lib/esm/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  576. package/lib/esm/render/webgl/PlanarTextureProjection.js +5 -3
  577. package/lib/esm/render/webgl/PlanarTextureProjection.js.map +1 -1
  578. package/lib/esm/render/webgl/RealityMesh.d.ts +31 -11
  579. package/lib/esm/render/webgl/RealityMesh.d.ts.map +1 -1
  580. package/lib/esm/render/webgl/RealityMesh.js +155 -52
  581. package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
  582. package/lib/esm/render/webgl/RenderCommands.d.ts.map +1 -1
  583. package/lib/esm/render/webgl/RenderCommands.js +4 -0
  584. package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
  585. package/lib/esm/render/webgl/SceneCompositor.d.ts +3 -0
  586. package/lib/esm/render/webgl/SceneCompositor.d.ts.map +1 -1
  587. package/lib/esm/render/webgl/SceneCompositor.js +45 -19
  588. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  589. package/lib/esm/render/webgl/ShaderBuilder.d.ts +8 -7
  590. package/lib/esm/render/webgl/ShaderBuilder.d.ts.map +1 -1
  591. package/lib/esm/render/webgl/ShaderBuilder.js +12 -5
  592. package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
  593. package/lib/esm/render/webgl/ShaderProgram.d.ts +1 -0
  594. package/lib/esm/render/webgl/ShaderProgram.d.ts.map +1 -1
  595. package/lib/esm/render/webgl/ShaderProgram.js +1 -0
  596. package/lib/esm/render/webgl/ShaderProgram.js.map +1 -1
  597. package/lib/esm/render/webgl/System.d.ts +9 -9
  598. package/lib/esm/render/webgl/System.d.ts.map +1 -1
  599. package/lib/esm/render/webgl/System.js +6 -6
  600. package/lib/esm/render/webgl/System.js.map +1 -1
  601. package/lib/esm/render/webgl/Target.d.ts.map +1 -1
  602. package/lib/esm/render/webgl/Target.js.map +1 -1
  603. package/lib/esm/render/webgl/VertexLUT.d.ts +2 -1
  604. package/lib/esm/render/webgl/VertexLUT.d.ts.map +1 -1
  605. package/lib/esm/render/webgl/VertexLUT.js +4 -3
  606. package/lib/esm/render/webgl/VertexLUT.js.map +1 -1
  607. package/lib/esm/render/webgl/glsl/Color.js +1 -1
  608. package/lib/esm/render/webgl/glsl/Color.js.map +1 -1
  609. package/lib/esm/render/webgl/glsl/Decode.d.ts +6 -0
  610. package/lib/esm/render/webgl/glsl/Decode.d.ts.map +1 -1
  611. package/lib/esm/render/webgl/glsl/Decode.js +17 -0
  612. package/lib/esm/render/webgl/glsl/Decode.js.map +1 -1
  613. package/lib/esm/render/webgl/glsl/Edge.d.ts.map +1 -1
  614. package/lib/esm/render/webgl/glsl/Edge.js +15 -6
  615. package/lib/esm/render/webgl/glsl/Edge.js.map +1 -1
  616. package/lib/esm/render/webgl/glsl/PlanarClassification.js +1 -1
  617. package/lib/esm/render/webgl/glsl/PlanarClassification.js.map +1 -1
  618. package/lib/esm/render/webgl/glsl/PointString.d.ts.map +1 -1
  619. package/lib/esm/render/webgl/glsl/PointString.js +1 -1
  620. package/lib/esm/render/webgl/glsl/PointString.js.map +1 -1
  621. package/lib/esm/render/webgl/glsl/Polyline.d.ts +2 -2
  622. package/lib/esm/render/webgl/glsl/Polyline.d.ts.map +1 -1
  623. package/lib/esm/render/webgl/glsl/Polyline.js +24 -9
  624. package/lib/esm/render/webgl/glsl/Polyline.js.map +1 -1
  625. package/lib/esm/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  626. package/lib/esm/render/webgl/glsl/RealityMesh.js +103 -28
  627. package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
  628. package/lib/esm/render/webgl/glsl/Surface.d.ts.map +1 -1
  629. package/lib/esm/render/webgl/glsl/Surface.js +18 -19
  630. package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
  631. package/lib/esm/render/webgl/glsl/Thematic.d.ts.map +1 -1
  632. package/lib/esm/render/webgl/glsl/Thematic.js +1 -6
  633. package/lib/esm/render/webgl/glsl/Thematic.js.map +1 -1
  634. package/lib/esm/render/webgl/glsl/Vertex.d.ts.map +1 -1
  635. package/lib/esm/render/webgl/glsl/Vertex.js +32 -15
  636. package/lib/esm/render/webgl/glsl/Vertex.js.map +1 -1
  637. package/lib/esm/tile/ClassifierTileTree.d.ts +4 -2
  638. package/lib/esm/tile/ClassifierTileTree.d.ts.map +1 -1
  639. package/lib/esm/tile/ClassifierTileTree.js +32 -17
  640. package/lib/esm/tile/ClassifierTileTree.js.map +1 -1
  641. package/lib/esm/tile/GltfReader.d.ts +22 -3
  642. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  643. package/lib/esm/tile/GltfReader.js +215 -48
  644. package/lib/esm/tile/GltfReader.js.map +1 -1
  645. package/lib/esm/tile/OPCFormatInterpreter.d.ts +22 -0
  646. package/lib/esm/tile/OPCFormatInterpreter.d.ts.map +1 -0
  647. package/lib/esm/tile/OPCFormatInterpreter.js +88 -0
  648. package/lib/esm/tile/OPCFormatInterpreter.js.map +1 -0
  649. package/lib/esm/tile/PntsReader.d.ts +1 -1
  650. package/lib/esm/tile/PntsReader.d.ts.map +1 -1
  651. package/lib/esm/tile/PntsReader.js +154 -39
  652. package/lib/esm/tile/PntsReader.js.map +1 -1
  653. package/lib/esm/tile/PrimaryTileTree.d.ts +18 -2
  654. package/lib/esm/tile/PrimaryTileTree.d.ts.map +1 -1
  655. package/lib/esm/tile/PrimaryTileTree.js +51 -2
  656. package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
  657. package/lib/esm/tile/RealityModelTileTree.d.ts +24 -3
  658. package/lib/esm/tile/RealityModelTileTree.d.ts.map +1 -1
  659. package/lib/esm/tile/RealityModelTileTree.js +36 -12
  660. package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
  661. package/lib/esm/tile/RealityTile.d.ts +16 -2
  662. package/lib/esm/tile/RealityTile.d.ts.map +1 -1
  663. package/lib/esm/tile/RealityTile.js +32 -0
  664. package/lib/esm/tile/RealityTile.js.map +1 -1
  665. package/lib/esm/tile/RealityTileDrawArgs.d.ts +4 -1
  666. package/lib/esm/tile/RealityTileDrawArgs.d.ts.map +1 -1
  667. package/lib/esm/tile/RealityTileDrawArgs.js +3 -1
  668. package/lib/esm/tile/RealityTileDrawArgs.js.map +1 -1
  669. package/lib/esm/tile/RealityTileLoader.d.ts +7 -4
  670. package/lib/esm/tile/RealityTileLoader.d.ts.map +1 -1
  671. package/lib/esm/tile/RealityTileLoader.js +19 -5
  672. package/lib/esm/tile/RealityTileLoader.js.map +1 -1
  673. package/lib/esm/tile/RealityTileTree.d.ts +4 -1
  674. package/lib/esm/tile/RealityTileTree.d.ts.map +1 -1
  675. package/lib/esm/tile/RealityTileTree.js +13 -5
  676. package/lib/esm/tile/RealityTileTree.js.map +1 -1
  677. package/lib/esm/tile/ThreeDTileFormatInterpreter.d.ts +52 -0
  678. package/lib/esm/tile/ThreeDTileFormatInterpreter.d.ts.map +1 -0
  679. package/lib/esm/tile/ThreeDTileFormatInterpreter.js +175 -0
  680. package/lib/esm/tile/ThreeDTileFormatInterpreter.js.map +1 -0
  681. package/lib/esm/tile/TileDrawArgs.d.ts +2 -0
  682. package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
  683. package/lib/esm/tile/TileDrawArgs.js +5 -0
  684. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  685. package/lib/esm/tile/TileGeometryCollector.d.ts +80 -0
  686. package/lib/esm/tile/TileGeometryCollector.d.ts.map +1 -0
  687. package/lib/esm/tile/TileGeometryCollector.js +67 -0
  688. package/lib/esm/tile/TileGeometryCollector.js.map +1 -0
  689. package/lib/esm/tile/TileTree.d.ts +7 -1
  690. package/lib/esm/tile/TileTree.d.ts.map +1 -1
  691. package/lib/esm/tile/TileTree.js +7 -0
  692. package/lib/esm/tile/TileTree.js.map +1 -1
  693. package/lib/esm/tile/TileTreeReference.d.ts +26 -1
  694. package/lib/esm/tile/TileTreeReference.d.ts.map +1 -1
  695. package/lib/esm/tile/TileTreeReference.js +42 -2
  696. package/lib/esm/tile/TileTreeReference.js.map +1 -1
  697. package/lib/esm/tile/internal.d.ts +4 -0
  698. package/lib/esm/tile/internal.d.ts.map +1 -1
  699. package/lib/esm/tile/internal.js +4 -0
  700. package/lib/esm/tile/internal.js.map +1 -1
  701. package/lib/esm/tile/map/BingElevation.d.ts +2 -16
  702. package/lib/esm/tile/map/BingElevation.d.ts.map +1 -1
  703. package/lib/esm/tile/map/BingElevation.js +1 -63
  704. package/lib/esm/tile/map/BingElevation.js.map +1 -1
  705. package/lib/esm/tile/map/CesiumTerrainProvider.js +2 -2
  706. package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
  707. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +5 -3
  708. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  709. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +46 -13
  710. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  711. package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts +2 -2
  712. package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts.map +1 -1
  713. package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
  714. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.d.ts +2 -2
  715. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
  716. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  717. package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts +2 -2
  718. package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts.map +1 -1
  719. package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js +4 -3
  720. package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
  721. package/lib/esm/tile/map/ImageryProviders/TileUrlImageryProvider.d.ts +2 -2
  722. package/lib/esm/tile/map/ImageryProviders/TileUrlImageryProvider.d.ts.map +1 -1
  723. package/lib/esm/tile/map/ImageryProviders/TileUrlImageryProvider.js.map +1 -1
  724. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts +2 -2
  725. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
  726. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +1 -1
  727. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  728. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts +2 -2
  729. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts.map +1 -1
  730. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  731. package/lib/esm/tile/map/ImageryTileTree.d.ts +2 -3
  732. package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
  733. package/lib/esm/tile/map/ImageryTileTree.js +4 -3
  734. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  735. package/lib/esm/tile/map/MapFeatureInfo.d.ts +26 -0
  736. package/lib/esm/tile/map/MapFeatureInfo.d.ts.map +1 -0
  737. package/lib/esm/tile/map/MapFeatureInfo.js +15 -0
  738. package/lib/esm/tile/map/MapFeatureInfo.js.map +1 -0
  739. package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts +4 -4
  740. package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
  741. package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
  742. package/lib/esm/tile/map/MapLayerImageryFormats.d.ts +3 -3
  743. package/lib/esm/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
  744. package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
  745. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +5 -4
  746. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  747. package/lib/esm/tile/map/MapLayerImageryProvider.js +5 -1
  748. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  749. package/lib/esm/tile/map/MapLayerSources.d.ts +2 -2
  750. package/lib/esm/tile/map/MapLayerSources.d.ts.map +1 -1
  751. package/lib/esm/tile/map/MapLayerSources.js +6 -4
  752. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  753. package/lib/esm/tile/map/MapLayerTileTreeReference.d.ts +10 -2
  754. package/lib/esm/tile/map/MapLayerTileTreeReference.d.ts.map +1 -1
  755. package/lib/esm/tile/map/MapLayerTileTreeReference.js +25 -3
  756. package/lib/esm/tile/map/MapLayerTileTreeReference.js.map +1 -1
  757. package/lib/esm/tile/map/MapTile.d.ts +12 -10
  758. package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
  759. package/lib/esm/tile/map/MapTile.js +60 -39
  760. package/lib/esm/tile/map/MapTile.js.map +1 -1
  761. package/lib/esm/tile/map/MapTileLoader.d.ts +2 -1
  762. package/lib/esm/tile/map/MapTileLoader.d.ts.map +1 -1
  763. package/lib/esm/tile/map/MapTileLoader.js +4 -1
  764. package/lib/esm/tile/map/MapTileLoader.js.map +1 -1
  765. package/lib/esm/tile/map/MapTileTree.d.ts +18 -8
  766. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  767. package/lib/esm/tile/map/MapTileTree.js +150 -63
  768. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  769. package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  770. package/lib/esm/tile/map/MapTiledGraphicsProvider.js +2 -2
  771. package/lib/esm/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  772. package/lib/esm/tools/ToolAdmin.d.ts +2 -3
  773. package/lib/esm/tools/ToolAdmin.d.ts.map +1 -1
  774. package/lib/esm/tools/ToolAdmin.js +8 -3
  775. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  776. package/lib/esm/tools/ViewTool.d.ts +4 -4
  777. package/lib/esm/tools/ViewTool.d.ts.map +1 -1
  778. package/lib/esm/tools/ViewTool.js +1 -1
  779. package/lib/esm/tools/ViewTool.js.map +1 -1
  780. package/package.json +22 -20
  781. package/lib/cjs/tile/DracoDecoder.d.ts +0 -20
  782. package/lib/cjs/tile/DracoDecoder.d.ts.map +0 -1
  783. package/lib/cjs/tile/DracoDecoder.js +0 -169
  784. package/lib/cjs/tile/DracoDecoder.js.map +0 -1
  785. package/lib/esm/tile/DracoDecoder.d.ts +0 -20
  786. package/lib/esm/tile/DracoDecoder.d.ts.map +0 -1
  787. package/lib/esm/tile/DracoDecoder.js +0 -165
  788. package/lib/esm/tile/DracoDecoder.js.map +0 -1
  789. package/lib/public/assets/approximateTerrainHeights.json +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ArcGISMapLayerImageryProvider.d.ts","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,WAAW,EAAgB,gBAAgB,EAAe,MAAM,oBAAoB,CAAC;AAI5G,OAAO,EACuF,cAAc,EAAE,kBAAkB,EAC9H,uBAAuB,EAAiC,MAAM,EAC/D,MAAM,gBAAgB,CAAC;AAKxB,gBAAgB;AAChB,qBAAa,6BAA8B,SAAQ,uBAAuB;IACxE,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,cAAc,CAAe;IACrC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,QAAQ,CAA0B;IACnC,WAAW,EAAE,GAAG,CAAC;gBACZ,QAAQ,EAAE,gBAAgB;IAItC,cAAuB,mBAAmB,YAAoB;IAE9D,IAAoB,gBAAgB,WAAsE;IAC1G,IAAoB,gBAAgB,WAAyF;IAEtH,YAAY,CAAC,SAAS,EAAE,GAAG;;;;YAKpB,SAAS;IAUD,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;cAqD7F,iBAAiB,CAAC,IAAI,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,IAAI;IAoBxG,OAAO,CAAC,oBAAoB;IAQN,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA6CjC,OAAO;IAID,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkDjI,SAAS,CAAC,cAAc,CAAC,MAAM,SAAS,GAAG,MAAM;IAMpC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAY5E,mBAAmB;CAgBlC"}
1
+ {"version":3,"file":"ArcGISMapLayerImageryProvider.d.ts","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,WAAW,EAA6B,MAAM,oBAAoB,CAAC;AAGjH,OAAO,EACuF,cAAc,EAAE,kBAAkB,EAE9H,mBAAmB,EACnB,uBAAuB,EAAyD,MAAM,EACvF,MAAM,gBAAgB,CAAC;AAGxB,gBAAgB;AAChB,qBAAa,6BAA8B,SAAQ,uBAAuB;IACxE,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,cAAc,CAAe;IACrC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,QAAQ,CAA0B;IACnC,WAAW,EAAE,GAAG,CAAC;gBACZ,QAAQ,EAAE,qBAAqB;IAI3C,cAAuB,mBAAmB,YAAoB;IAE9D,IAAoB,gBAAgB,WAAsE;IAC1G,IAAoB,gBAAgB,WAAyF;IAEtH,YAAY,CAAC,SAAS,EAAE,GAAG;;;;YAKpB,SAAS;IAUD,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;cAqD7F,iBAAiB,CAAC,IAAI,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,IAAI;IAoBxG,OAAO,CAAC,oBAAoB;IAQN,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA6CjC,OAAO;YAMT,eAAe;IAkCP,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB1G,cAAc,CAAC,YAAY,EAAE,mBAAmB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAsCzJ,SAAS,CAAC,cAAc,CAAC,MAAM,SAAS,GAAG,MAAM;IAMpC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAY5E,mBAAmB;CAgBlC"}
@@ -8,13 +8,12 @@
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.ArcGISMapLayerImageryProvider = void 0;
11
- const core_common_1 = require("@itwin/core-common");
12
11
  const Request_1 = require("../../../request/Request");
12
+ const core_common_1 = require("@itwin/core-common");
13
13
  const IModelApp_1 = require("../../../IModelApp");
14
14
  const NotificationManager_1 = require("../../../NotificationManager");
15
15
  const internal_1 = require("../../internal");
16
- // eslint-disable-next-line prefer-const
17
- let doToolTips = true;
16
+ const appui_abstract_1 = require("@itwin/appui-abstract");
18
17
  /** @internal */
19
18
  class ArcGISMapLayerImageryProvider extends internal_1.MapLayerImageryProvider {
20
19
  constructor(settings) {
@@ -153,18 +152,14 @@ class ArcGISMapLayerImageryProvider extends internal_1.MapLayerImageryProvider {
153
152
  getLogo() {
154
153
  return IModelApp_1.IModelApp.makeLogoCard({ heading: "ArcGIS", notice: this._copyrightText });
155
154
  }
156
- async getToolTip(strings, quadId, carto, tree) {
155
+ // Translates the provided Cartographic into a EPSG:3857 point, and retrieve information.
156
+ // tolerance is in pixels
157
+ async getIdentifyData(quadId, carto, tolerance) {
157
158
  var _a, _b, _c, _d;
158
- await super.getToolTip(strings, quadId, carto, tree);
159
- if (!doToolTips)
160
- return;
161
- if (!this._querySupported)
162
- return;
163
- const stringSet = new Set();
164
159
  const bboxString = this.getEPSG3857ExtentString(quadId.row, quadId.column, quadId.level);
165
160
  const x = this.getEPSG3857X(carto.longitudeDegrees);
166
161
  const y = this.getEPSG3857Y(carto.latitudeDegrees);
167
- const tmpUrl = `${this._settings.url}/identify?f=json&tolerance=1&returnGeometry=false&sr=3857&imageDisplay=${this.tileSize},${this.tileSize},96&layers=${this.getLayerString("visible")}&geometry=${x},${y}&geometryType=esriGeometryPoint&mapExtent=${bboxString}`;
162
+ const tmpUrl = `${this._settings.url}/identify?f=json&tolerance=${tolerance}&returnGeometry=false&sr=3857&imageDisplay=${this.tileSize},${this.tileSize},96&layers=${this.getLayerString("visible")}&geometry=${x},${y}&geometryType=esriGeometryPoint&mapExtent=${bboxString}`;
168
163
  const url = await this.appendSecurityToken(tmpUrl);
169
164
  let json = await (0, Request_1.getJson)(url);
170
165
  if (((_a = json === null || json === void 0 ? void 0 : json.error) === null || _a === void 0 ? void 0 : _a.code) === internal_1.ArcGisErrorCode.TokenRequired || ((_b = json === null || json === void 0 ? void 0 : json.error) === null || _b === void 0 ? void 0 : _b.code) === internal_1.ArcGisErrorCode.InvalidToken) {
@@ -183,9 +178,18 @@ class ArcGISMapLayerImageryProvider extends internal_1.MapLayerImageryProvider {
183
178
  const msg = IModelApp_1.IModelApp.localization.getLocalizedString("iModelJs:MapLayers.Messages.FetchTooltipTokenError", { layerName: this._settings.name });
184
179
  IModelApp_1.IModelApp.notifications.outputMessage(new NotificationManager_1.NotifyMessageDetails(NotificationManager_1.OutputMessagePriority.Warning, msg));
185
180
  }
186
- return;
181
+ return undefined;
187
182
  }
188
183
  }
184
+ return json;
185
+ }
186
+ // Makes an identify request to ESRI MapService server, and return it as a list of formatted strings
187
+ async getToolTip(strings, quadId, carto, tree) {
188
+ await super.getToolTip(strings, quadId, carto, tree);
189
+ if (!this._querySupported)
190
+ return;
191
+ const stringSet = new Set();
192
+ const json = await this.getIdentifyData(quadId, carto, 1);
189
193
  if (json && Array.isArray(json.results)) {
190
194
  for (const result of json.results) {
191
195
  if (result.attributes !== undefined && result.attributes[result.displayFieldName] !== undefined) {
@@ -198,6 +202,35 @@ class ArcGISMapLayerImageryProvider extends internal_1.MapLayerImageryProvider {
198
202
  }
199
203
  }
200
204
  }
205
+ // Makes an identify request to ESRI MapService , and return it as a list MapLayerFeatureInfo object
206
+ async getFeatureInfo(featureInfos, quadId, carto, _tree) {
207
+ var _a, _b;
208
+ if (!this._querySupported)
209
+ return;
210
+ const json = await this.getIdentifyData(quadId, carto, 5);
211
+ if (json && Array.isArray(json.results)) {
212
+ const layerInfo = { layerName: this._settings.name };
213
+ for (const result of json.results) {
214
+ const subLayerInfo = {
215
+ subLayerName: (_a = result.layerName) !== null && _a !== void 0 ? _a : "",
216
+ displayFieldName: result.displayFieldName,
217
+ records: [],
218
+ };
219
+ for (const [key, value] of Object.entries(result.attributes)) {
220
+ // Convert everything to string for now
221
+ const strValue = String(value);
222
+ (_b = subLayerInfo.records) === null || _b === void 0 ? void 0 : _b.push(new internal_1.MapFeatureInfoRecord({ valueFormat: appui_abstract_1.PropertyValueFormat.Primitive, value: strValue, displayValue: strValue }, { name: key, displayLabel: key, typename: appui_abstract_1.StandardTypeNames.String }));
223
+ }
224
+ if (layerInfo.info === undefined) {
225
+ layerInfo.info = [];
226
+ }
227
+ if (!(layerInfo.info instanceof HTMLElement)) {
228
+ layerInfo.info.push(subLayerInfo);
229
+ }
230
+ }
231
+ featureInfos.push(layerInfo);
232
+ }
233
+ }
201
234
  getLayerString(prefix = "show") {
202
235
  const layers = new Array();
203
236
  this._settings.subLayers.forEach((subLayer) => { if (this._settings.isSubLayerVisible(subLayer))
@@ -1 +1 @@
1
- {"version":3,"file":"ArcGISMapLayerImageryProvider.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.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 Tiles\r\n */\r\n\r\nimport { Cartographic, ImageSource, IModelStatus, MapLayerSettings, ServerError } from \"@itwin/core-common\";\r\nimport { getJson, request, RequestOptions, Response } from \"../../../request/Request\";\r\nimport { IModelApp } from \"../../../IModelApp\";\r\nimport { NotifyMessageDetails, OutputMessagePriority } from \"../../../NotificationManager\";\r\nimport {\r\n ArcGisErrorCode, ArcGISTileMap, ArcGisTokenClientType, ArcGisTokenManager, ArcGisUtilities, ImageryMapTile, ImageryMapTileTree, MapCartoRectangle,\r\n MapLayerImageryProvider, MapLayerImageryProviderStatus, QuadId,\r\n} from \"../../internal\";\r\n\r\n// eslint-disable-next-line prefer-const\r\nlet doToolTips = true;\r\n\r\n/** @internal */\r\nexport class ArcGISMapLayerImageryProvider extends MapLayerImageryProvider {\r\n private _maxDepthFromLod = 0;\r\n private _minDepthFromLod = 0;\r\n private _copyrightText = \"Copyright\";\r\n private _querySupported = false;\r\n private _tileMapSupported = false;\r\n private _tileMap: ArcGISTileMap|undefined;\r\n public serviceJson: any;\r\n constructor(settings: MapLayerSettings) {\r\n super(settings, false);\r\n }\r\n\r\n protected override get _filterByCartoRange() { return false; } // Can't trust footprint ranges (USGS Hydro)\r\n\r\n public override get minimumZoomLevel() { return Math.max(super.minimumZoomLevel, this._minDepthFromLod); }\r\n public override get maximumZoomLevel() { return this._maxDepthFromLod > 0 ? this._maxDepthFromLod : super.maximumZoomLevel; }\r\n\r\n public uintToString(uintArray: any) {\r\n return Buffer.from(uintArray).toJSON();\r\n\r\n }\r\n\r\n private async fetchTile(row: number, column: number, zoomLevel: number): Promise<Response | undefined> {\r\n const tileRequestOptions: RequestOptions = { method: \"GET\", responseType: \"arraybuffer\" };\r\n tileRequestOptions.auth = this.getRequestAuthorization();\r\n const tileUrl: string = await this.constructUrl(row, column, zoomLevel);\r\n if (tileUrl.length === 0)\r\n return undefined;\r\n\r\n return request(tileUrl, tileRequestOptions);\r\n }\r\n\r\n public override async loadTile(row: number, column: number, zoomLevel: number): Promise<ImageSource | undefined> {\r\n\r\n if ((this.status === MapLayerImageryProviderStatus.RequireAuth)) {\r\n return undefined;\r\n }\r\n\r\n try {\r\n let tileResponse = await this.fetchTile(row, column, zoomLevel);\r\n if (tileResponse === undefined)\r\n return undefined;\r\n\r\n // Check the content type from the response, it might contain an authentication error that need to be reported.\r\n // Skip if the layer state was already invalid\r\n if (ArcGisUtilities.hasTokenError(tileResponse)) {\r\n\r\n // Token might have expired, make a second attempt by forcing new token.\r\n if (this._settings.userName && this._settings.userName.length > 0) {\r\n ArcGisTokenManager.invalidateToken(this._settings.url, this._settings.userName);\r\n tileResponse = await this.fetchTile(row, column, zoomLevel);\r\n if (tileResponse === undefined)\r\n return undefined;\r\n }\r\n\r\n // OK at this point, if response still contain a token error, we assume end-user will\r\n // have to provide credentials again. Change the layer status so we\r\n // don't make additional invalid requests..\r\n if (tileResponse && ArcGisUtilities.hasTokenError(tileResponse)) {\r\n // Check again layer status, it might have change during await.\r\n if (this.status === MapLayerImageryProviderStatus.Valid) {\r\n this.status = MapLayerImageryProviderStatus.RequireAuth;\r\n this.onStatusChanged.raiseEvent(this);\r\n\r\n // Only report error to end-user if we were previously able to fetch tiles\r\n // and then encountered an error, otherwise I assume an error was already reported\r\n // through the source validation process.\r\n if (this._hasSuccessfullyFetchedTile) {\r\n const msg = IModelApp.localization.getLocalizedString(\"iModelJs:MapLayers.Messages.LoadTileTokenError\", { layerName: this._settings.name });\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Warning, msg));\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n }\r\n\r\n if (!this._hasSuccessfullyFetchedTile) {\r\n this._hasSuccessfullyFetchedTile = true;\r\n }\r\n return this.getImageFromTileResponse(tileResponse, zoomLevel);\r\n } catch (error) {\r\n return undefined;\r\n }\r\n }\r\n protected override _generateChildIds(tile: ImageryMapTile, resolveChildren: (childIds: QuadId[]) => void) {\r\n const childIds = this.getPotentialChildIds(tile);\r\n if (!this._tileMap || tile.quadId.level < Math.max(4, this.minimumZoomLevel-1)) {\r\n resolveChildren(childIds);\r\n return;\r\n }\r\n\r\n if (this._tileMap) {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this._tileMap.getChildrenAvailability(childIds).then((availability) => {\r\n const availableChildIds = new Array<QuadId>();\r\n for (let i = 0; i < availability.length; i++)\r\n if (availability[i])\r\n availableChildIds.push(childIds[i]);\r\n\r\n resolveChildren (availableChildIds);\r\n });\r\n }\r\n }\r\n\r\n private isEpsg3857Compatible(tileInfo: any) {\r\n if (tileInfo.spatialReference?.latestWkid !== 3857 || !Array.isArray(tileInfo.lods))\r\n return false;\r\n\r\n const zeroLod = tileInfo.lods[0];\r\n return zeroLod.level === 0 && Math.abs(zeroLod.resolution - 156543.03392800014) < .001;\r\n }\r\n\r\n public override async initialize(): Promise<void> {\r\n const json = await ArcGisUtilities.getServiceJson(this._settings.url, this.getRequestAuthorization());\r\n if (json === undefined)\r\n throw new ServerError(IModelStatus.ValidationFailed, \"\");\r\n\r\n if (json !== undefined) {\r\n this.serviceJson = json;\r\n if (json.capabilities) {\r\n\r\n this._querySupported = json.capabilities.indexOf(\"Query\") >= 0;\r\n this._tileMapSupported = json.capabilities.indexOf(\"Tilemap\") >= 0;\r\n }\r\n if (json.copyrightText) this._copyrightText = json.copyrightText;\r\n if (false !== (this._usesCachedTiles = json.tileInfo !== undefined && this.isEpsg3857Compatible(json.tileInfo))) {\r\n if (json.maxScale !== undefined && json.maxScale !== 0 && Array.isArray(json.tileInfo.lods)) {\r\n for (; this._maxDepthFromLod < json.tileInfo.lods.length && json.tileInfo.lods[this._maxDepthFromLod].scale > json.maxScale; this._maxDepthFromLod++)\r\n ;\r\n }\r\n }\r\n\r\n // Create tile map object only if we are going to request tiles from this server and it support tilemap requests.\r\n if (this._usesCachedTiles && this._tileMapSupported) {\r\n this._tileMap = new ArcGISTileMap(this._settings.url, json.tileInfo?.lods?.length);\r\n }\r\n\r\n const footprintJson = await ArcGisUtilities.getFootprintJson(this._settings.url, this.getRequestAuthorization());\r\n if (undefined !== footprintJson && undefined !== footprintJson.featureCollection && Array.isArray(footprintJson.featureCollection.layers)) {\r\n for (const layer of footprintJson.featureCollection.layers) {\r\n if (layer.layerDefinition && layer.layerDefinition.extent) {\r\n this.cartoRange = MapCartoRectangle.createFromDegrees(layer.layerDefinition.extent.xmin, layer.layerDefinition.extent.ymin, layer.layerDefinition.extent.xmax, layer.layerDefinition.extent.ymax);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // Read minLOD if available\r\n if (json.minLOD !== undefined) {\r\n const minLod = parseInt(json.minLOD, 10);\r\n if (!Number.isNaN(minLod)) {\r\n this._minDepthFromLod = minLod;\r\n }\r\n }\r\n }\r\n }\r\n\r\n public override getLogo() {\r\n return IModelApp.makeLogoCard({ heading: \"ArcGIS\", notice: this._copyrightText });\r\n }\r\n\r\n public override async getToolTip(strings: string[], quadId: QuadId, carto: Cartographic, tree: ImageryMapTileTree): Promise<void> {\r\n await super.getToolTip(strings, quadId, carto, tree);\r\n if (!doToolTips)\r\n return;\r\n\r\n if (!this._querySupported)\r\n return;\r\n\r\n const stringSet = new Set<string>();\r\n const bboxString = this.getEPSG3857ExtentString(quadId.row, quadId.column, quadId.level);\r\n const x = this.getEPSG3857X(carto.longitudeDegrees);\r\n const y = this.getEPSG3857Y(carto.latitudeDegrees);\r\n const tmpUrl = `${this._settings.url}/identify?f=json&tolerance=1&returnGeometry=false&sr=3857&imageDisplay=${this.tileSize},${this.tileSize},96&layers=${this.getLayerString(\"visible\")}&geometry=${x},${y}&geometryType=esriGeometryPoint&mapExtent=${bboxString}`;\r\n const url = await this.appendSecurityToken(tmpUrl);\r\n\r\n let json = await getJson(url);\r\n if (json?.error?.code === ArcGisErrorCode.TokenRequired || json?.error?.code === ArcGisErrorCode.InvalidToken) {\r\n // Token might have expired, make a second attempt by forcing new token.\r\n if (this._settings.userName && this._settings.userName.length > 0) {\r\n ArcGisTokenManager.invalidateToken(this._settings.url, this._settings.userName);\r\n json = await getJson(url);\r\n }\r\n\r\n // OK at this point, if response still contain a token error, we assume end-user will\r\n // have to provide credentials again. Change the layer status so we\r\n // don't make additional invalid requests..\r\n if (json?.error?.code === ArcGisErrorCode.TokenRequired || json?.error?.code === ArcGisErrorCode.InvalidToken) {\r\n // Check again layer status, it might have change during await.\r\n if (this.status === MapLayerImageryProviderStatus.Valid) {\r\n this.status = MapLayerImageryProviderStatus.RequireAuth;\r\n const msg = IModelApp.localization.getLocalizedString(\"iModelJs:MapLayers.Messages.FetchTooltipTokenError\", { layerName: this._settings.name });\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Warning, msg));\r\n }\r\n\r\n return;\r\n }\r\n }\r\n\r\n if (json && Array.isArray(json.results)) {\r\n for (const result of json.results) {\r\n if (result.attributes !== undefined && result.attributes[result.displayFieldName] !== undefined) {\r\n const thisString = `${result.displayFieldName}: ${result.attributes[result.displayFieldName]}`;\r\n if (!stringSet.has(thisString)) {\r\n strings.push(thisString);\r\n stringSet.add(thisString);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n protected getLayerString(prefix = \"show\"): string {\r\n const layers = new Array<string>();\r\n this._settings.subLayers.forEach((subLayer) => { if (this._settings.isSubLayerVisible(subLayer)) layers.push(subLayer.idString); });\r\n return `${prefix}: ${layers.join(\",\")} `;\r\n }\r\n // construct the Url from the desired Tile\r\n public async constructUrl(row: number, column: number, zoomLevel: number): Promise<string> {\r\n let tmpUrl;\r\n if (this._usesCachedTiles) {\r\n tmpUrl = `${this._settings.url}/tile/${zoomLevel}/${row}/${column} `;\r\n } else {\r\n const bboxString = `${this.getEPSG3857ExtentString(row, column, zoomLevel)}&bboxSR=3857`;\r\n tmpUrl = `${this._settings.url}/export?bbox=${bboxString}&size=${this.tileSize},${this.tileSize}&layers=${this.getLayerString()}&format=png&transparent=${this.transparentBackgroundString}&f=image&sr=3857&imagesr=3857`;\r\n }\r\n return this.appendSecurityToken(tmpUrl);\r\n }\r\n\r\n // construct the Url from the desired Tile\r\n private async appendSecurityToken(url: string): Promise<string> {\r\n // Append security token if required\r\n let tokenParam = \"\";\r\n if (this._settings.userName && this._settings.password) {\r\n try {\r\n const token = await ArcGisTokenManager.getToken(this._settings.url, this._settings.userName, this._settings.password,\r\n {\r\n client: ArcGisTokenClientType.referer,\r\n });\r\n if (token?.token)\r\n tokenParam = `&token=${token.token}`;\r\n } catch {\r\n }\r\n }\r\n return `${url}${tokenParam}`;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ArcGISMapLayerImageryProvider.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.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 Tiles\r\n */\r\n\r\nimport { getJson, request, RequestOptions, Response } from \"../../../request/Request\";\r\nimport { Cartographic, ImageMapLayerSettings, ImageSource, IModelStatus, ServerError } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../../../IModelApp\";\r\nimport { NotifyMessageDetails, OutputMessagePriority } from \"../../../NotificationManager\";\r\nimport {\r\n ArcGisErrorCode, ArcGISTileMap, ArcGisTokenClientType, ArcGisTokenManager, ArcGisUtilities, ImageryMapTile, ImageryMapTileTree, MapCartoRectangle,\r\n MapFeatureInfoRecord,\r\n MapLayerFeatureInfo,\r\n MapLayerImageryProvider, MapLayerImageryProviderStatus, MapSubLayerFeatureInfo, QuadId,\r\n} from \"../../internal\";\r\nimport { PropertyValueFormat, StandardTypeNames } from \"@itwin/appui-abstract\";\r\n\r\n/** @internal */\r\nexport class ArcGISMapLayerImageryProvider extends MapLayerImageryProvider {\r\n private _maxDepthFromLod = 0;\r\n private _minDepthFromLod = 0;\r\n private _copyrightText = \"Copyright\";\r\n private _querySupported = false;\r\n private _tileMapSupported = false;\r\n private _tileMap: ArcGISTileMap|undefined;\r\n public serviceJson: any;\r\n constructor(settings: ImageMapLayerSettings) {\r\n super(settings, false);\r\n }\r\n\r\n protected override get _filterByCartoRange() { return false; } // Can't trust footprint ranges (USGS Hydro)\r\n\r\n public override get minimumZoomLevel() { return Math.max(super.minimumZoomLevel, this._minDepthFromLod); }\r\n public override get maximumZoomLevel() { return this._maxDepthFromLod > 0 ? this._maxDepthFromLod : super.maximumZoomLevel; }\r\n\r\n public uintToString(uintArray: any) {\r\n return Buffer.from(uintArray).toJSON();\r\n\r\n }\r\n\r\n private async fetchTile(row: number, column: number, zoomLevel: number): Promise<Response | undefined> {\r\n const tileRequestOptions: RequestOptions = { method: \"GET\", responseType: \"arraybuffer\" };\r\n tileRequestOptions.auth = this.getRequestAuthorization();\r\n const tileUrl: string = await this.constructUrl(row, column, zoomLevel);\r\n if (tileUrl.length === 0)\r\n return undefined;\r\n\r\n return request(tileUrl, tileRequestOptions);\r\n }\r\n\r\n public override async loadTile(row: number, column: number, zoomLevel: number): Promise<ImageSource | undefined> {\r\n\r\n if ((this.status === MapLayerImageryProviderStatus.RequireAuth)) {\r\n return undefined;\r\n }\r\n\r\n try {\r\n let tileResponse = await this.fetchTile(row, column, zoomLevel);\r\n if (tileResponse === undefined)\r\n return undefined;\r\n\r\n // Check the content type from the response, it might contain an authentication error that need to be reported.\r\n // Skip if the layer state was already invalid\r\n if (ArcGisUtilities.hasTokenError(tileResponse)) {\r\n\r\n // Token might have expired, make a second attempt by forcing new token.\r\n if (this._settings.userName && this._settings.userName.length > 0) {\r\n ArcGisTokenManager.invalidateToken(this._settings.url, this._settings.userName);\r\n tileResponse = await this.fetchTile(row, column, zoomLevel);\r\n if (tileResponse === undefined)\r\n return undefined;\r\n }\r\n\r\n // OK at this point, if response still contain a token error, we assume end-user will\r\n // have to provide credentials again. Change the layer status so we\r\n // don't make additional invalid requests..\r\n if (tileResponse && ArcGisUtilities.hasTokenError(tileResponse)) {\r\n // Check again layer status, it might have change during await.\r\n if (this.status === MapLayerImageryProviderStatus.Valid) {\r\n this.status = MapLayerImageryProviderStatus.RequireAuth;\r\n this.onStatusChanged.raiseEvent(this);\r\n\r\n // Only report error to end-user if we were previously able to fetch tiles\r\n // and then encountered an error, otherwise I assume an error was already reported\r\n // through the source validation process.\r\n if (this._hasSuccessfullyFetchedTile) {\r\n const msg = IModelApp.localization.getLocalizedString(\"iModelJs:MapLayers.Messages.LoadTileTokenError\", { layerName: this._settings.name });\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Warning, msg));\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n }\r\n\r\n if (!this._hasSuccessfullyFetchedTile) {\r\n this._hasSuccessfullyFetchedTile = true;\r\n }\r\n return this.getImageFromTileResponse(tileResponse, zoomLevel);\r\n } catch (error) {\r\n return undefined;\r\n }\r\n }\r\n protected override _generateChildIds(tile: ImageryMapTile, resolveChildren: (childIds: QuadId[]) => void) {\r\n const childIds = this.getPotentialChildIds(tile);\r\n if (!this._tileMap || tile.quadId.level < Math.max(4, this.minimumZoomLevel-1)) {\r\n resolveChildren(childIds);\r\n return;\r\n }\r\n\r\n if (this._tileMap) {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this._tileMap.getChildrenAvailability(childIds).then((availability) => {\r\n const availableChildIds = new Array<QuadId>();\r\n for (let i = 0; i < availability.length; i++)\r\n if (availability[i])\r\n availableChildIds.push(childIds[i]);\r\n\r\n resolveChildren (availableChildIds);\r\n });\r\n }\r\n }\r\n\r\n private isEpsg3857Compatible(tileInfo: any) {\r\n if (tileInfo.spatialReference?.latestWkid !== 3857 || !Array.isArray(tileInfo.lods))\r\n return false;\r\n\r\n const zeroLod = tileInfo.lods[0];\r\n return zeroLod.level === 0 && Math.abs(zeroLod.resolution - 156543.03392800014) < .001;\r\n }\r\n\r\n public override async initialize(): Promise<void> {\r\n const json = await ArcGisUtilities.getServiceJson(this._settings.url, this.getRequestAuthorization());\r\n if (json === undefined)\r\n throw new ServerError(IModelStatus.ValidationFailed, \"\");\r\n\r\n if (json !== undefined) {\r\n this.serviceJson = json;\r\n if (json.capabilities) {\r\n\r\n this._querySupported = json.capabilities.indexOf(\"Query\") >= 0;\r\n this._tileMapSupported = json.capabilities.indexOf(\"Tilemap\") >= 0;\r\n }\r\n if (json.copyrightText) this._copyrightText = json.copyrightText;\r\n if (false !== (this._usesCachedTiles = json.tileInfo !== undefined && this.isEpsg3857Compatible(json.tileInfo))) {\r\n if (json.maxScale !== undefined && json.maxScale !== 0 && Array.isArray(json.tileInfo.lods)) {\r\n for (; this._maxDepthFromLod < json.tileInfo.lods.length && json.tileInfo.lods[this._maxDepthFromLod].scale > json.maxScale; this._maxDepthFromLod++)\r\n ;\r\n }\r\n }\r\n\r\n // Create tile map object only if we are going to request tiles from this server and it support tilemap requests.\r\n if (this._usesCachedTiles && this._tileMapSupported) {\r\n this._tileMap = new ArcGISTileMap(this._settings.url, json.tileInfo?.lods?.length);\r\n }\r\n\r\n const footprintJson = await ArcGisUtilities.getFootprintJson(this._settings.url, this.getRequestAuthorization());\r\n if (undefined !== footprintJson && undefined !== footprintJson.featureCollection && Array.isArray(footprintJson.featureCollection.layers)) {\r\n for (const layer of footprintJson.featureCollection.layers) {\r\n if (layer.layerDefinition && layer.layerDefinition.extent) {\r\n this.cartoRange = MapCartoRectangle.createFromDegrees(layer.layerDefinition.extent.xmin, layer.layerDefinition.extent.ymin, layer.layerDefinition.extent.xmax, layer.layerDefinition.extent.ymax);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // Read minLOD if available\r\n if (json.minLOD !== undefined) {\r\n const minLod = parseInt(json.minLOD, 10);\r\n if (!Number.isNaN(minLod)) {\r\n this._minDepthFromLod = minLod;\r\n }\r\n }\r\n }\r\n }\r\n\r\n public override getLogo() {\r\n return IModelApp.makeLogoCard({ heading: \"ArcGIS\", notice: this._copyrightText });\r\n }\r\n\r\n // Translates the provided Cartographic into a EPSG:3857 point, and retrieve information.\r\n // tolerance is in pixels\r\n private async getIdentifyData(quadId: QuadId, carto: Cartographic, tolerance: number): Promise<any> {\r\n const bboxString = this.getEPSG3857ExtentString(quadId.row, quadId.column, quadId.level);\r\n const x = this.getEPSG3857X(carto.longitudeDegrees);\r\n const y = this.getEPSG3857Y(carto.latitudeDegrees);\r\n const tmpUrl = `${this._settings.url}/identify?f=json&tolerance=${tolerance}&returnGeometry=false&sr=3857&imageDisplay=${this.tileSize},${this.tileSize},96&layers=${this.getLayerString(\"visible\")}&geometry=${x},${y}&geometryType=esriGeometryPoint&mapExtent=${bboxString}`;\r\n const url = await this.appendSecurityToken(tmpUrl);\r\n\r\n let json = await getJson(url);\r\n if (json?.error?.code === ArcGisErrorCode.TokenRequired || json?.error?.code === ArcGisErrorCode.InvalidToken) {\r\n // Token might have expired, make a second attempt by forcing new token.\r\n if (this._settings.userName && this._settings.userName.length > 0) {\r\n ArcGisTokenManager.invalidateToken(this._settings.url, this._settings.userName);\r\n json = await getJson(url);\r\n }\r\n\r\n // OK at this point, if response still contain a token error, we assume end-user will\r\n // have to provide credentials again. Change the layer status so we\r\n // don't make additional invalid requests..\r\n if (json?.error?.code === ArcGisErrorCode.TokenRequired || json?.error?.code === ArcGisErrorCode.InvalidToken) {\r\n // Check again layer status, it might have change during await.\r\n if (this.status === MapLayerImageryProviderStatus.Valid) {\r\n this.status = MapLayerImageryProviderStatus.RequireAuth;\r\n const msg = IModelApp.localization.getLocalizedString(\"iModelJs:MapLayers.Messages.FetchTooltipTokenError\", { layerName: this._settings.name });\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Warning, msg));\r\n }\r\n\r\n return undefined;\r\n }\r\n }\r\n\r\n return json;\r\n }\r\n\r\n // Makes an identify request to ESRI MapService server, and return it as a list of formatted strings\r\n public override async getToolTip(strings: string[], quadId: QuadId, carto: Cartographic, tree: ImageryMapTileTree): Promise<void> {\r\n await super.getToolTip(strings, quadId, carto, tree);\r\n\r\n if (!this._querySupported)\r\n return;\r\n\r\n const stringSet = new Set<string>();\r\n const json = await this.getIdentifyData(quadId, carto, 1);\r\n\r\n if (json && Array.isArray(json.results)) {\r\n for (const result of json.results) {\r\n if (result.attributes !== undefined && result.attributes[result.displayFieldName] !== undefined) {\r\n const thisString = `${result.displayFieldName}: ${result.attributes[result.displayFieldName]}`;\r\n if (!stringSet.has(thisString)) {\r\n strings.push(thisString);\r\n stringSet.add(thisString);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Makes an identify request to ESRI MapService , and return it as a list MapLayerFeatureInfo object\r\n public override async getFeatureInfo(featureInfos: MapLayerFeatureInfo[], quadId: QuadId, carto: Cartographic, _tree: ImageryMapTileTree): Promise<void> {\r\n if (!this._querySupported)\r\n return;\r\n\r\n const json = await this.getIdentifyData(quadId, carto,5 );\r\n if (json && Array.isArray(json.results)) {\r\n const layerInfo: MapLayerFeatureInfo = {layerName: this._settings.name};\r\n\r\n for (const result of json.results) {\r\n\r\n const subLayerInfo: MapSubLayerFeatureInfo = {\r\n subLayerName: result.layerName ?? \"\",\r\n displayFieldName: result.displayFieldName,\r\n records : [],\r\n };\r\n for (const [key, value] of Object.entries(result.attributes)) {\r\n // Convert everything to string for now\r\n const strValue = String(value);\r\n subLayerInfo.records?.push(new MapFeatureInfoRecord (\r\n {valueFormat:PropertyValueFormat.Primitive, value:strValue, displayValue: strValue},\r\n {name: key, displayLabel: key, typename:StandardTypeNames.String}\r\n ));\r\n }\r\n\r\n if (layerInfo.info === undefined) {\r\n layerInfo.info = [];\r\n }\r\n\r\n if (!(layerInfo.info instanceof HTMLElement)) {\r\n layerInfo.info.push(subLayerInfo);\r\n }\r\n\r\n }\r\n\r\n featureInfos.push(layerInfo);\r\n }\r\n }\r\n\r\n protected getLayerString(prefix = \"show\"): string {\r\n const layers = new Array<string>();\r\n this._settings.subLayers.forEach((subLayer) => { if (this._settings.isSubLayerVisible(subLayer)) layers.push(subLayer.idString); });\r\n return `${prefix}: ${layers.join(\",\")} `;\r\n }\r\n // construct the Url from the desired Tile\r\n public async constructUrl(row: number, column: number, zoomLevel: number): Promise<string> {\r\n let tmpUrl;\r\n if (this._usesCachedTiles) {\r\n tmpUrl = `${this._settings.url}/tile/${zoomLevel}/${row}/${column} `;\r\n } else {\r\n const bboxString = `${this.getEPSG3857ExtentString(row, column, zoomLevel)}&bboxSR=3857`;\r\n tmpUrl = `${this._settings.url}/export?bbox=${bboxString}&size=${this.tileSize},${this.tileSize}&layers=${this.getLayerString()}&format=png&transparent=${this.transparentBackgroundString}&f=image&sr=3857&imagesr=3857`;\r\n }\r\n return this.appendSecurityToken(tmpUrl);\r\n }\r\n\r\n // construct the Url from the desired Tile\r\n private async appendSecurityToken(url: string): Promise<string> {\r\n // Append security token if required\r\n let tokenParam = \"\";\r\n if (this._settings.userName && this._settings.password) {\r\n try {\r\n const token = await ArcGisTokenManager.getToken(this._settings.url, this._settings.userName, this._settings.password,\r\n {\r\n client: ArcGisTokenClientType.referer,\r\n });\r\n if (token?.token)\r\n tokenParam = `&token=${token.token}`;\r\n } catch {\r\n }\r\n }\r\n return `${url}${tokenParam}`;\r\n }\r\n}\r\n"]}
@@ -1,11 +1,11 @@
1
1
  /** @packageDocumentation
2
2
  * @module Tiles
3
3
  */
4
- import { MapLayerSettings } from "@itwin/core-common";
4
+ import { ImageMapLayerSettings } from "@itwin/core-common";
5
5
  import { MapLayerImageryProvider } from "../../internal";
6
6
  /** @internal */
7
7
  export declare class AzureMapsLayerImageryProvider extends MapLayerImageryProvider {
8
- constructor(settings: MapLayerSettings);
8
+ constructor(settings: ImageMapLayerSettings);
9
9
  constructUrl(y: number, x: number, zoom: number): Promise<string>;
10
10
  getLogo(): HTMLTableRowElement;
11
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AzureMapsLayerImageryProvider.d.ts","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,gBAAgB;AAChB,qBAAa,6BAA8B,SAAQ,uBAAuB;gBAC5D,QAAQ,EAAE,gBAAgB;IAGzB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAM9D,OAAO;CAGxB"}
1
+ {"version":3,"file":"AzureMapsLayerImageryProvider.d.ts","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,gBAAgB;AAChB,qBAAa,6BAA8B,SAAQ,uBAAuB;gBAC5D,QAAQ,EAAE,qBAAqB;IAG9B,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAM9D,OAAO;CAGxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"AzureMapsLayerImageryProvider.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAGH,kDAA+C;AAC/C,6CAAyD;AAEzD,gBAAgB;AAChB,MAAa,6BAA8B,SAAQ,kCAAuB;IACxE,YAAY,QAA0B,IAAI,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAElE,0CAA0C;IACnC,KAAK,CAAC,YAAY,CAAC,CAAS,EAAE,CAAS,EAAE,IAAY;QAC1D,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS;YAC3B,OAAO,EAAE,CAAC;QACZ,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,yBAAyB,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;IAC9I,CAAC;IAEe,OAAO;QACrB,OAAO,qBAAS,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,qBAAS,CAAC,YAAY,CAAC,kBAAkB,CAAC,2CAA2C,CAAC,EAAE,CAAC,CAAC;IAC3J,CAAC;CACF;AAbD,sEAaC","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 Tiles\r\n */\r\n\r\nimport { MapLayerSettings } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../../../IModelApp\";\r\nimport { MapLayerImageryProvider } from \"../../internal\";\r\n\r\n/** @internal */\r\nexport class AzureMapsLayerImageryProvider extends MapLayerImageryProvider {\r\n constructor(settings: MapLayerSettings) { super(settings, true); }\r\n\r\n // construct the Url from the desired Tile\r\n public async constructUrl(y: number, x: number, zoom: number): Promise<string> {\r\n if (!this._settings.accessKey)\r\n return \"\";\r\n return `${this._settings.url}&${this._settings.accessKey.key}=${this._settings.accessKey.value}&api-version=2.0&zoom=${zoom}&x=${x}&y=${y}`;\r\n }\r\n\r\n public override getLogo() {\r\n return IModelApp.makeLogoCard({ heading: \"Azure Maps\", notice: IModelApp.localization.getLocalizedString(\"iModelJs:BackgroundMap.AzureMapsCopyright\") });\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"AzureMapsLayerImageryProvider.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAGH,kDAA+C;AAC/C,6CAAyD;AAEzD,gBAAgB;AAChB,MAAa,6BAA8B,SAAQ,kCAAuB;IACxE,YAAY,QAA+B,IAAI,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAEvE,0CAA0C;IACnC,KAAK,CAAC,YAAY,CAAC,CAAS,EAAE,CAAS,EAAE,IAAY;QAC1D,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS;YAC3B,OAAO,EAAE,CAAC;QACZ,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,yBAAyB,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;IAC9I,CAAC;IAEe,OAAO;QACrB,OAAO,qBAAS,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,qBAAS,CAAC,YAAY,CAAC,kBAAkB,CAAC,2CAA2C,CAAC,EAAE,CAAC,CAAC;IAC3J,CAAC;CACF;AAbD,sEAaC","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 Tiles\r\n */\r\n\r\nimport { ImageMapLayerSettings } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../../../IModelApp\";\r\nimport { MapLayerImageryProvider } from \"../../internal\";\r\n\r\n/** @internal */\r\nexport class AzureMapsLayerImageryProvider extends MapLayerImageryProvider {\r\n constructor(settings: ImageMapLayerSettings) { super(settings, true); }\r\n\r\n // construct the Url from the desired Tile\r\n public async constructUrl(y: number, x: number, zoom: number): Promise<string> {\r\n if (!this._settings.accessKey)\r\n return \"\";\r\n return `${this._settings.url}&${this._settings.accessKey.key}=${this._settings.accessKey.value}&api-version=2.0&zoom=${zoom}&x=${x}&y=${y}`;\r\n }\r\n\r\n public override getLogo() {\r\n return IModelApp.makeLogoCard({ heading: \"Azure Maps\", notice: IModelApp.localization.getLocalizedString(\"iModelJs:BackgroundMap.AzureMapsCopyright\") });\r\n }\r\n}\r\n"]}
@@ -1,7 +1,7 @@
1
1
  /** @packageDocumentation
2
2
  * @module Tiles
3
3
  */
4
- import { MapLayerSettings } from "@itwin/core-common";
4
+ import { ImageMapLayerSettings } from "@itwin/core-common";
5
5
  import { ScreenViewport } from "../../../Viewport";
6
6
  import { MapLayerImageryProvider } from "../../internal";
7
7
  /** @internal */
@@ -14,7 +14,7 @@ export declare class BingMapsImageryLayerProvider extends MapLayerImageryProvide
14
14
  private _attributions?;
15
15
  private _mapTilingScheme;
16
16
  private _urlBase;
17
- constructor(settings: MapLayerSettings);
17
+ constructor(settings: ImageMapLayerSettings);
18
18
  get tileWidth(): number;
19
19
  get tileHeight(): number;
20
20
  private tileXYToQuadKey;
@@ -1 +1 @@
1
- {"version":3,"file":"BingImageryProvider.d.ts","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/BingImageryProvider.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EAAe,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGnE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EACL,uBAAuB,EAExB,MAAM,gBAAgB,CAAC;AAsDxB,gBAAgB;AAChB,qBAAa,4BAA6B,SAAQ,uBAAuB;IACvE,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,cAAc,CAAC,CAAW;IAClC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,aAAa,CAAC,CAAoB;IAC1C,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,EAAE,gBAAgB;IAQtC,IAAW,SAAS,IAAI,MAAM,CAA4B;IAC1D,IAAW,UAAU,IAAI,MAAM,CAA6B;IAE5D,OAAO,CAAC,eAAe;IAuBV,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAa1F,OAAO,CAAC,uBAAuB;IAoBf,OAAO,CAAC,EAAE,EAAE,cAAc,GAAG,mBAAmB,GAAG,SAAS;IAiBtD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAgCjD,OAAO,CAAC,gBAAgB;CAezB"}
1
+ {"version":3,"file":"BingImageryProvider.d.ts","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/BingImageryProvider.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EAAE,qBAAqB,EAAe,MAAM,oBAAoB,CAAC;AAGxE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EACL,uBAAuB,EAExB,MAAM,gBAAgB,CAAC;AAsDxB,gBAAgB;AAChB,qBAAa,4BAA6B,SAAQ,uBAAuB;IACvE,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,cAAc,CAAC,CAAW;IAClC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,aAAa,CAAC,CAAoB;IAC1C,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,EAAE,qBAAqB;IAQ3C,IAAW,SAAS,IAAI,MAAM,CAA4B;IAC1D,IAAW,UAAU,IAAI,MAAM,CAA6B;IAE5D,OAAO,CAAC,eAAe;IAuBV,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAa1F,OAAO,CAAC,uBAAuB;IAoBf,OAAO,CAAC,EAAE,EAAE,cAAc,GAAG,mBAAmB,GAAG,SAAS;IAiBtD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAgCjD,OAAO,CAAC,gBAAgB;CAezB"}
@@ -1 +1 @@
1
- {"version":3,"file":"BingImageryProvider.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/BingImageryProvider.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 Tiles\r\n */\r\n\r\nimport { assert, BentleyError, IModelStatus } from \"@itwin/core-bentley\";\r\nimport { Range2d } from \"@itwin/core-geometry\";\r\nimport { ImageSource, MapLayerSettings } from \"@itwin/core-common\";\r\nimport { request, RequestOptions, Response } from \"../../../request/Request\";\r\nimport { IModelApp } from \"../../../IModelApp\";\r\nimport { ScreenViewport } from \"../../../Viewport\";\r\nimport {\r\n MapLayerImageryProvider, MapTile, MapTilingScheme, QuadId,\r\n Tile, WebMercatorTilingScheme,\r\n} from \"../../internal\";\r\n\r\n/** Represents one range of geography and tile zoom levels for a bing data provider\r\n * @internal\r\n */\r\nclass Coverage {\r\n constructor(private _lowerLeftLatitude: number,\r\n private _lowerLeftLongitude: number,\r\n private _upperRightLatitude: number,\r\n private _upperRightLongitude: number,\r\n private _minimumZoomLevel: number,\r\n private _maximumZoomLevel: number) { }\r\n\r\n public overlaps(quadId: QuadId, tilingScheme: MapTilingScheme): boolean {\r\n const range: Range2d = quadId.getLatLongRange(tilingScheme);\r\n if (quadId.level < this._minimumZoomLevel)\r\n return false;\r\n if (quadId.level > this._maximumZoomLevel)\r\n return false;\r\n if (range.low.x > this._upperRightLongitude)\r\n return false;\r\n if (range.low.y > this._upperRightLatitude)\r\n return false;\r\n if (range.high.x < this._lowerLeftLongitude)\r\n return false;\r\n if (range.high.y < this._lowerLeftLatitude)\r\n return false;\r\n\r\n return true;\r\n }\r\n}\r\n\r\n/** Represents the copyright message and an array of coverage data for one of bing's data providers (HERE for example).\r\n * @internal\r\n */\r\nclass BingAttribution {\r\n constructor(public copyrightMessage: string, private _coverages: Coverage[]) { }\r\n\r\n public matchesTile(tile: Tile, tilingScheme: MapTilingScheme): boolean {\r\n const quadId = QuadId.createFromContentId(tile.contentId);\r\n for (const coverage of this._coverages) {\r\n if (coverage.overlaps(quadId, tilingScheme))\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n\r\n// in deployed applications, we can only make https requests, but the Bing Maps metadata request returns templates with \"http:\".\r\n// This function fixes those.\r\nfunction replaceHttpWithHttps(originalUrl: string) {\r\n return originalUrl.startsWith(\"http:\") ? \"https:\".concat(originalUrl.slice(5)) : originalUrl;\r\n}\r\n\r\n/** @internal */\r\nexport class BingMapsImageryLayerProvider extends MapLayerImageryProvider {\r\n private _urlTemplate?: string;\r\n private _urlSubdomains?: string[];\r\n private _zoomMax: number;\r\n private _tileHeight: number;\r\n private _tileWidth: number;\r\n private _attributions?: BingAttribution[]; // array of Bing's data providers.\r\n private _mapTilingScheme: MapTilingScheme;\r\n private _urlBase: string;\r\n\r\n constructor(settings: MapLayerSettings) {\r\n super(settings, true);\r\n this._urlBase = settings.url;\r\n this._zoomMax = 0;\r\n this._tileHeight = this._tileWidth = 0;\r\n this._mapTilingScheme = new WebMercatorTilingScheme();\r\n }\r\n\r\n public get tileWidth(): number { return this._tileWidth; }\r\n public get tileHeight(): number { return this._tileHeight; }\r\n\r\n private tileXYToQuadKey(tileX: number, tileY: number, zoomLevel: number) {\r\n // from C# example in bing documentation https://msdn.microsoft.com/en-us/library/bb259689.aspx\r\n let quadKey: string = \"\";\r\n\r\n // Root tile is not displayable. Returns 0 for _GetMaximumSize(). Should not end up here.\r\n assert(0 !== zoomLevel);\r\n\r\n for (let i: number = zoomLevel; i > 0; i--) {\r\n let digit: number = 0x30; // '0'\r\n const mask: number = 1 << (i - 1);\r\n if ((tileX & mask) !== 0) {\r\n digit++;\r\n }\r\n if ((tileY & mask) !== 0) {\r\n digit++;\r\n digit++;\r\n }\r\n quadKey = quadKey.concat(String.fromCharCode(digit));\r\n }\r\n return quadKey;\r\n }\r\n\r\n // construct the Url from the desired Tile\r\n public async constructUrl(row: number, column: number, zoomLevel: number): Promise<string> {\r\n // From the tile, get a \"quadKey\" the Microsoft way.\r\n const quadKey: string = this.tileXYToQuadKey(column, row, zoomLevel);\r\n const subdomain: string = this._urlSubdomains![(row + column) % this._urlSubdomains!.length];\r\n\r\n // from the template url, construct the tile url.\r\n let url: string = this._urlTemplate!.replace(\"{subdomain}\", subdomain);\r\n url = url.replace(\"{quadkey}\", quadKey);\r\n\r\n return url;\r\n }\r\n\r\n // gets the attributions that match the tile set.\r\n private getMatchingAttributions(tiles: Set<Tile> | undefined): BingAttribution[] {\r\n const matchingAttributions: BingAttribution[] = new Array<BingAttribution>();\r\n if (!this._attributions || !tiles)\r\n return matchingAttributions;\r\n\r\n const unmatchedSet: BingAttribution[] = this._attributions.slice();\r\n for (const tile of tiles) {\r\n if (tile instanceof MapTile)\r\n // compare to the set of Bing attributions that we have not yet matched.\r\n for (let iAttr = 0; iAttr < unmatchedSet.length; iAttr++) {\r\n const attribution = unmatchedSet[iAttr];\r\n if (attribution && attribution.matchesTile(tile, this._mapTilingScheme)) {\r\n matchingAttributions.push(attribution);\r\n delete unmatchedSet[iAttr];\r\n }\r\n }\r\n }\r\n return matchingAttributions;\r\n }\r\n\r\n public override getLogo(vp: ScreenViewport): HTMLTableRowElement | undefined {\r\n const tiles = IModelApp.tileAdmin.getTilesForUser(vp)?.selected;\r\n const matchingAttributions = this.getMatchingAttributions(tiles);\r\n const copyrights: string[] = [];\r\n for (const match of matchingAttributions)\r\n copyrights.push(match.copyrightMessage);\r\n\r\n let copyrightMsg = \"\";\r\n for (let i = 0; i < copyrights.length; ++i) {\r\n if (i > 0)\r\n copyrightMsg += \"<br>\";\r\n copyrightMsg += copyrights[i];\r\n }\r\n return IModelApp.makeLogoCard({ iconSrc: `${IModelApp.publicPath}images/bing.svg`, heading: \"Microsoft Bing\", notice: copyrightMsg });\r\n }\r\n\r\n // initializes the BingImageryProvider by reading the templateUrl, logo image, and attribution list.\r\n public override async initialize(): Promise<void> {\r\n // get the template url\r\n const bingRequestUrl = this._urlBase.replace(\"{bingKey}\", this._settings.accessKey ? this._settings.accessKey.value : \"\");\r\n const requestOptions: RequestOptions = { method: \"GET\" };\r\n\r\n try {\r\n const response: Response = await request(bingRequestUrl, requestOptions);\r\n const bingResponseProps: any = response.body;\r\n\r\n const thisResourceSetProps = bingResponseProps.resourceSets[0];\r\n const thisResourceProps = thisResourceSetProps.resources[0];\r\n this._zoomMax = thisResourceProps.zoomMax;\r\n this._tileHeight = thisResourceProps.imageHeight;\r\n this._tileWidth = thisResourceProps.imageWidth;\r\n this._urlTemplate = replaceHttpWithHttps(thisResourceProps.imageUrl.replace(\"{culture}\", \"en-US\")); // NEEDSWORK - get locale from somewhere.\r\n this._urlSubdomains = thisResourceProps.imageUrlSubdomains;\r\n // read the list of Bing's data suppliers and the range of data they provide. Used in calculation of copyright message.\r\n this.readAttributions(thisResourceProps.imageryProviders);\r\n\r\n // Bing sometimes provides tiles that have nothing but a camera icon in the middle of them when you ask\r\n // for tiles at zoom levels where they don't have data. Their application stops you from zooming in when that's the\r\n // case, but we can't stop - the user might want to look at design data a closer zoom. So we intentionally load such\r\n // a tile, and then compare other tiles to it, rejecting them if they match.\r\n this.loadTile(0, 0, this._zoomMax - 1).then((tileData: ImageSource | undefined) => { // eslint-disable-line @typescript-eslint/no-floating-promises\r\n if (tileData !== undefined) this._missingTileData = tileData.data as Uint8Array;\r\n });\r\n } catch (error) {\r\n throw new BentleyError(IModelStatus.BadModel, \"Error in Bing Server communications\");\r\n }\r\n }\r\n\r\n // reads the list of Bing data providers and the map range for which they each provide data.\r\n private readAttributions(attributionProps: any) {\r\n for (const thisAttributionProps of attributionProps) {\r\n const copyrightMessage: string = thisAttributionProps.attribution;\r\n const coverages: Coverage[] = new Array<Coverage>();\r\n for (const thisCoverageProps of thisAttributionProps.coverageAreas) {\r\n const thisCoverage = new Coverage(thisCoverageProps.bbox[0], thisCoverageProps.bbox[1], thisCoverageProps.bbox[2], thisCoverageProps.bbox[3],\r\n thisCoverageProps.zoomMin, thisCoverageProps.zoomMax);\r\n coverages.push(thisCoverage);\r\n }\r\n const thisAttribution: BingAttribution = new BingAttribution(copyrightMessage, coverages);\r\n if (!this._attributions)\r\n this._attributions = new Array<BingAttribution>();\r\n this._attributions.push(thisAttribution);\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"BingImageryProvider.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/BingImageryProvider.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 Tiles\r\n */\r\n\r\nimport { assert, BentleyError, IModelStatus } from \"@itwin/core-bentley\";\r\nimport { Range2d } from \"@itwin/core-geometry\";\r\nimport { ImageMapLayerSettings, ImageSource } from \"@itwin/core-common\";\r\nimport { request, RequestOptions, Response } from \"../../../request/Request\";\r\nimport { IModelApp } from \"../../../IModelApp\";\r\nimport { ScreenViewport } from \"../../../Viewport\";\r\nimport {\r\n MapLayerImageryProvider, MapTile, MapTilingScheme, QuadId,\r\n Tile, WebMercatorTilingScheme,\r\n} from \"../../internal\";\r\n\r\n/** Represents one range of geography and tile zoom levels for a bing data provider\r\n * @internal\r\n */\r\nclass Coverage {\r\n constructor(private _lowerLeftLatitude: number,\r\n private _lowerLeftLongitude: number,\r\n private _upperRightLatitude: number,\r\n private _upperRightLongitude: number,\r\n private _minimumZoomLevel: number,\r\n private _maximumZoomLevel: number) { }\r\n\r\n public overlaps(quadId: QuadId, tilingScheme: MapTilingScheme): boolean {\r\n const range: Range2d = quadId.getLatLongRange(tilingScheme);\r\n if (quadId.level < this._minimumZoomLevel)\r\n return false;\r\n if (quadId.level > this._maximumZoomLevel)\r\n return false;\r\n if (range.low.x > this._upperRightLongitude)\r\n return false;\r\n if (range.low.y > this._upperRightLatitude)\r\n return false;\r\n if (range.high.x < this._lowerLeftLongitude)\r\n return false;\r\n if (range.high.y < this._lowerLeftLatitude)\r\n return false;\r\n\r\n return true;\r\n }\r\n}\r\n\r\n/** Represents the copyright message and an array of coverage data for one of bing's data providers (HERE for example).\r\n * @internal\r\n */\r\nclass BingAttribution {\r\n constructor(public copyrightMessage: string, private _coverages: Coverage[]) { }\r\n\r\n public matchesTile(tile: Tile, tilingScheme: MapTilingScheme): boolean {\r\n const quadId = QuadId.createFromContentId(tile.contentId);\r\n for (const coverage of this._coverages) {\r\n if (coverage.overlaps(quadId, tilingScheme))\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n\r\n// in deployed applications, we can only make https requests, but the Bing Maps metadata request returns templates with \"http:\".\r\n// This function fixes those.\r\nfunction replaceHttpWithHttps(originalUrl: string) {\r\n return originalUrl.startsWith(\"http:\") ? \"https:\".concat(originalUrl.slice(5)) : originalUrl;\r\n}\r\n\r\n/** @internal */\r\nexport class BingMapsImageryLayerProvider extends MapLayerImageryProvider {\r\n private _urlTemplate?: string;\r\n private _urlSubdomains?: string[];\r\n private _zoomMax: number;\r\n private _tileHeight: number;\r\n private _tileWidth: number;\r\n private _attributions?: BingAttribution[]; // array of Bing's data providers.\r\n private _mapTilingScheme: MapTilingScheme;\r\n private _urlBase: string;\r\n\r\n constructor(settings: ImageMapLayerSettings) {\r\n super(settings, true);\r\n this._urlBase = settings.url;\r\n this._zoomMax = 0;\r\n this._tileHeight = this._tileWidth = 0;\r\n this._mapTilingScheme = new WebMercatorTilingScheme();\r\n }\r\n\r\n public get tileWidth(): number { return this._tileWidth; }\r\n public get tileHeight(): number { return this._tileHeight; }\r\n\r\n private tileXYToQuadKey(tileX: number, tileY: number, zoomLevel: number) {\r\n // from C# example in bing documentation https://msdn.microsoft.com/en-us/library/bb259689.aspx\r\n let quadKey: string = \"\";\r\n\r\n // Root tile is not displayable. Returns 0 for _GetMaximumSize(). Should not end up here.\r\n assert(0 !== zoomLevel);\r\n\r\n for (let i: number = zoomLevel; i > 0; i--) {\r\n let digit: number = 0x30; // '0'\r\n const mask: number = 1 << (i - 1);\r\n if ((tileX & mask) !== 0) {\r\n digit++;\r\n }\r\n if ((tileY & mask) !== 0) {\r\n digit++;\r\n digit++;\r\n }\r\n quadKey = quadKey.concat(String.fromCharCode(digit));\r\n }\r\n return quadKey;\r\n }\r\n\r\n // construct the Url from the desired Tile\r\n public async constructUrl(row: number, column: number, zoomLevel: number): Promise<string> {\r\n // From the tile, get a \"quadKey\" the Microsoft way.\r\n const quadKey: string = this.tileXYToQuadKey(column, row, zoomLevel);\r\n const subdomain: string = this._urlSubdomains![(row + column) % this._urlSubdomains!.length];\r\n\r\n // from the template url, construct the tile url.\r\n let url: string = this._urlTemplate!.replace(\"{subdomain}\", subdomain);\r\n url = url.replace(\"{quadkey}\", quadKey);\r\n\r\n return url;\r\n }\r\n\r\n // gets the attributions that match the tile set.\r\n private getMatchingAttributions(tiles: Set<Tile> | undefined): BingAttribution[] {\r\n const matchingAttributions: BingAttribution[] = new Array<BingAttribution>();\r\n if (!this._attributions || !tiles)\r\n return matchingAttributions;\r\n\r\n const unmatchedSet: BingAttribution[] = this._attributions.slice();\r\n for (const tile of tiles) {\r\n if (tile instanceof MapTile)\r\n // compare to the set of Bing attributions that we have not yet matched.\r\n for (let iAttr = 0; iAttr < unmatchedSet.length; iAttr++) {\r\n const attribution = unmatchedSet[iAttr];\r\n if (attribution && attribution.matchesTile(tile, this._mapTilingScheme)) {\r\n matchingAttributions.push(attribution);\r\n delete unmatchedSet[iAttr];\r\n }\r\n }\r\n }\r\n return matchingAttributions;\r\n }\r\n\r\n public override getLogo(vp: ScreenViewport): HTMLTableRowElement | undefined {\r\n const tiles = IModelApp.tileAdmin.getTilesForUser(vp)?.selected;\r\n const matchingAttributions = this.getMatchingAttributions(tiles);\r\n const copyrights: string[] = [];\r\n for (const match of matchingAttributions)\r\n copyrights.push(match.copyrightMessage);\r\n\r\n let copyrightMsg = \"\";\r\n for (let i = 0; i < copyrights.length; ++i) {\r\n if (i > 0)\r\n copyrightMsg += \"<br>\";\r\n copyrightMsg += copyrights[i];\r\n }\r\n return IModelApp.makeLogoCard({ iconSrc: `${IModelApp.publicPath}images/bing.svg`, heading: \"Microsoft Bing\", notice: copyrightMsg });\r\n }\r\n\r\n // initializes the BingImageryProvider by reading the templateUrl, logo image, and attribution list.\r\n public override async initialize(): Promise<void> {\r\n // get the template url\r\n const bingRequestUrl = this._urlBase.replace(\"{bingKey}\", this._settings.accessKey ? this._settings.accessKey.value : \"\");\r\n const requestOptions: RequestOptions = { method: \"GET\" };\r\n\r\n try {\r\n const response: Response = await request(bingRequestUrl, requestOptions);\r\n const bingResponseProps: any = response.body;\r\n\r\n const thisResourceSetProps = bingResponseProps.resourceSets[0];\r\n const thisResourceProps = thisResourceSetProps.resources[0];\r\n this._zoomMax = thisResourceProps.zoomMax;\r\n this._tileHeight = thisResourceProps.imageHeight;\r\n this._tileWidth = thisResourceProps.imageWidth;\r\n this._urlTemplate = replaceHttpWithHttps(thisResourceProps.imageUrl.replace(\"{culture}\", \"en-US\")); // NEEDSWORK - get locale from somewhere.\r\n this._urlSubdomains = thisResourceProps.imageUrlSubdomains;\r\n // read the list of Bing's data suppliers and the range of data they provide. Used in calculation of copyright message.\r\n this.readAttributions(thisResourceProps.imageryProviders);\r\n\r\n // Bing sometimes provides tiles that have nothing but a camera icon in the middle of them when you ask\r\n // for tiles at zoom levels where they don't have data. Their application stops you from zooming in when that's the\r\n // case, but we can't stop - the user might want to look at design data a closer zoom. So we intentionally load such\r\n // a tile, and then compare other tiles to it, rejecting them if they match.\r\n this.loadTile(0, 0, this._zoomMax - 1).then((tileData: ImageSource | undefined) => { // eslint-disable-line @typescript-eslint/no-floating-promises\r\n if (tileData !== undefined) this._missingTileData = tileData.data as Uint8Array;\r\n });\r\n } catch (error) {\r\n throw new BentleyError(IModelStatus.BadModel, \"Error in Bing Server communications\");\r\n }\r\n }\r\n\r\n // reads the list of Bing data providers and the map range for which they each provide data.\r\n private readAttributions(attributionProps: any) {\r\n for (const thisAttributionProps of attributionProps) {\r\n const copyrightMessage: string = thisAttributionProps.attribution;\r\n const coverages: Coverage[] = new Array<Coverage>();\r\n for (const thisCoverageProps of thisAttributionProps.coverageAreas) {\r\n const thisCoverage = new Coverage(thisCoverageProps.bbox[0], thisCoverageProps.bbox[1], thisCoverageProps.bbox[2], thisCoverageProps.bbox[3],\r\n thisCoverageProps.zoomMin, thisCoverageProps.zoomMax);\r\n coverages.push(thisCoverage);\r\n }\r\n const thisAttribution: BingAttribution = new BingAttribution(copyrightMessage, coverages);\r\n if (!this._attributions)\r\n this._attributions = new Array<BingAttribution>();\r\n this._attributions.push(thisAttribution);\r\n }\r\n }\r\n}\r\n"]}
@@ -1,7 +1,7 @@
1
1
  /** @packageDocumentation
2
2
  * @module Tiles
3
3
  */
4
- import { MapLayerSettings } from "@itwin/core-common";
4
+ import { ImageMapLayerSettings } from "@itwin/core-common";
5
5
  import { MapLayerImageryProvider } from "../../internal";
6
6
  /** Base class imagery map layer formats. Subclasses should override formatId and [[MapLayerFormat.createImageryProvider]].
7
7
  * @internal
@@ -10,7 +10,7 @@ export declare class MapBoxLayerImageryProvider extends MapLayerImageryProvider
10
10
  private _zoomMin;
11
11
  private _zoomMax;
12
12
  private _baseUrl;
13
- constructor(settings: MapLayerSettings);
13
+ constructor(settings: ImageMapLayerSettings);
14
14
  get tileWidth(): number;
15
15
  get tileHeight(): number;
16
16
  get minimumZoomLevel(): number;
@@ -1 +1 @@
1
- {"version":3,"file":"MapBoxLayerImageryProvider.d.ts","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/MapBoxLayerImageryProvider.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD;;GAEG;AACH,qBAAa,0BAA2B,SAAQ,uBAAuB;IACrE,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,EAAE,gBAAgB;IAMtC,IAAW,SAAS,IAAI,MAAM,CAAgB;IAC9C,IAAW,UAAU,IAAI,MAAM,CAAgB;IAC/C,IAAoB,gBAAgB,IAAI,MAAM,CAA0B;IACxE,IAAoB,gBAAgB,IAAI,MAAM,CAA0B;IAG3D,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAa1E,OAAO,IAAI,mBAAmB,GAAG,SAAS;IAKpC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAClD"}
1
+ {"version":3,"file":"MapBoxLayerImageryProvider.d.ts","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/MapBoxLayerImageryProvider.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD;;GAEG;AACH,qBAAa,0BAA2B,SAAQ,uBAAuB;IACrE,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,EAAE,qBAAqB;IAM3C,IAAW,SAAS,IAAI,MAAM,CAAgB;IAC9C,IAAW,UAAU,IAAI,MAAM,CAAgB;IAC/C,IAAoB,gBAAgB,IAAI,MAAM,CAA0B;IACxE,IAAoB,gBAAgB,IAAI,MAAM,CAA0B;IAG3D,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAc1E,OAAO,IAAI,mBAAmB,GAAG,SAAS;IAKpC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAClD"}
@@ -30,9 +30,10 @@ class MapBoxLayerImageryProvider extends internal_1.MapLayerImageryProvider {
30
30
  return "";
31
31
  }
32
32
  // from the template url, construct the tile url.
33
- let url = this._baseUrl.concat(zoomLevel.toString());
34
- url = url.concat("/").concat(column.toString()).concat("/").concat(row.toString());
35
- url = url.concat(`.jpg80?${this._settings.accessKey.key}=${this._settings.accessKey.value}`);
33
+ // format: {baseUrl}/{tileSize}/{level}/{column}/{row}?access_token={token}
34
+ let url = this._baseUrl.concat(this.tileWidth.toString());
35
+ url = url.concat(`/${zoomLevel.toString()}/${column.toString()}/${row.toString()}`);
36
+ url = url.concat(`?${this._settings.accessKey.key}=${this._settings.accessKey.value}`);
36
37
  return url;
37
38
  }
38
39
  getLogo() {
@@ -1 +1 @@
1
- {"version":3,"file":"MapBoxLayerImageryProvider.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/MapBoxLayerImageryProvider.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAGH,kDAA+C;AAC/C,6CAAyD;AAEzD;;GAEG;AACH,MAAa,0BAA2B,SAAQ,kCAAuB;IAKrE,YAAY,QAA0B;QACpC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACxC,CAAC;IAED,IAAW,SAAS,KAAa,OAAO,GAAG,CAAC,CAAC,CAAC;IAC9C,IAAW,UAAU,KAAa,OAAO,GAAG,CAAC,CAAC,CAAC;IAC/C,IAAoB,gBAAgB,KAAa,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxE,IAAoB,gBAAgB,KAAa,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAExE,0CAA0C;IACnC,KAAK,CAAC,YAAY,CAAC,GAAW,EAAE,MAAc,EAAE,SAAiB;QACtE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;YAC7B,OAAO,EAAE,CAAC;SACX;QAED,iDAAiD;QACjD,IAAI,GAAG,GAAW,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC7D,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnF,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;QAE7F,OAAO,GAAG,CAAC;IACb,CAAC;IAEe,OAAO;QACrB,OAAO,qBAAS,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,qBAAS,CAAC,YAAY,CAAC,kBAAkB,CAAC,wCAAwC,CAAC,EAAE,CAAC,CAAC;IACpJ,CAAC;IAED,sDAAsD;IACtC,KAAK,CAAC,UAAU,KAAoB,CAAC;CACtD;AApCD,gEAoCC","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 Tiles\r\n */\r\n\r\nimport { MapLayerSettings } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../../../IModelApp\";\r\nimport { MapLayerImageryProvider } from \"../../internal\";\r\n\r\n/** Base class imagery map layer formats. Subclasses should override formatId and [[MapLayerFormat.createImageryProvider]].\r\n * @internal\r\n */\r\nexport class MapBoxLayerImageryProvider extends MapLayerImageryProvider {\r\n private _zoomMin: number;\r\n private _zoomMax: number;\r\n private _baseUrl: string;\r\n\r\n constructor(settings: MapLayerSettings) {\r\n super(settings, true);\r\n this._baseUrl = settings.url;\r\n this._zoomMin = 1; this._zoomMax = 20;\r\n }\r\n\r\n public get tileWidth(): number { return 256; }\r\n public get tileHeight(): number { return 256; }\r\n public override get minimumZoomLevel(): number { return this._zoomMin; }\r\n public override get maximumZoomLevel(): number { return this._zoomMax; }\r\n\r\n // construct the Url from the desired Tile\r\n public async constructUrl(row: number, column: number, zoomLevel: number): Promise<string> {\r\n if (!this._settings.accessKey) {\r\n return \"\";\r\n }\r\n\r\n // from the template url, construct the tile url.\r\n let url: string = this._baseUrl.concat(zoomLevel.toString());\r\n url = url.concat(\"/\").concat(column.toString()).concat(\"/\").concat(row.toString());\r\n url = url.concat(`.jpg80?${this._settings.accessKey.key}=${this._settings.accessKey.value}`);\r\n\r\n return url;\r\n }\r\n\r\n public override getLogo(): HTMLTableRowElement | undefined {\r\n return IModelApp.makeLogoCard({ heading: \"Mapbox\", notice: IModelApp.localization.getLocalizedString(\"iModelJs:BackgroundMap.MapBoxCopyright\") });\r\n }\r\n\r\n // no initialization needed for MapBoxImageryProvider.\r\n public override async initialize(): Promise<void> { }\r\n}\r\n"]}
1
+ {"version":3,"file":"MapBoxLayerImageryProvider.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/MapBoxLayerImageryProvider.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAGH,kDAA+C;AAC/C,6CAAyD;AAEzD;;GAEG;AACH,MAAa,0BAA2B,SAAQ,kCAAuB;IAKrE,YAAY,QAA+B;QACzC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACxC,CAAC;IAED,IAAW,SAAS,KAAa,OAAO,GAAG,CAAC,CAAC,CAAC;IAC9C,IAAW,UAAU,KAAa,OAAO,GAAG,CAAC,CAAC,CAAC;IAC/C,IAAoB,gBAAgB,KAAa,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxE,IAAoB,gBAAgB,KAAa,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAExE,0CAA0C;IACnC,KAAK,CAAC,YAAY,CAAC,GAAW,EAAE,MAAc,EAAE,SAAiB;QACtE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;YAC7B,OAAO,EAAE,CAAC;SACX;QAED,iDAAiD;QACjD,2EAA2E;QAC3E,IAAI,GAAG,GAAW,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QAClE,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,QAAQ,EAAE,IAAI,MAAM,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACpF,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;QAEvF,OAAO,GAAG,CAAC;IACb,CAAC;IAEe,OAAO;QACrB,OAAO,qBAAS,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,qBAAS,CAAC,YAAY,CAAC,kBAAkB,CAAC,wCAAwC,CAAC,EAAE,CAAC,CAAC;IACpJ,CAAC;IAED,sDAAsD;IACtC,KAAK,CAAC,UAAU,KAAoB,CAAC;CACtD;AArCD,gEAqCC","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 Tiles\r\n */\r\n\r\nimport { ImageMapLayerSettings } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../../../IModelApp\";\r\nimport { MapLayerImageryProvider } from \"../../internal\";\r\n\r\n/** Base class imagery map layer formats. Subclasses should override formatId and [[MapLayerFormat.createImageryProvider]].\r\n * @internal\r\n */\r\nexport class MapBoxLayerImageryProvider extends MapLayerImageryProvider {\r\n private _zoomMin: number;\r\n private _zoomMax: number;\r\n private _baseUrl: string;\r\n\r\n constructor(settings: ImageMapLayerSettings) {\r\n super(settings, true);\r\n this._baseUrl = settings.url;\r\n this._zoomMin = 1; this._zoomMax = 20;\r\n }\r\n\r\n public get tileWidth(): number { return 256; }\r\n public get tileHeight(): number { return 256; }\r\n public override get minimumZoomLevel(): number { return this._zoomMin; }\r\n public override get maximumZoomLevel(): number { return this._zoomMax; }\r\n\r\n // construct the Url from the desired Tile\r\n public async constructUrl(row: number, column: number, zoomLevel: number): Promise<string> {\r\n if (!this._settings.accessKey) {\r\n return \"\";\r\n }\r\n\r\n // from the template url, construct the tile url.\r\n // format: {baseUrl}/{tileSize}/{level}/{column}/{row}?access_token={token}\r\n let url: string = this._baseUrl.concat(this.tileWidth.toString());\r\n url = url.concat(`/${zoomLevel.toString()}/${column.toString()}/${row.toString()}`);\r\n url = url.concat(`?${this._settings.accessKey.key}=${this._settings.accessKey.value}`);\r\n\r\n return url;\r\n }\r\n\r\n public override getLogo(): HTMLTableRowElement | undefined {\r\n return IModelApp.makeLogoCard({ heading: \"Mapbox\", notice: IModelApp.localization.getLocalizedString(\"iModelJs:BackgroundMap.MapBoxCopyright\") });\r\n }\r\n\r\n // no initialization needed for MapBoxImageryProvider.\r\n public override async initialize(): Promise<void> { }\r\n}\r\n"]}
@@ -1,13 +1,13 @@
1
1
  /** @packageDocumentation
2
2
  * @module Tiles
3
3
  */
4
- import { MapLayerSettings } from "@itwin/core-common";
4
+ import { ImageMapLayerSettings } from "@itwin/core-common";
5
5
  import { MapLayerImageryProvider, MapLayerSourceValidation } from "../../internal";
6
6
  /** Provide tiles from a url template in the a generic format ... i.e. https://b.tile.openstreetmap.org/{level}/{column}/{row}.png
7
7
  * @internal
8
8
  */
9
9
  export declare class TileUrlImageryProvider extends MapLayerImageryProvider {
10
- constructor(settings: MapLayerSettings);
10
+ constructor(settings: ImageMapLayerSettings);
11
11
  static validateUrlTemplate(template: string): MapLayerSourceValidation;
12
12
  constructUrl(row: number, column: number, level: number): Promise<string>;
13
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TileUrlImageryProvider.d.ts","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/TileUrlImageryProvider.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAwB,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAMzG;;EAEE;AACF,qBAAa,sBAAuB,SAAQ,uBAAuB;gBACrD,QAAQ,EAAE,gBAAgB;WAGxB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,wBAAwB;IAKhE,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAUvF"}
1
+ {"version":3,"file":"TileUrlImageryProvider.d.ts","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/TileUrlImageryProvider.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAwB,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAMzG;;EAEE;AACF,qBAAa,sBAAuB,SAAQ,uBAAuB;gBACrD,QAAQ,EAAE,qBAAqB;WAG7B,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,wBAAwB;IAKhE,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAUvF"}
@@ -1 +1 @@
1
- {"version":3,"file":"TileUrlImageryProvider.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/TileUrlImageryProvider.ts"],"names":[],"mappings":";;;AAQA,6CAAyG;AAEzG,MAAM,UAAU,GAAG,SAAS,CAAC;AAC7B,MAAM,QAAQ,GAAG,OAAO,CAAC;AACzB,MAAM,WAAW,GAAG,UAAU,CAAC;AAE/B;;EAEE;AACF,MAAa,sBAAuB,SAAQ,kCAAuB;IACjE,YAAY,QAA0B;QACpC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACxB,CAAC;IACM,MAAM,CAAC,mBAAmB,CAAC,QAAgB;QAChD,OAAO,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,+BAAoB,CAAC,UAAU,EAAE,CAAC;IAC9L,CAAC;IAED,0CAA0C;IACnC,KAAK,CAAC,YAAY,CAAC,GAAW,EAAE,MAAc,EAAE,KAAa;QAClE,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;QAC7B,IAAI,sBAAsB,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,+BAAoB,CAAC,KAAK,EAAE;YACzF,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC;gBACzC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;YAClB,GAAG,GAAG,GAAG,GAAG,4BAA4B,CAAC;SAC1C;QAED,OAAO,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7H,CAAC;CACF;AAnBD,wDAmBC","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 Tiles\r\n */\r\nimport { MapLayerSettings } from \"@itwin/core-common\";\r\nimport { MapLayerImageryProvider, MapLayerSourceStatus, MapLayerSourceValidation } from \"../../internal\";\r\n\r\nconst levelToken = \"{level}\";\r\nconst rowToken = \"{row}\";\r\nconst columnToken = \"{column}\";\r\n\r\n/** Provide tiles from a url template in the a generic format ... i.e. https://b.tile.openstreetmap.org/{level}/{column}/{row}.png\r\n* @internal\r\n*/\r\nexport class TileUrlImageryProvider extends MapLayerImageryProvider {\r\n constructor(settings: MapLayerSettings) {\r\n super(settings, true);\r\n }\r\n public static validateUrlTemplate(template: string): MapLayerSourceValidation {\r\n return { status: (template.indexOf(levelToken) > 0 && template.indexOf(columnToken) > 0 && template.indexOf(rowToken) > 0) ? MapLayerSourceStatus.Valid : MapLayerSourceStatus.InvalidUrl };\r\n }\r\n\r\n // construct the Url from the desired Tile\r\n public async constructUrl(row: number, column: number, level: number): Promise<string> {\r\n let url = this._settings.url;\r\n if (TileUrlImageryProvider.validateUrlTemplate(url).status !== MapLayerSourceStatus.Valid) {\r\n if (url.lastIndexOf(\"/\") !== url.length - 1)\r\n url = `${url}/`;\r\n url = `${url}{level}/{column}/{row}.png`;\r\n }\r\n\r\n return url.replace(levelToken, level.toString()).replace(columnToken, column.toString()).replace(rowToken, row.toString());\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"TileUrlImageryProvider.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/TileUrlImageryProvider.ts"],"names":[],"mappings":";;;AAQA,6CAAyG;AAEzG,MAAM,UAAU,GAAG,SAAS,CAAC;AAC7B,MAAM,QAAQ,GAAG,OAAO,CAAC;AACzB,MAAM,WAAW,GAAG,UAAU,CAAC;AAE/B;;EAEE;AACF,MAAa,sBAAuB,SAAQ,kCAAuB;IACjE,YAAY,QAA+B;QACzC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACxB,CAAC;IACM,MAAM,CAAC,mBAAmB,CAAC,QAAgB;QAChD,OAAO,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,+BAAoB,CAAC,UAAU,EAAE,CAAC;IAC9L,CAAC;IAED,0CAA0C;IACnC,KAAK,CAAC,YAAY,CAAC,GAAW,EAAE,MAAc,EAAE,KAAa;QAClE,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;QAC7B,IAAI,sBAAsB,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,+BAAoB,CAAC,KAAK,EAAE;YACzF,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC;gBACzC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;YAClB,GAAG,GAAG,GAAG,GAAG,4BAA4B,CAAC;SAC1C;QAED,OAAO,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7H,CAAC;CACF;AAnBD,wDAmBC","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 Tiles\r\n */\r\nimport { ImageMapLayerSettings } from \"@itwin/core-common\";\r\nimport { MapLayerImageryProvider, MapLayerSourceStatus, MapLayerSourceValidation } from \"../../internal\";\r\n\r\nconst levelToken = \"{level}\";\r\nconst rowToken = \"{row}\";\r\nconst columnToken = \"{column}\";\r\n\r\n/** Provide tiles from a url template in the a generic format ... i.e. https://b.tile.openstreetmap.org/{level}/{column}/{row}.png\r\n* @internal\r\n*/\r\nexport class TileUrlImageryProvider extends MapLayerImageryProvider {\r\n constructor(settings: ImageMapLayerSettings) {\r\n super(settings, true);\r\n }\r\n public static validateUrlTemplate(template: string): MapLayerSourceValidation {\r\n return { status: (template.indexOf(levelToken) > 0 && template.indexOf(columnToken) > 0 && template.indexOf(rowToken) > 0) ? MapLayerSourceStatus.Valid : MapLayerSourceStatus.InvalidUrl };\r\n }\r\n\r\n // construct the Url from the desired Tile\r\n public async constructUrl(row: number, column: number, level: number): Promise<string> {\r\n let url = this._settings.url;\r\n if (TileUrlImageryProvider.validateUrlTemplate(url).status !== MapLayerSourceStatus.Valid) {\r\n if (url.lastIndexOf(\"/\") !== url.length - 1)\r\n url = `${url}/`;\r\n url = `${url}{level}/{column}/{row}.png`;\r\n }\r\n\r\n return url.replace(levelToken, level.toString()).replace(columnToken, column.toString()).replace(rowToken, row.toString());\r\n }\r\n}\r\n"]}
@@ -1,4 +1,4 @@
1
- import { Cartographic, MapLayerSettings } from "@itwin/core-common";
1
+ import { Cartographic, ImageMapLayerSettings } from "@itwin/core-common";
2
2
  import { ImageryMapTileTree, MapLayerImageryProvider, QuadId } from "../../internal";
3
3
  /** @internal */
4
4
  export interface WmsCrsSupport {
@@ -13,7 +13,7 @@ export declare class WmsMapLayerImageryProvider extends MapLayerImageryProvider
13
13
  private _baseUrl;
14
14
  private _isVersion1_1;
15
15
  private _crsSupport;
16
- constructor(settings: MapLayerSettings);
16
+ constructor(settings: ImageMapLayerSettings);
17
17
  initialize(): Promise<void>;
18
18
  private getVisibleLayerString;
19
19
  private getVisibleLayers;
@@ -1 +1 @@
1
- {"version":3,"file":"WmsMapLayerImageryProvider.d.ts","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/WmsMapLayerImageryProvider.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAoC,MAAM,oBAAoB,CAAC;AAEtG,OAAO,EACL,kBAAkB,EAAqB,uBAAuB,EAAiC,MAAM,EAEtG,MAAM,gBAAgB,CAAC;AAOxB,gBAAgB;AAChB,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,gBAAgB;AAChB,qBAAa,0BAA2B,SAAQ,uBAAuB;IACrE,OAAO,CAAC,aAAa,CAAC,CAAkB;IACxC,OAAO,CAAC,eAAe,CAAC,CAAoB;IAC5C,OAAO,CAAC,eAAe,CAAwC;IAC/D,OAAO,CAAC,QAAQ,CAAS;IAEzB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,WAAW,CAA0B;gBAEjC,QAAQ,EAAE,gBAAgB;IAKhB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA2CjD,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,+BAA+B;IAQhC,aAAa,IAAI,aAAa;IAyBxB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAwBpE,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;CAoBlI"}
1
+ {"version":3,"file":"WmsMapLayerImageryProvider.d.ts","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/WmsMapLayerImageryProvider.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAoC,MAAM,oBAAoB,CAAC;AAE3G,OAAO,EACL,kBAAkB,EAAqB,uBAAuB,EAAiC,MAAM,EAEtG,MAAM,gBAAgB,CAAC;AAOxB,gBAAgB;AAChB,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,gBAAgB;AAChB,qBAAa,0BAA2B,SAAQ,uBAAuB;IACrE,OAAO,CAAC,aAAa,CAAC,CAAkB;IACxC,OAAO,CAAC,eAAe,CAAC,CAAoB;IAC5C,OAAO,CAAC,eAAe,CAAwC;IAC/D,OAAO,CAAC,QAAQ,CAAS;IAEzB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,WAAW,CAA0B;gBAEjC,QAAQ,EAAE,qBAAqB;IAKrB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA2CjD,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,+BAA+B;IAQhC,aAAa,IAAI,aAAa;IAyBxB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAwBpE,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;CAoBlI"}
@@ -9,8 +9,8 @@ exports.WmsMapLayerImageryProvider = void 0;
9
9
  * @module Tiles
10
10
  */
11
11
  const core_bentley_1 = require("@itwin/core-bentley");
12
- const core_geometry_1 = require("@itwin/core-geometry");
13
12
  const core_common_1 = require("@itwin/core-common");
13
+ const core_geometry_1 = require("@itwin/core-geometry");
14
14
  const internal_1 = require("../../internal");
15
15
  // eslint-disable-next-line prefer-const
16
16
  let doToolTips = true;
@@ -1 +1 @@
1
- {"version":3,"file":"WmsMapLayerImageryProvider.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/WmsMapLayerImageryProvider.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 Tiles\r\n */\r\nimport { IModelStatus } from \"@itwin/core-bentley\";\r\nimport { Point2d } from \"@itwin/core-geometry\";\r\nimport { Cartographic, MapLayerSettings, MapSubLayerSettings, ServerError } from \"@itwin/core-common\";\r\n\r\nimport {\r\n ImageryMapTileTree, MapCartoRectangle, MapLayerImageryProvider, MapLayerImageryProviderStatus, QuadId, WmsCapabilities,\r\n WmsCapability, WmsUtilities,\r\n} from \"../../internal\";\r\n\r\n// eslint-disable-next-line prefer-const\r\nlet doToolTips = true;\r\n\r\nconst scratchPoint2d = Point2d.createZero();\r\n\r\n/** @internal */\r\nexport interface WmsCrsSupport {\r\n support3857: boolean;\r\n support4326: boolean;\r\n}\r\n\r\n/** @internal */\r\nexport class WmsMapLayerImageryProvider extends MapLayerImageryProvider {\r\n private _capabilities?: WmsCapabilities;\r\n private _allLayersRange?: MapCartoRectangle;\r\n private _subLayerRanges = new Map<string, MapCartoRectangle>();\r\n private _baseUrl: string;\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private _isVersion1_1 = false;\r\n private _crsSupport: WmsCrsSupport|undefined;\r\n\r\n constructor(settings: MapLayerSettings) {\r\n super(settings, false);\r\n this._baseUrl = WmsUtilities.getBaseUrl(this._settings.url);\r\n }\r\n\r\n public override async initialize(): Promise<void> {\r\n try {\r\n this._capabilities = await WmsCapabilities.create(this._baseUrl);\r\n if (undefined !== this._capabilities) {\r\n this._allLayersRange = this._capabilities.cartoRange;\r\n this._isVersion1_1 = this._capabilities.version !== undefined && 0 === this._capabilities.version.indexOf(\"1.1\");\r\n if (this._capabilities.layer && Array.isArray(this._capabilities.layer.subLayers)) {\r\n const mapCartoRanges = ((subLayer: WmsCapability.SubLayer) => {\r\n if (Array.isArray(subLayer.children))\r\n subLayer.children.forEach((child) => mapCartoRanges(child));\r\n else if (subLayer.cartoRange)\r\n this._subLayerRanges.set(subLayer.name, subLayer.cartoRange);\r\n });\r\n this._capabilities.layer.subLayers.forEach((subLayer) => mapCartoRanges(subLayer));\r\n this._settings.subLayers.forEach((subLayer) => {\r\n if (subLayer.isNamed && this._settings.isSubLayerVisible(subLayer)) {\r\n const subLayerRange = this._subLayerRanges.get(subLayer.name);\r\n if (subLayerRange)\r\n if (this.cartoRange)\r\n this.cartoRange.extendRange(subLayerRange);\r\n else\r\n this.cartoRange = subLayerRange.clone();\r\n }\r\n });\r\n }\r\n\r\n if (!this.cartoRange)\r\n this.cartoRange = this._allLayersRange;\r\n\r\n this._crsSupport = this.getCrsSupport();\r\n }\r\n } catch (error: any) {\r\n // Don't throw error if unauthorized status:\r\n // We want the tile tree to be created, so that end-user can get feedback on which layer is missing credentials.\r\n // When credentials will be provided, a new provider will be created, and initialization should be fine.\r\n if (error?.status === 401) {\r\n this.setStatus(MapLayerImageryProviderStatus.RequireAuth);\r\n } else {\r\n throw new ServerError(IModelStatus.ValidationFailed, \"\");\r\n }\r\n }\r\n }\r\n\r\n private getVisibleLayerString() {\r\n const layerNames = this.getVisibleLayers().map((layer)=>layer.name);\r\n return layerNames.join(\"%2C\");\r\n }\r\n\r\n private getVisibleLayers(): MapSubLayerSettings[] {\r\n return this._settings.subLayers.filter((subLayer) => this._settings.isSubLayerVisible(subLayer) && subLayer.isNamed);\r\n }\r\n\r\n private getVisibleLayersSrs() {\r\n const visibleLayers = this.getVisibleLayers();\r\n const visibleLayerNames = visibleLayers.map((layer) => layer.name);\r\n return this._capabilities?.getSubLayersCrs(visibleLayerNames);\r\n }\r\n\r\n private getQueryableLayers(): string[] {\r\n const layerNames = new Array<string>();\r\n const getQueryableSubLayers = ((subLayer: WmsCapability.SubLayer) => {\r\n if (!subLayer)\r\n return;\r\n\r\n if (subLayer.queryable)\r\n layerNames.push(subLayer.name);\r\n\r\n subLayer.children?.forEach((childSubLayer) => { getQueryableSubLayers(childSubLayer); });\r\n });\r\n this._capabilities?.layer?.subLayers?.forEach((subLayer) => { getQueryableSubLayers(subLayer); });\r\n return layerNames;\r\n }\r\n\r\n private getVisibleQueryableLayersString(): string {\r\n const layers = new Array<string>();\r\n const queryable = this.getQueryableLayers();\r\n const visibleLayerNames = this.getVisibleLayers().map((layer) => layer.name);\r\n queryable.forEach((layer: string) => { if (visibleLayerNames.includes(layer)) layers.push(layer); });\r\n return layers.join(\"%2C\");\r\n }\r\n\r\n public getCrsSupport(): WmsCrsSupport {\r\n const layersCrs = this.getVisibleLayersSrs();\r\n\r\n let support3857: boolean|undefined;\r\n let support4326: boolean|undefined;\r\n if (layersCrs) {\r\n for (const [_layerName, crs] of layersCrs) {\r\n if (crs.find((layerCrs) => {return layerCrs.includes(\"3857\");}) === undefined ) {\r\n support3857 = false;\r\n } else if (support3857 === undefined) {\r\n support3857 = true;\r\n }\r\n\r\n if (crs.find((layerCrs) => {return layerCrs.includes(\"4326\");}) === undefined ) {\r\n support4326 = false;\r\n } else if (support4326 === undefined) {\r\n support4326 = true;\r\n }\r\n }\r\n }\r\n\r\n return {support3857: support3857 ?? false, support4326: support4326 ?? false};\r\n }\r\n\r\n // construct the Url from the desired Tile\r\n public async constructUrl(row: number, column: number, zoomLevel: number): Promise<string> {\r\n\r\n let bboxString =\"\";\r\n let crsString =\"\";\r\n\r\n // We support 2 SRS: EPSG:3857 and EPSG:4326, we prefer EPSG:3857.\r\n if (this._crsSupport?.support3857) {\r\n bboxString = this.getEPSG3857ExtentString(row, column, zoomLevel);\r\n crsString= \"EPSG%3A3857\";\r\n } else if (this._crsSupport?.support4326) {\r\n // The WMS 1.3.0 specification mandates using the axis ordering as defined in the EPSG database.\r\n // For instance, for EPSG:4326 the axis ordering is latitude/longitude, or north/east.\r\n bboxString = this.getEPSG4326ExtentString(row, column, zoomLevel, true); // lat/long ordering\r\n crsString= \"EPSG%3A4326\";\r\n }\r\n\r\n const layerString = this.getVisibleLayerString();\r\n\r\n if (bboxString.length === 0 || crsString.length === 0 ||layerString.length === 0)\r\n return \"\";\r\n\r\n return `${this._baseUrl}?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=${this.transparentBackgroundString}&LAYERS=${layerString}&WIDTH=${this.tileSize}&HEIGHT=${this.tileSize}&CRS=${crsString}&STYLES=&BBOX=${bboxString}`;\r\n }\r\n\r\n public override async getToolTip(strings: string[], quadId: QuadId, carto: Cartographic, tree: ImageryMapTileTree): Promise<void> {\r\n await super.getToolTip(strings, quadId, carto, tree);\r\n const infoFormats = this._capabilities?.featureInfoFormats;\r\n if (!doToolTips || undefined === infoFormats)\r\n return;\r\n let formatString = infoFormats.find((format) => format === \"text/html\");\r\n if (!formatString) formatString = infoFormats[0];\r\n\r\n const bboxString = this.getEPSG3857ExtentString(quadId.row, quadId.column, quadId.level);\r\n const layerString = this.getVisibleQueryableLayersString();\r\n if (layerString.length === 0)\r\n return;\r\n const rectangle = tree.getTileRectangle(quadId);\r\n const fraction = rectangle.worldToLocal(Point2d.create(carto.longitude, carto.latitude, scratchPoint2d))!;\r\n const x = Math.floor(.5 + fraction.x * this.tileSize);\r\n const y = Math.floor(.5 + (1.0 - fraction.y) * this.tileSize);\r\n const coordinateString = (false && this._isVersion1_1) ? `&x=${x}&y=${y}` : `&i=${x}&j=${y}`;\r\n const getFeatureUrl = `${this._baseUrl}?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetFeatureInfo&LAYERS=${layerString}&WIDTH=${this.tileSize}&HEIGHT=${this.tileSize}&CRS=EPSG%3A3857&BBOX=${bboxString}&QUERY_LAYERS=${layerString}${coordinateString}&info_format=${formatString}`;\r\n return this.toolTipFromUrl(strings, getFeatureUrl);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"WmsMapLayerImageryProvider.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/WmsMapLayerImageryProvider.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 Tiles\r\n */\r\nimport { IModelStatus } from \"@itwin/core-bentley\";\r\nimport { Cartographic, ImageMapLayerSettings, MapSubLayerSettings, ServerError } from \"@itwin/core-common\";\r\nimport { Point2d } from \"@itwin/core-geometry\";\r\nimport {\r\n ImageryMapTileTree, MapCartoRectangle, MapLayerImageryProvider, MapLayerImageryProviderStatus, QuadId, WmsCapabilities,\r\n WmsCapability, WmsUtilities,\r\n} from \"../../internal\";\r\n\r\n// eslint-disable-next-line prefer-const\r\nlet doToolTips = true;\r\n\r\nconst scratchPoint2d = Point2d.createZero();\r\n\r\n/** @internal */\r\nexport interface WmsCrsSupport {\r\n support3857: boolean;\r\n support4326: boolean;\r\n}\r\n\r\n/** @internal */\r\nexport class WmsMapLayerImageryProvider extends MapLayerImageryProvider {\r\n private _capabilities?: WmsCapabilities;\r\n private _allLayersRange?: MapCartoRectangle;\r\n private _subLayerRanges = new Map<string, MapCartoRectangle>();\r\n private _baseUrl: string;\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private _isVersion1_1 = false;\r\n private _crsSupport: WmsCrsSupport|undefined;\r\n\r\n constructor(settings: ImageMapLayerSettings) {\r\n super(settings, false);\r\n this._baseUrl = WmsUtilities.getBaseUrl(this._settings.url);\r\n }\r\n\r\n public override async initialize(): Promise<void> {\r\n try {\r\n this._capabilities = await WmsCapabilities.create(this._baseUrl);\r\n if (undefined !== this._capabilities) {\r\n this._allLayersRange = this._capabilities.cartoRange;\r\n this._isVersion1_1 = this._capabilities.version !== undefined && 0 === this._capabilities.version.indexOf(\"1.1\");\r\n if (this._capabilities.layer && Array.isArray(this._capabilities.layer.subLayers)) {\r\n const mapCartoRanges = ((subLayer: WmsCapability.SubLayer) => {\r\n if (Array.isArray(subLayer.children))\r\n subLayer.children.forEach((child) => mapCartoRanges(child));\r\n else if (subLayer.cartoRange)\r\n this._subLayerRanges.set(subLayer.name, subLayer.cartoRange);\r\n });\r\n this._capabilities.layer.subLayers.forEach((subLayer) => mapCartoRanges(subLayer));\r\n this._settings.subLayers.forEach((subLayer) => {\r\n if (subLayer.isNamed && this._settings.isSubLayerVisible(subLayer)) {\r\n const subLayerRange = this._subLayerRanges.get(subLayer.name);\r\n if (subLayerRange)\r\n if (this.cartoRange)\r\n this.cartoRange.extendRange(subLayerRange);\r\n else\r\n this.cartoRange = subLayerRange.clone();\r\n }\r\n });\r\n }\r\n\r\n if (!this.cartoRange)\r\n this.cartoRange = this._allLayersRange;\r\n\r\n this._crsSupport = this.getCrsSupport();\r\n }\r\n } catch (error: any) {\r\n // Don't throw error if unauthorized status:\r\n // We want the tile tree to be created, so that end-user can get feedback on which layer is missing credentials.\r\n // When credentials will be provided, a new provider will be created, and initialization should be fine.\r\n if (error?.status === 401) {\r\n this.setStatus(MapLayerImageryProviderStatus.RequireAuth);\r\n } else {\r\n throw new ServerError(IModelStatus.ValidationFailed, \"\");\r\n }\r\n }\r\n }\r\n\r\n private getVisibleLayerString() {\r\n const layerNames = this.getVisibleLayers().map((layer)=>layer.name);\r\n return layerNames.join(\"%2C\");\r\n }\r\n\r\n private getVisibleLayers(): MapSubLayerSettings[] {\r\n return this._settings.subLayers.filter((subLayer) => this._settings.isSubLayerVisible(subLayer) && subLayer.isNamed);\r\n }\r\n\r\n private getVisibleLayersSrs() {\r\n const visibleLayers = this.getVisibleLayers();\r\n const visibleLayerNames = visibleLayers.map((layer) => layer.name);\r\n return this._capabilities?.getSubLayersCrs(visibleLayerNames);\r\n }\r\n\r\n private getQueryableLayers(): string[] {\r\n const layerNames = new Array<string>();\r\n const getQueryableSubLayers = ((subLayer: WmsCapability.SubLayer) => {\r\n if (!subLayer)\r\n return;\r\n\r\n if (subLayer.queryable)\r\n layerNames.push(subLayer.name);\r\n\r\n subLayer.children?.forEach((childSubLayer) => { getQueryableSubLayers(childSubLayer); });\r\n });\r\n this._capabilities?.layer?.subLayers?.forEach((subLayer) => { getQueryableSubLayers(subLayer); });\r\n return layerNames;\r\n }\r\n\r\n private getVisibleQueryableLayersString(): string {\r\n const layers = new Array<string>();\r\n const queryable = this.getQueryableLayers();\r\n const visibleLayerNames = this.getVisibleLayers().map((layer) => layer.name);\r\n queryable.forEach((layer: string) => { if (visibleLayerNames.includes(layer)) layers.push(layer); });\r\n return layers.join(\"%2C\");\r\n }\r\n\r\n public getCrsSupport(): WmsCrsSupport {\r\n const layersCrs = this.getVisibleLayersSrs();\r\n\r\n let support3857: boolean|undefined;\r\n let support4326: boolean|undefined;\r\n if (layersCrs) {\r\n for (const [_layerName, crs] of layersCrs) {\r\n if (crs.find((layerCrs) => {return layerCrs.includes(\"3857\");}) === undefined ) {\r\n support3857 = false;\r\n } else if (support3857 === undefined) {\r\n support3857 = true;\r\n }\r\n\r\n if (crs.find((layerCrs) => {return layerCrs.includes(\"4326\");}) === undefined ) {\r\n support4326 = false;\r\n } else if (support4326 === undefined) {\r\n support4326 = true;\r\n }\r\n }\r\n }\r\n\r\n return {support3857: support3857 ?? false, support4326: support4326 ?? false};\r\n }\r\n\r\n // construct the Url from the desired Tile\r\n public async constructUrl(row: number, column: number, zoomLevel: number): Promise<string> {\r\n\r\n let bboxString =\"\";\r\n let crsString =\"\";\r\n\r\n // We support 2 SRS: EPSG:3857 and EPSG:4326, we prefer EPSG:3857.\r\n if (this._crsSupport?.support3857) {\r\n bboxString = this.getEPSG3857ExtentString(row, column, zoomLevel);\r\n crsString= \"EPSG%3A3857\";\r\n } else if (this._crsSupport?.support4326) {\r\n // The WMS 1.3.0 specification mandates using the axis ordering as defined in the EPSG database.\r\n // For instance, for EPSG:4326 the axis ordering is latitude/longitude, or north/east.\r\n bboxString = this.getEPSG4326ExtentString(row, column, zoomLevel, true); // lat/long ordering\r\n crsString= \"EPSG%3A4326\";\r\n }\r\n\r\n const layerString = this.getVisibleLayerString();\r\n\r\n if (bboxString.length === 0 || crsString.length === 0 ||layerString.length === 0)\r\n return \"\";\r\n\r\n return `${this._baseUrl}?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=${this.transparentBackgroundString}&LAYERS=${layerString}&WIDTH=${this.tileSize}&HEIGHT=${this.tileSize}&CRS=${crsString}&STYLES=&BBOX=${bboxString}`;\r\n }\r\n\r\n public override async getToolTip(strings: string[], quadId: QuadId, carto: Cartographic, tree: ImageryMapTileTree): Promise<void> {\r\n await super.getToolTip(strings, quadId, carto, tree);\r\n const infoFormats = this._capabilities?.featureInfoFormats;\r\n if (!doToolTips || undefined === infoFormats)\r\n return;\r\n let formatString = infoFormats.find((format) => format === \"text/html\");\r\n if (!formatString) formatString = infoFormats[0];\r\n\r\n const bboxString = this.getEPSG3857ExtentString(quadId.row, quadId.column, quadId.level);\r\n const layerString = this.getVisibleQueryableLayersString();\r\n if (layerString.length === 0)\r\n return;\r\n const rectangle = tree.getTileRectangle(quadId);\r\n const fraction = rectangle.worldToLocal(Point2d.create(carto.longitude, carto.latitude, scratchPoint2d))!;\r\n const x = Math.floor(.5 + fraction.x * this.tileSize);\r\n const y = Math.floor(.5 + (1.0 - fraction.y) * this.tileSize);\r\n const coordinateString = (false && this._isVersion1_1) ? `&x=${x}&y=${y}` : `&i=${x}&j=${y}`;\r\n const getFeatureUrl = `${this._baseUrl}?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetFeatureInfo&LAYERS=${layerString}&WIDTH=${this.tileSize}&HEIGHT=${this.tileSize}&CRS=EPSG%3A3857&BBOX=${bboxString}&QUERY_LAYERS=${layerString}${coordinateString}&info_format=${formatString}`;\r\n return this.toolTipFromUrl(strings, getFeatureUrl);\r\n }\r\n}\r\n"]}