@itwin/core-frontend 3.3.0-dev.4 → 3.3.0-dev.40

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 (218) hide show
  1. package/CHANGELOG.md +49 -1
  2. package/lib/cjs/AccuSnap.d.ts.map +1 -1
  3. package/lib/cjs/AccuSnap.js +56 -49
  4. package/lib/cjs/AccuSnap.js.map +1 -1
  5. package/lib/cjs/DisplayStyleState.d.ts +68 -17
  6. package/lib/cjs/DisplayStyleState.d.ts.map +1 -1
  7. package/lib/cjs/DisplayStyleState.js +66 -20
  8. package/lib/cjs/DisplayStyleState.js.map +1 -1
  9. package/lib/cjs/IModelApp.d.ts.map +1 -1
  10. package/lib/cjs/IModelApp.js +1 -1
  11. package/lib/cjs/IModelApp.js.map +1 -1
  12. package/lib/cjs/TentativePoint.js +1 -1
  13. package/lib/cjs/TentativePoint.js.map +1 -1
  14. package/lib/cjs/ViewRect.d.ts +5 -3
  15. package/lib/cjs/ViewRect.d.ts.map +1 -1
  16. package/lib/cjs/ViewRect.js +11 -7
  17. package/lib/cjs/ViewRect.js.map +1 -1
  18. package/lib/cjs/Viewport.d.ts +1 -1
  19. package/lib/cjs/Viewport.d.ts.map +1 -1
  20. package/lib/cjs/Viewport.js +2 -2
  21. package/lib/cjs/Viewport.js.map +1 -1
  22. package/lib/cjs/extension/ExtensionAdmin.d.ts +5 -2
  23. package/lib/cjs/extension/ExtensionAdmin.d.ts.map +1 -1
  24. package/lib/cjs/extension/ExtensionAdmin.js +24 -6
  25. package/lib/cjs/extension/ExtensionAdmin.js.map +1 -1
  26. package/lib/cjs/extension/ExtensionRuntime.js +165 -158
  27. package/lib/cjs/extension/ExtensionRuntime.js.map +1 -1
  28. package/lib/cjs/extension/providers/ExtensionServiceClient.d.ts +8 -6
  29. package/lib/cjs/extension/providers/ExtensionServiceClient.d.ts.map +1 -1
  30. package/lib/cjs/extension/providers/ExtensionServiceClient.js +13 -6
  31. package/lib/cjs/extension/providers/ExtensionServiceClient.js.map +1 -1
  32. package/lib/cjs/extension/providers/RemoteExtensionProvider.d.ts +0 -2
  33. package/lib/cjs/extension/providers/RemoteExtensionProvider.d.ts.map +1 -1
  34. package/lib/cjs/extension/providers/RemoteExtensionProvider.js +9 -22
  35. package/lib/cjs/extension/providers/RemoteExtensionProvider.js.map +1 -1
  36. package/lib/cjs/extension/providers/ServiceExtensionProvider.d.ts +7 -6
  37. package/lib/cjs/extension/providers/ServiceExtensionProvider.d.ts.map +1 -1
  38. package/lib/cjs/extension/providers/ServiceExtensionProvider.js +13 -24
  39. package/lib/cjs/extension/providers/ServiceExtensionProvider.js.map +1 -1
  40. package/lib/cjs/render/RenderSystem.d.ts +5 -0
  41. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  42. package/lib/cjs/render/RenderSystem.js.map +1 -1
  43. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
  44. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js +3 -1
  45. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  46. package/lib/cjs/render/webgl/ShaderProgram.js +1 -1
  47. package/lib/cjs/render/webgl/ShaderProgram.js.map +1 -1
  48. package/lib/cjs/render/webgl/Target.d.ts +1 -1
  49. package/lib/cjs/render/webgl/Target.js +2 -2
  50. package/lib/cjs/render/webgl/Target.js.map +1 -1
  51. package/lib/cjs/render/webgl/UniformHandle.d.ts +2 -1
  52. package/lib/cjs/render/webgl/UniformHandle.d.ts.map +1 -1
  53. package/lib/cjs/render/webgl/UniformHandle.js +15 -3
  54. package/lib/cjs/render/webgl/UniformHandle.js.map +1 -1
  55. package/lib/cjs/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  56. package/lib/cjs/render/webgl/glsl/RealityMesh.js +5 -2
  57. package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
  58. package/lib/cjs/tile/RealityModelTileTree.d.ts.map +1 -1
  59. package/lib/cjs/tile/RealityModelTileTree.js +2 -1
  60. package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
  61. package/lib/cjs/tile/map/CesiumTerrainProvider.js +6 -2
  62. package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
  63. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +1 -1
  64. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  65. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +51 -4
  66. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  67. package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts +1 -1
  68. package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts.map +1 -1
  69. package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js +5 -2
  70. package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
  71. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.d.ts +1 -1
  72. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
  73. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js +2 -2
  74. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  75. package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts +1 -1
  76. package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts.map +1 -1
  77. package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js +5 -2
  78. package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
  79. package/lib/cjs/tile/map/ImageryTileTree.d.ts +2 -2
  80. package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
  81. package/lib/cjs/tile/map/ImageryTileTree.js +6 -2
  82. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  83. package/lib/cjs/tile/map/MapCartoRectangle.d.ts +1 -0
  84. package/lib/cjs/tile/map/MapCartoRectangle.d.ts.map +1 -1
  85. package/lib/cjs/tile/map/MapCartoRectangle.js +1 -0
  86. package/lib/cjs/tile/map/MapCartoRectangle.js.map +1 -1
  87. package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts +2 -1
  88. package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
  89. package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
  90. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +3 -1
  91. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  92. package/lib/cjs/tile/map/MapLayerImageryProvider.js +24 -10
  93. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  94. package/lib/cjs/tile/map/MapLayerSources.d.ts +14 -9
  95. package/lib/cjs/tile/map/MapLayerSources.d.ts.map +1 -1
  96. package/lib/cjs/tile/map/MapLayerSources.js +14 -6
  97. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  98. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  99. package/lib/cjs/tile/map/MapTileTree.js +3 -5
  100. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  101. package/lib/cjs/tile/map/TerrainMeshProvider.d.ts +2 -1
  102. package/lib/cjs/tile/map/TerrainMeshProvider.d.ts.map +1 -1
  103. package/lib/cjs/tile/map/TerrainMeshProvider.js +1 -1
  104. package/lib/cjs/tile/map/TerrainMeshProvider.js.map +1 -1
  105. package/lib/cjs/tools/PrimitiveTool.js +4 -4
  106. package/lib/cjs/tools/PrimitiveTool.js.map +1 -1
  107. package/lib/cjs/tools/ToolAdmin.d.ts.map +1 -1
  108. package/lib/cjs/tools/ToolAdmin.js +25 -10
  109. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  110. package/lib/esm/AccuSnap.d.ts.map +1 -1
  111. package/lib/esm/AccuSnap.js +56 -49
  112. package/lib/esm/AccuSnap.js.map +1 -1
  113. package/lib/esm/DisplayStyleState.d.ts +68 -17
  114. package/lib/esm/DisplayStyleState.d.ts.map +1 -1
  115. package/lib/esm/DisplayStyleState.js +66 -20
  116. package/lib/esm/DisplayStyleState.js.map +1 -1
  117. package/lib/esm/IModelApp.d.ts.map +1 -1
  118. package/lib/esm/IModelApp.js +2 -2
  119. package/lib/esm/IModelApp.js.map +1 -1
  120. package/lib/esm/TentativePoint.js +1 -1
  121. package/lib/esm/TentativePoint.js.map +1 -1
  122. package/lib/esm/ViewRect.d.ts +5 -3
  123. package/lib/esm/ViewRect.d.ts.map +1 -1
  124. package/lib/esm/ViewRect.js +11 -7
  125. package/lib/esm/ViewRect.js.map +1 -1
  126. package/lib/esm/Viewport.d.ts +1 -1
  127. package/lib/esm/Viewport.d.ts.map +1 -1
  128. package/lib/esm/Viewport.js +2 -2
  129. package/lib/esm/Viewport.js.map +1 -1
  130. package/lib/esm/extension/ExtensionAdmin.d.ts +5 -2
  131. package/lib/esm/extension/ExtensionAdmin.d.ts.map +1 -1
  132. package/lib/esm/extension/ExtensionAdmin.js +24 -6
  133. package/lib/esm/extension/ExtensionAdmin.js.map +1 -1
  134. package/lib/esm/extension/ExtensionRuntime.js +168 -161
  135. package/lib/esm/extension/ExtensionRuntime.js.map +1 -1
  136. package/lib/esm/extension/providers/ExtensionServiceClient.d.ts +8 -6
  137. package/lib/esm/extension/providers/ExtensionServiceClient.d.ts.map +1 -1
  138. package/lib/esm/extension/providers/ExtensionServiceClient.js +13 -6
  139. package/lib/esm/extension/providers/ExtensionServiceClient.js.map +1 -1
  140. package/lib/esm/extension/providers/RemoteExtensionProvider.d.ts +0 -2
  141. package/lib/esm/extension/providers/RemoteExtensionProvider.d.ts.map +1 -1
  142. package/lib/esm/extension/providers/RemoteExtensionProvider.js +9 -22
  143. package/lib/esm/extension/providers/RemoteExtensionProvider.js.map +1 -1
  144. package/lib/esm/extension/providers/ServiceExtensionProvider.d.ts +7 -6
  145. package/lib/esm/extension/providers/ServiceExtensionProvider.d.ts.map +1 -1
  146. package/lib/esm/extension/providers/ServiceExtensionProvider.js +13 -24
  147. package/lib/esm/extension/providers/ServiceExtensionProvider.js.map +1 -1
  148. package/lib/esm/render/RenderSystem.d.ts +5 -0
  149. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  150. package/lib/esm/render/RenderSystem.js.map +1 -1
  151. package/lib/esm/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
  152. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js +3 -1
  153. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  154. package/lib/esm/render/webgl/ShaderProgram.js +1 -1
  155. package/lib/esm/render/webgl/ShaderProgram.js.map +1 -1
  156. package/lib/esm/render/webgl/Target.d.ts +1 -1
  157. package/lib/esm/render/webgl/Target.js +2 -2
  158. package/lib/esm/render/webgl/Target.js.map +1 -1
  159. package/lib/esm/render/webgl/UniformHandle.d.ts +2 -1
  160. package/lib/esm/render/webgl/UniformHandle.d.ts.map +1 -1
  161. package/lib/esm/render/webgl/UniformHandle.js +15 -3
  162. package/lib/esm/render/webgl/UniformHandle.js.map +1 -1
  163. package/lib/esm/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  164. package/lib/esm/render/webgl/glsl/RealityMesh.js +5 -2
  165. package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
  166. package/lib/esm/tile/RealityModelTileTree.d.ts.map +1 -1
  167. package/lib/esm/tile/RealityModelTileTree.js +2 -1
  168. package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
  169. package/lib/esm/tile/map/CesiumTerrainProvider.js +6 -2
  170. package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
  171. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +1 -1
  172. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  173. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +51 -4
  174. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  175. package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts +1 -1
  176. package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts.map +1 -1
  177. package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js +5 -2
  178. package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
  179. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.d.ts +1 -1
  180. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
  181. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js +2 -2
  182. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  183. package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts +1 -1
  184. package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts.map +1 -1
  185. package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js +5 -2
  186. package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
  187. package/lib/esm/tile/map/ImageryTileTree.d.ts +2 -2
  188. package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
  189. package/lib/esm/tile/map/ImageryTileTree.js +6 -2
  190. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  191. package/lib/esm/tile/map/MapCartoRectangle.d.ts +1 -0
  192. package/lib/esm/tile/map/MapCartoRectangle.d.ts.map +1 -1
  193. package/lib/esm/tile/map/MapCartoRectangle.js +1 -0
  194. package/lib/esm/tile/map/MapCartoRectangle.js.map +1 -1
  195. package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts +2 -1
  196. package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
  197. package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
  198. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +3 -1
  199. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  200. package/lib/esm/tile/map/MapLayerImageryProvider.js +25 -11
  201. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  202. package/lib/esm/tile/map/MapLayerSources.d.ts +14 -9
  203. package/lib/esm/tile/map/MapLayerSources.d.ts.map +1 -1
  204. package/lib/esm/tile/map/MapLayerSources.js +14 -6
  205. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  206. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  207. package/lib/esm/tile/map/MapTileTree.js +3 -5
  208. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  209. package/lib/esm/tile/map/TerrainMeshProvider.d.ts +2 -1
  210. package/lib/esm/tile/map/TerrainMeshProvider.d.ts.map +1 -1
  211. package/lib/esm/tile/map/TerrainMeshProvider.js +1 -1
  212. package/lib/esm/tile/map/TerrainMeshProvider.js.map +1 -1
  213. package/lib/esm/tools/PrimitiveTool.js +4 -4
  214. package/lib/esm/tools/PrimitiveTool.js.map +1 -1
  215. package/lib/esm/tools/ToolAdmin.d.ts.map +1 -1
  216. package/lib/esm/tools/ToolAdmin.js +25 -10
  217. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  218. package/package.json +21 -21
@@ -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 { 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
+ {"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 addLogoCards(cards: HTMLTableElement, vp: ScreenViewport): void {\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\r\n cards.appendChild(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"]}
@@ -16,7 +16,7 @@ export declare class MapBoxLayerImageryProvider extends MapLayerImageryProvider
16
16
  get minimumZoomLevel(): number;
17
17
  get maximumZoomLevel(): number;
18
18
  constructUrl(row: number, column: number, zoomLevel: number): Promise<string>;
19
- getLogo(): HTMLTableRowElement | undefined;
19
+ addLogoCards(cards: HTMLTableElement): void;
20
20
  initialize(): Promise<void>;
21
21
  }
22
22
  //# sourceMappingURL=MapBoxLayerImageryProvider.d.ts.map
@@ -1 +1 @@
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"}
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,YAAY,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAQrC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAClD"}
@@ -36,8 +36,11 @@ class MapBoxLayerImageryProvider extends internal_1.MapLayerImageryProvider {
36
36
  url = url.concat(`?${this._settings.accessKey.key}=${this._settings.accessKey.value}`);
37
37
  return url;
38
38
  }
39
- getLogo() {
40
- return IModelApp_1.IModelApp.makeLogoCard({ heading: "Mapbox", notice: IModelApp_1.IModelApp.localization.getLocalizedString("iModelJs:BackgroundMap.MapBoxCopyright") });
39
+ addLogoCards(cards) {
40
+ if (!cards.dataset.mapboxLogoCard) {
41
+ cards.dataset.mapboxLogoCard = "true";
42
+ cards.appendChild(IModelApp_1.IModelApp.makeLogoCard({ heading: "Mapbox", notice: IModelApp_1.IModelApp.localization.getLocalizedString("iModelJs:BackgroundMap.MapBoxCopyright") }));
43
+ }
41
44
  }
42
45
  // no initialization needed for MapBoxImageryProvider.
43
46
  async initialize() { }
@@ -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,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
+ {"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,YAAY,CAAC,KAAuB;QAClD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE;YACjC,KAAK,CAAC,OAAO,CAAC,cAAc,GAAG,MAAM,CAAC;YACtC,KAAK,CAAC,WAAW,CAAC,qBAAS,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,qBAAS,CAAC,YAAY,CAAC,kBAAkB,CAAC,wCAAwC,CAAC,EAAE,CAAC,CAAC,CAAC;SAC/J;IACH,CAAC;IAED,sDAAsD;IACtC,KAAK,CAAC,UAAU,KAAoB,CAAC;CACtD;AAxCD,gEAwCC","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 addLogoCards(cards: HTMLTableElement): void {\r\n if (!cards.dataset.mapboxLogoCard) {\r\n cards.dataset.mapboxLogoCard = \"true\";\r\n cards.appendChild(IModelApp.makeLogoCard({ heading: \"Mapbox\", notice: IModelApp.localization.getLocalizedString(\"iModelJs:BackgroundMap.MapBoxCopyright\") }));\r\n }\r\n }\r\n\r\n // no initialization needed for MapBoxImageryProvider.\r\n public override async initialize(): Promise<void> { }\r\n}\r\n"]}
@@ -40,7 +40,7 @@ export declare class ImageryMapTileTree extends RealityTileTree {
40
40
  private _imageryLoader;
41
41
  constructor(params: RealityTileTreeParams, _imageryLoader: ImageryTileLoader);
42
42
  get tilingScheme(): MapTilingScheme;
43
- getLogo(vp: ScreenViewport): HTMLTableRowElement | undefined;
43
+ addLogoCards(cards: HTMLTableElement, vp: ScreenViewport): void;
44
44
  getTileRectangle(quadId: QuadId): MapCartoRectangle;
45
45
  get imageryLoader(): ImageryTileLoader;
46
46
  get is3d(): boolean;
@@ -61,7 +61,7 @@ declare class ImageryTileLoader extends RealityTileLoader {
61
61
  get maxDepth(): number;
62
62
  get minDepth(): number;
63
63
  get priority(): TileLoadPriority;
64
- getLogo(vp: ScreenViewport): HTMLTableRowElement | undefined;
64
+ addLogoCards(cards: HTMLTableElement, vp: ScreenViewport): void;
65
65
  get maximumScreenSize(): number;
66
66
  get imageryProvider(): MapLayerImageryProvider;
67
67
  getToolTip(strings: string[], quadId: QuadId, carto: Cartographic, tree: ImageryMapTileTree): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"ImageryTileTree.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/ImageryTileTree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ImageryTileTree.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/ImageryTileTree.ts"],"names":[],"mappings":"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"}
@@ -121,7 +121,9 @@ class ImageryMapTileTree extends internal_1.RealityTileTree {
121
121
  this._rootTile = new ImageryMapTile(params.rootTile, this, rootQuadId, this.getTileRectangle(rootQuadId));
122
122
  }
123
123
  get tilingScheme() { return this._imageryLoader.imageryProvider.tilingScheme; }
124
- getLogo(vp) { return this._imageryLoader.getLogo(vp); }
124
+ addLogoCards(cards, vp) {
125
+ this._imageryLoader.addLogoCards(cards, vp);
126
+ }
125
127
  getTileRectangle(quadId) {
126
128
  return this.tilingScheme.tileXYToRectangle(quadId.column, quadId.row, quadId.level);
127
129
  }
@@ -155,7 +157,9 @@ class ImageryTileLoader extends internal_1.RealityTileLoader {
155
157
  get maxDepth() { return this._imageryProvider.maximumZoomLevel; }
156
158
  get minDepth() { return this._imageryProvider.minimumZoomLevel; }
157
159
  get priority() { return internal_1.TileLoadPriority.Map; }
158
- getLogo(vp) { return this._imageryProvider.getLogo(vp); }
160
+ addLogoCards(cards, vp) {
161
+ this._imageryProvider.addLogoCards(cards, vp);
162
+ }
159
163
  get maximumScreenSize() { return this._imageryProvider.maximumScreenSize; }
160
164
  get imageryProvider() { return this._imageryProvider; }
161
165
  async getToolTip(strings, quadId, carto, tree) { await this._imageryProvider.getToolTip(strings, quadId, carto, tree); }
@@ -1 +1 @@
1
- {"version":3,"file":"ImageryTileTree.js","sourceRoot":"","sources":["../../../../src/tile/map/ImageryTileTree.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, compareBooleans, compareNumbers, compareStrings, compareStringsOrUndefined, dispose } from \"@itwin/core-bentley\";\r\nimport { Angle, Range3d, Transform } from \"@itwin/core-geometry\";\r\nimport { Cartographic, ImageMapLayerSettings, ImageSource, MapLayerSettings, RenderTexture, ViewFlagOverrides } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../../IModelApp\";\r\nimport { IModelConnection } from \"../../IModelConnection\";\r\nimport { RenderMemory } from \"../../render/RenderMemory\";\r\nimport { RenderSystem } from \"../../render/RenderSystem\";\r\nimport { ScreenViewport } from \"../../Viewport\";\r\nimport {\r\n MapCartoRectangle, MapLayerFeatureInfo, MapLayerImageryProvider, MapLayerTileTreeReference, MapTile, MapTilingScheme, QuadId, RealityTile, RealityTileLoader, RealityTileTree,\r\n RealityTileTreeParams, Tile, TileContent, TileDrawArgs, TileLoadPriority, TileParams, TileRequest, TileTree, TileTreeLoadStatus, TileTreeOwner,\r\n TileTreeSupplier,\r\n} from \"../internal\";\r\n\r\n/** @internal */\r\nexport interface ImageryTileContent extends TileContent {\r\n imageryTexture?: RenderTexture;\r\n}\r\n\r\n/** @internal */\r\nexport class ImageryMapTile extends RealityTile {\r\n private _texture?: RenderTexture;\r\n private _mapTileUsageCount = 0;\r\n constructor(params: TileParams, public imageryTree: ImageryMapTileTree, public quadId: QuadId, public rectangle: MapCartoRectangle) {\r\n super(params, imageryTree);\r\n }\r\n public get texture() { return this._texture; }\r\n public get tilingScheme() { return this.imageryTree.tilingScheme; }\r\n public override get isDisplayable() { return (this.depth > 1) && super.isDisplayable; }\r\n\r\n public override setContent(content: ImageryTileContent): void {\r\n this._texture = content.imageryTexture; // No dispose - textures may be shared by terrain tiles so let garbage collector dispose them.\r\n if (undefined === content.imageryTexture)\r\n (this.parent! as ImageryMapTile).setLeaf(); // Avoid traversing bing branches after no graphics is found.\r\n\r\n this.setIsReady();\r\n }\r\n\r\n public selectCartoDrapeTiles(drapeTiles: ImageryMapTile[], rectangleToDrape: MapCartoRectangle, drapePixelSize: number, args: TileDrawArgs): TileTreeLoadStatus {\r\n // Base draping overlap on width rather than height so that tiling schemes with multiple root nodes overlay correctly.\r\n if (this.isLeaf || (this.rectangle.xLength() / this.maximumSize) < drapePixelSize || this._anyChildNotFound) {\r\n if (this.isDisplayable && !this.isNotFound)\r\n drapeTiles.push(this);\r\n return TileTreeLoadStatus.Loaded;\r\n }\r\n\r\n let status = this.loadChildren();\r\n if (TileTreeLoadStatus.Loading === status) {\r\n args.markChildrenLoading();\r\n } else if (TileTreeLoadStatus.Loaded === status) {\r\n if (undefined !== this.children) {\r\n for (const child of this.children) {\r\n const mapChild = child as ImageryMapTile;\r\n if (mapChild.rectangle.intersectsRange(rectangleToDrape))\r\n status = mapChild.selectCartoDrapeTiles(drapeTiles, rectangleToDrape, drapePixelSize, args);\r\n if (TileTreeLoadStatus.Loaded !== status)\r\n break;\r\n }\r\n }\r\n }\r\n return status;\r\n }\r\n public markMapTileUsage() {\r\n this._mapTileUsageCount++;\r\n }\r\n public releaseMapTileUsage() {\r\n assert(!this._texture || this._mapTileUsageCount > 0);\r\n if (this._mapTileUsageCount)\r\n this._mapTileUsageCount--;\r\n }\r\n\r\n /** @internal */\r\n public override setLeaf(): void {\r\n // Don't potentially re-request the children later.\r\n this.disposeChildren();\r\n this._isLeaf = true;\r\n this._childrenLoadStatus = TileTreeLoadStatus.Loaded;\r\n }\r\n\r\n protected override _loadChildren(resolve: (children: Tile[] | undefined) => void, _reject: (error: Error) => void): void {\r\n\r\n const imageryTree = this.imageryTree;\r\n const resolveChildren = (childIds: QuadId[]) => {\r\n const children = new Array<Tile>();\r\n const childrenAreLeaves = (this.depth + 1) === imageryTree.maxDepth;\r\n // If children depth is lower than min LOD, mark them as disabled.\r\n // This is important: if those tiles are requested and the server refuse to serve them,\r\n // they will be marked as not found and their descendant will never be displayed.\r\n const childrenAreDisabled = (this.depth + 1) < imageryTree.minDepth;\r\n\r\n childIds.forEach((quadId) => {\r\n const rectangle = imageryTree.tilingScheme.tileXYToRectangle(quadId.column, quadId.row, quadId.level);\r\n const range = Range3d.createXYZXYZ(rectangle.low.x, rectangle.low.x, 0, rectangle.high.x, rectangle.high.y, 0);\r\n const maximumSize = (childrenAreDisabled ? 0 : imageryTree.imageryLoader.maximumScreenSize);\r\n children.push(new ImageryMapTile({ parent: this, isLeaf: childrenAreLeaves, contentId: quadId.contentId, range, maximumSize }, imageryTree, quadId, rectangle));\r\n });\r\n\r\n resolve(children);\r\n };\r\n\r\n imageryTree.imageryLoader.generateChildIds(this, resolveChildren);\r\n }\r\n\r\n protected override _collectStatistics(stats: RenderMemory.Statistics): void {\r\n super._collectStatistics(stats);\r\n if (this._texture)\r\n stats.addTexture(this._texture.bytesUsed);\r\n }\r\n\r\n public override freeMemory(): void {\r\n // ###TODO MapTiles and ImageryMapTiles share resources and don't currently interact well with TileAdmin.freeMemory(). Opt out for now.\r\n }\r\n\r\n public override disposeContents() {\r\n if (0 === this._mapTileUsageCount) {\r\n super.disposeContents();\r\n this.disposeTexture();\r\n }\r\n }\r\n\r\n private disposeTexture(): void {\r\n this._texture = dispose(this._texture);\r\n }\r\n public override dispose() {\r\n this._mapTileUsageCount = 0;\r\n super.dispose();\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ImageryMapTileTree extends RealityTileTree {\r\n constructor(params: RealityTileTreeParams, private _imageryLoader: ImageryTileLoader) {\r\n super(params);\r\n const rootQuadId = new QuadId(_imageryLoader.imageryProvider.tilingScheme.rootLevel, 0, 0);\r\n this._rootTile = new ImageryMapTile(params.rootTile, this, rootQuadId, this.getTileRectangle(rootQuadId));\r\n }\r\n public get tilingScheme(): MapTilingScheme { return this._imageryLoader.imageryProvider.tilingScheme; }\r\n public getLogo(vp: ScreenViewport): HTMLTableRowElement | undefined { return this._imageryLoader.getLogo(vp); }\r\n public getTileRectangle(quadId: QuadId): MapCartoRectangle {\r\n return this.tilingScheme.tileXYToRectangle(quadId.column, quadId.row, quadId.level);\r\n }\r\n public get imageryLoader(): ImageryTileLoader { return this._imageryLoader; }\r\n public override get is3d(): boolean { assert(false); return false; }\r\n public override get viewFlagOverrides(): ViewFlagOverrides { assert(false); return {}; }\r\n public override get isContentUnbounded(): boolean { assert(false); return true; }\r\n protected override _selectTiles(_args: TileDrawArgs): Tile[] { assert(false); return []; }\r\n public override draw(_args: TileDrawArgs): void { assert(false); }\r\n\r\n private static _scratchDrapeRectangle = new MapCartoRectangle();\r\n private static _drapeIntersectionScale = 1.0 - 1.0E-5;\r\n\r\n public selectCartoDrapeTiles(drapeTiles: ImageryMapTile[], tileToDrape: MapTile, args: TileDrawArgs): TileTreeLoadStatus {\r\n const drapeRectangle = tileToDrape.rectangle.clone(ImageryMapTileTree._scratchDrapeRectangle);\r\n // Base draping overlap on width rather than height so that tiling schemes with multiple root nodes overlay correctly.\r\n const drapePixelSize = 1.05 * tileToDrape.rectangle.xLength() / tileToDrape.maximumSize;\r\n drapeRectangle.scaleAboutCenterInPlace(ImageryMapTileTree._drapeIntersectionScale); // Contract slightly to avoid draping adjacent or slivers.\r\n return (this.rootTile as ImageryMapTile).selectCartoDrapeTiles(drapeTiles, drapeRectangle, drapePixelSize, args);\r\n }\r\n public cartoRectangleFromQuadId(quadId: QuadId): MapCartoRectangle { return this.tilingScheme.tileXYToRectangle(quadId.column, quadId.row, quadId.level); }\r\n}\r\n\r\nclass ImageryTileLoader extends RealityTileLoader {\r\n constructor(private _imageryProvider: MapLayerImageryProvider, private _iModel: IModelConnection) {\r\n super();\r\n }\r\n public override computeTilePriority(tile: Tile): number {\r\n return 25 * (this._imageryProvider.usesCachedTiles ? 2 : 1) - tile.depth; // Always cached first then descending by depth (high resolution/front first)\r\n } // Prioritized fast, cached tiles first.\r\n\r\n public get maxDepth(): number { return this._imageryProvider.maximumZoomLevel; }\r\n public get minDepth(): number { return this._imageryProvider.minimumZoomLevel; }\r\n public get priority(): TileLoadPriority { return TileLoadPriority.Map; }\r\n public getLogo(vp: ScreenViewport): HTMLTableRowElement | undefined { return this._imageryProvider.getLogo(vp); }\r\n public get maximumScreenSize(): number { return this._imageryProvider.maximumScreenSize; }\r\n public get imageryProvider(): MapLayerImageryProvider { return this._imageryProvider; }\r\n public async getToolTip(strings: string[], quadId: QuadId, carto: Cartographic, tree: ImageryMapTileTree): Promise<void> { await this._imageryProvider.getToolTip(strings, quadId, carto, tree); }\r\n\r\n public async getMapFeatureInfo(featureInfos: MapLayerFeatureInfo[], quadId: QuadId, carto: Cartographic, tree: ImageryMapTileTree): Promise<void> {\r\n await this._imageryProvider.getFeatureInfo(featureInfos, quadId, carto, tree);\r\n }\r\n\r\n public generateChildIds(tile: ImageryMapTile, resolveChildren: (childIds: QuadId[]) => void) { return this._imageryProvider.generateChildIds(tile, resolveChildren); }\r\n\r\n /** Load this tile's children, possibly asynchronously. Pass them to `resolve`, or an error to `reject`. */\r\n public async loadChildren(_tile: RealityTile): Promise<Tile[] | undefined> { assert(false); return undefined; }\r\n public async requestTileContent(tile: Tile, _isCanceled: () => boolean): Promise<TileRequest.Response> {\r\n const quadId = QuadId.createFromContentId(tile.contentId);\r\n return this._imageryProvider.loadTile(quadId.row, quadId.column, quadId.level);\r\n }\r\n\r\n public getRequestChannel(_tile: Tile) {\r\n // ###TODO use hostname from url - but so many layers to go through to get that...\r\n return IModelApp.tileAdmin.channels.getForHttp(\"itwinjs-imagery\");\r\n }\r\n\r\n public override async loadTileContent(tile: Tile, data: TileRequest.ResponseData, system: RenderSystem): Promise<ImageryTileContent> {\r\n assert(data instanceof ImageSource);\r\n assert(tile instanceof ImageryMapTile);\r\n const content: ImageryTileContent = {};\r\n const texture = await this.loadTextureImage(data, system);\r\n if (undefined === texture)\r\n return content;\r\n\r\n content.imageryTexture = texture;\r\n return content;\r\n }\r\n\r\n private async loadTextureImage(source: ImageSource, system: RenderSystem): Promise<RenderTexture | undefined> {\r\n try {\r\n return await system.createTextureFromSource({\r\n type: RenderTexture.Type.FilteredTileSection,\r\n source,\r\n });\r\n } catch {\r\n return undefined;\r\n }\r\n }\r\n}\r\n\r\ninterface ImageryMapLayerTreeId {\r\n settings: ImageMapLayerSettings;\r\n}\r\n\r\n/** Supplies a TileTree that can load and draw tiles based on our imagery provider.\r\n * The TileTree is uniquely identified by its imagery type.\r\n */\r\nclass ImageryMapLayerTreeSupplier implements TileTreeSupplier {\r\n /** Return a numeric value indicating how two tree IDs are ordered relative to one another.\r\n * This allows the ID to serve as a lookup key to find the corresponding TileTree.\r\n */\r\n public compareTileTreeIds(lhs: ImageryMapLayerTreeId, rhs: ImageryMapLayerTreeId): number {\r\n let cmp = compareStrings(lhs.settings.url, rhs.settings.url);\r\n if (0 === cmp) {\r\n cmp = compareStringsOrUndefined(lhs.settings.userName, rhs.settings.userName);\r\n if (0 === cmp) {\r\n cmp = compareStringsOrUndefined(lhs.settings.password, rhs.settings.password);\r\n if (0 === cmp) {\r\n cmp = compareBooleans(lhs.settings.transparentBackground, rhs.settings.transparentBackground);\r\n if (0 === cmp) {\r\n cmp = compareNumbers(lhs.settings.subLayers.length, rhs.settings.subLayers.length);\r\n if (0 === cmp) {\r\n for (let i = 0; i < lhs.settings.subLayers.length && 0 === cmp; i++)\r\n cmp = compareBooleans(lhs.settings.subLayers[i].visible, rhs.settings.subLayers[i].visible);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n /** The first time a tree of a particular imagery type is requested, this function creates it. */\r\n public async createTileTree(id: ImageryMapLayerTreeId, iModel: IModelConnection): Promise<TileTree | undefined> {\r\n const imageryProvider = IModelApp.mapLayerFormatRegistry.createImageryProvider(id.settings);\r\n if (undefined === imageryProvider)\r\n return undefined;\r\n\r\n await imageryProvider.initialize();\r\n const modelId = iModel.transientIds.next;\r\n const tilingScheme = imageryProvider.tilingScheme;\r\n const rootLevel = (1 === tilingScheme.numberOfLevelZeroTilesX && 1 === tilingScheme.numberOfLevelZeroTilesY) ? 0 : -1;\r\n const rootTileId = new QuadId(rootLevel, 0, 0).contentId;\r\n const rootRange = Range3d.createXYZXYZ(-Angle.piRadians, -Angle.piOver2Radians, 0, Angle.piRadians, Angle.piOver2Radians, 0);\r\n const rootTileProps = { contentId: rootTileId, range: rootRange, maximumSize: 0 };\r\n const loader = new ImageryTileLoader(imageryProvider, iModel);\r\n const treeProps = { rootTile: rootTileProps, id: modelId, modelId, iModel, location: Transform.createIdentity(), priority: TileLoadPriority.Map, loader, gcsConverterAvailable: false };\r\n return new ImageryMapTileTree(treeProps, loader);\r\n }\r\n}\r\n\r\nconst imageryTreeSupplier = new ImageryMapLayerTreeSupplier();\r\n\r\n/** A reference to one of our tile trees. The specific TileTree drawn may change when the desired imagery type or target iModel changes.\r\n * @internal\r\n */\r\nexport class ImageryMapLayerTreeReference extends MapLayerTileTreeReference {\r\n public constructor(layerSettings: MapLayerSettings, layerIndex: number, iModel: IModelConnection) {\r\n super(layerSettings, layerIndex, iModel);\r\n }\r\n\r\n public override get castsShadows() { return false; }\r\n\r\n /** Return the owner of the TileTree to draw. */\r\n public get treeOwner(): TileTreeOwner {\r\n return this.iModel.tiles.getTileTreeOwner({ settings: this._layerSettings }, imageryTreeSupplier);\r\n }\r\n public override get imageryProvider(): MapLayerImageryProvider | undefined {\r\n const tree = this.treeOwner.load();\r\n if (!tree || !(tree instanceof ImageryMapTileTree))\r\n return undefined;\r\n\r\n return tree.imageryLoader.imageryProvider;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ImageryTileTree.js","sourceRoot":"","sources":["../../../../src/tile/map/ImageryTileTree.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, compareBooleans, compareNumbers, compareStrings, compareStringsOrUndefined, dispose } from \"@itwin/core-bentley\";\r\nimport { Angle, Range3d, Transform } from \"@itwin/core-geometry\";\r\nimport { Cartographic, ImageMapLayerSettings, ImageSource, MapLayerSettings, RenderTexture, ViewFlagOverrides } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../../IModelApp\";\r\nimport { IModelConnection } from \"../../IModelConnection\";\r\nimport { RenderMemory } from \"../../render/RenderMemory\";\r\nimport { RenderSystem } from \"../../render/RenderSystem\";\r\nimport { ScreenViewport } from \"../../Viewport\";\r\nimport {\r\n MapCartoRectangle, MapLayerFeatureInfo, MapLayerImageryProvider, MapLayerTileTreeReference, MapTile, MapTilingScheme, QuadId, RealityTile, RealityTileLoader, RealityTileTree,\r\n RealityTileTreeParams, Tile, TileContent, TileDrawArgs, TileLoadPriority, TileParams, TileRequest, TileTree, TileTreeLoadStatus, TileTreeOwner,\r\n TileTreeSupplier,\r\n} from \"../internal\";\r\n\r\n/** @internal */\r\nexport interface ImageryTileContent extends TileContent {\r\n imageryTexture?: RenderTexture;\r\n}\r\n\r\n/** @internal */\r\nexport class ImageryMapTile extends RealityTile {\r\n private _texture?: RenderTexture;\r\n private _mapTileUsageCount = 0;\r\n constructor(params: TileParams, public imageryTree: ImageryMapTileTree, public quadId: QuadId, public rectangle: MapCartoRectangle) {\r\n super(params, imageryTree);\r\n }\r\n public get texture() { return this._texture; }\r\n public get tilingScheme() { return this.imageryTree.tilingScheme; }\r\n public override get isDisplayable() { return (this.depth > 1) && super.isDisplayable; }\r\n\r\n public override setContent(content: ImageryTileContent): void {\r\n this._texture = content.imageryTexture; // No dispose - textures may be shared by terrain tiles so let garbage collector dispose them.\r\n if (undefined === content.imageryTexture)\r\n (this.parent! as ImageryMapTile).setLeaf(); // Avoid traversing bing branches after no graphics is found.\r\n\r\n this.setIsReady();\r\n }\r\n\r\n public selectCartoDrapeTiles(drapeTiles: ImageryMapTile[], rectangleToDrape: MapCartoRectangle, drapePixelSize: number, args: TileDrawArgs): TileTreeLoadStatus {\r\n // Base draping overlap on width rather than height so that tiling schemes with multiple root nodes overlay correctly.\r\n if (this.isLeaf || (this.rectangle.xLength() / this.maximumSize) < drapePixelSize || this._anyChildNotFound) {\r\n if (this.isDisplayable && !this.isNotFound)\r\n drapeTiles.push(this);\r\n return TileTreeLoadStatus.Loaded;\r\n }\r\n\r\n let status = this.loadChildren();\r\n if (TileTreeLoadStatus.Loading === status) {\r\n args.markChildrenLoading();\r\n } else if (TileTreeLoadStatus.Loaded === status) {\r\n if (undefined !== this.children) {\r\n for (const child of this.children) {\r\n const mapChild = child as ImageryMapTile;\r\n if (mapChild.rectangle.intersectsRange(rectangleToDrape))\r\n status = mapChild.selectCartoDrapeTiles(drapeTiles, rectangleToDrape, drapePixelSize, args);\r\n if (TileTreeLoadStatus.Loaded !== status)\r\n break;\r\n }\r\n }\r\n }\r\n return status;\r\n }\r\n public markMapTileUsage() {\r\n this._mapTileUsageCount++;\r\n }\r\n public releaseMapTileUsage() {\r\n assert(!this._texture || this._mapTileUsageCount > 0);\r\n if (this._mapTileUsageCount)\r\n this._mapTileUsageCount--;\r\n }\r\n\r\n /** @internal */\r\n public override setLeaf(): void {\r\n // Don't potentially re-request the children later.\r\n this.disposeChildren();\r\n this._isLeaf = true;\r\n this._childrenLoadStatus = TileTreeLoadStatus.Loaded;\r\n }\r\n\r\n protected override _loadChildren(resolve: (children: Tile[] | undefined) => void, _reject: (error: Error) => void): void {\r\n\r\n const imageryTree = this.imageryTree;\r\n const resolveChildren = (childIds: QuadId[]) => {\r\n const children = new Array<Tile>();\r\n const childrenAreLeaves = (this.depth + 1) === imageryTree.maxDepth;\r\n // If children depth is lower than min LOD, mark them as disabled.\r\n // This is important: if those tiles are requested and the server refuse to serve them,\r\n // they will be marked as not found and their descendant will never be displayed.\r\n const childrenAreDisabled = (this.depth + 1) < imageryTree.minDepth;\r\n\r\n childIds.forEach((quadId) => {\r\n const rectangle = imageryTree.tilingScheme.tileXYToRectangle(quadId.column, quadId.row, quadId.level);\r\n const range = Range3d.createXYZXYZ(rectangle.low.x, rectangle.low.x, 0, rectangle.high.x, rectangle.high.y, 0);\r\n const maximumSize = (childrenAreDisabled ? 0 : imageryTree.imageryLoader.maximumScreenSize);\r\n children.push(new ImageryMapTile({ parent: this, isLeaf: childrenAreLeaves, contentId: quadId.contentId, range, maximumSize }, imageryTree, quadId, rectangle));\r\n });\r\n\r\n resolve(children);\r\n };\r\n\r\n imageryTree.imageryLoader.generateChildIds(this, resolveChildren);\r\n }\r\n\r\n protected override _collectStatistics(stats: RenderMemory.Statistics): void {\r\n super._collectStatistics(stats);\r\n if (this._texture)\r\n stats.addTexture(this._texture.bytesUsed);\r\n }\r\n\r\n public override freeMemory(): void {\r\n // ###TODO MapTiles and ImageryMapTiles share resources and don't currently interact well with TileAdmin.freeMemory(). Opt out for now.\r\n }\r\n\r\n public override disposeContents() {\r\n if (0 === this._mapTileUsageCount) {\r\n super.disposeContents();\r\n this.disposeTexture();\r\n }\r\n }\r\n\r\n private disposeTexture(): void {\r\n this._texture = dispose(this._texture);\r\n }\r\n public override dispose() {\r\n this._mapTileUsageCount = 0;\r\n super.dispose();\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ImageryMapTileTree extends RealityTileTree {\r\n constructor(params: RealityTileTreeParams, private _imageryLoader: ImageryTileLoader) {\r\n super(params);\r\n const rootQuadId = new QuadId(_imageryLoader.imageryProvider.tilingScheme.rootLevel, 0, 0);\r\n this._rootTile = new ImageryMapTile(params.rootTile, this, rootQuadId, this.getTileRectangle(rootQuadId));\r\n }\r\n public get tilingScheme(): MapTilingScheme { return this._imageryLoader.imageryProvider.tilingScheme; }\r\n public addLogoCards(cards: HTMLTableElement, vp: ScreenViewport): void {\r\n this._imageryLoader.addLogoCards(cards, vp);\r\n }\r\n\r\n public getTileRectangle(quadId: QuadId): MapCartoRectangle {\r\n return this.tilingScheme.tileXYToRectangle(quadId.column, quadId.row, quadId.level);\r\n }\r\n public get imageryLoader(): ImageryTileLoader { return this._imageryLoader; }\r\n public override get is3d(): boolean { assert(false); return false; }\r\n public override get viewFlagOverrides(): ViewFlagOverrides { assert(false); return {}; }\r\n public override get isContentUnbounded(): boolean { assert(false); return true; }\r\n protected override _selectTiles(_args: TileDrawArgs): Tile[] { assert(false); return []; }\r\n public override draw(_args: TileDrawArgs): void { assert(false); }\r\n\r\n private static _scratchDrapeRectangle = new MapCartoRectangle();\r\n private static _drapeIntersectionScale = 1.0 - 1.0E-5;\r\n\r\n public selectCartoDrapeTiles(drapeTiles: ImageryMapTile[], tileToDrape: MapTile, args: TileDrawArgs): TileTreeLoadStatus {\r\n const drapeRectangle = tileToDrape.rectangle.clone(ImageryMapTileTree._scratchDrapeRectangle);\r\n // Base draping overlap on width rather than height so that tiling schemes with multiple root nodes overlay correctly.\r\n const drapePixelSize = 1.05 * tileToDrape.rectangle.xLength() / tileToDrape.maximumSize;\r\n drapeRectangle.scaleAboutCenterInPlace(ImageryMapTileTree._drapeIntersectionScale); // Contract slightly to avoid draping adjacent or slivers.\r\n return (this.rootTile as ImageryMapTile).selectCartoDrapeTiles(drapeTiles, drapeRectangle, drapePixelSize, args);\r\n }\r\n public cartoRectangleFromQuadId(quadId: QuadId): MapCartoRectangle { return this.tilingScheme.tileXYToRectangle(quadId.column, quadId.row, quadId.level); }\r\n}\r\n\r\nclass ImageryTileLoader extends RealityTileLoader {\r\n constructor(private _imageryProvider: MapLayerImageryProvider, private _iModel: IModelConnection) {\r\n super();\r\n }\r\n public override computeTilePriority(tile: Tile): number {\r\n return 25 * (this._imageryProvider.usesCachedTiles ? 2 : 1) - tile.depth; // Always cached first then descending by depth (high resolution/front first)\r\n } // Prioritized fast, cached tiles first.\r\n\r\n public get maxDepth(): number { return this._imageryProvider.maximumZoomLevel; }\r\n public get minDepth(): number { return this._imageryProvider.minimumZoomLevel; }\r\n public get priority(): TileLoadPriority { return TileLoadPriority.Map; }\r\n public addLogoCards(cards: HTMLTableElement, vp: ScreenViewport): void {\r\n this._imageryProvider.addLogoCards(cards, vp);\r\n }\r\n\r\n public get maximumScreenSize(): number { return this._imageryProvider.maximumScreenSize; }\r\n public get imageryProvider(): MapLayerImageryProvider { return this._imageryProvider; }\r\n public async getToolTip(strings: string[], quadId: QuadId, carto: Cartographic, tree: ImageryMapTileTree): Promise<void> { await this._imageryProvider.getToolTip(strings, quadId, carto, tree); }\r\n\r\n public async getMapFeatureInfo(featureInfos: MapLayerFeatureInfo[], quadId: QuadId, carto: Cartographic, tree: ImageryMapTileTree): Promise<void> {\r\n await this._imageryProvider.getFeatureInfo(featureInfos, quadId, carto, tree);\r\n }\r\n\r\n public generateChildIds(tile: ImageryMapTile, resolveChildren: (childIds: QuadId[]) => void) { return this._imageryProvider.generateChildIds(tile, resolveChildren); }\r\n\r\n /** Load this tile's children, possibly asynchronously. Pass them to `resolve`, or an error to `reject`. */\r\n public async loadChildren(_tile: RealityTile): Promise<Tile[] | undefined> { assert(false); return undefined; }\r\n public async requestTileContent(tile: Tile, _isCanceled: () => boolean): Promise<TileRequest.Response> {\r\n const quadId = QuadId.createFromContentId(tile.contentId);\r\n return this._imageryProvider.loadTile(quadId.row, quadId.column, quadId.level);\r\n }\r\n\r\n public getRequestChannel(_tile: Tile) {\r\n // ###TODO use hostname from url - but so many layers to go through to get that...\r\n return IModelApp.tileAdmin.channels.getForHttp(\"itwinjs-imagery\");\r\n }\r\n\r\n public override async loadTileContent(tile: Tile, data: TileRequest.ResponseData, system: RenderSystem): Promise<ImageryTileContent> {\r\n assert(data instanceof ImageSource);\r\n assert(tile instanceof ImageryMapTile);\r\n const content: ImageryTileContent = {};\r\n const texture = await this.loadTextureImage(data, system);\r\n if (undefined === texture)\r\n return content;\r\n\r\n content.imageryTexture = texture;\r\n return content;\r\n }\r\n\r\n private async loadTextureImage(source: ImageSource, system: RenderSystem): Promise<RenderTexture | undefined> {\r\n try {\r\n return await system.createTextureFromSource({\r\n type: RenderTexture.Type.FilteredTileSection,\r\n source,\r\n });\r\n } catch {\r\n return undefined;\r\n }\r\n }\r\n}\r\n\r\ninterface ImageryMapLayerTreeId {\r\n settings: ImageMapLayerSettings;\r\n}\r\n\r\n/** Supplies a TileTree that can load and draw tiles based on our imagery provider.\r\n * The TileTree is uniquely identified by its imagery type.\r\n */\r\nclass ImageryMapLayerTreeSupplier implements TileTreeSupplier {\r\n /** Return a numeric value indicating how two tree IDs are ordered relative to one another.\r\n * This allows the ID to serve as a lookup key to find the corresponding TileTree.\r\n */\r\n public compareTileTreeIds(lhs: ImageryMapLayerTreeId, rhs: ImageryMapLayerTreeId): number {\r\n let cmp = compareStrings(lhs.settings.url, rhs.settings.url);\r\n if (0 === cmp) {\r\n cmp = compareStringsOrUndefined(lhs.settings.userName, rhs.settings.userName);\r\n if (0 === cmp) {\r\n cmp = compareStringsOrUndefined(lhs.settings.password, rhs.settings.password);\r\n if (0 === cmp) {\r\n cmp = compareBooleans(lhs.settings.transparentBackground, rhs.settings.transparentBackground);\r\n if (0 === cmp) {\r\n cmp = compareNumbers(lhs.settings.subLayers.length, rhs.settings.subLayers.length);\r\n if (0 === cmp) {\r\n for (let i = 0; i < lhs.settings.subLayers.length && 0 === cmp; i++)\r\n cmp = compareBooleans(lhs.settings.subLayers[i].visible, rhs.settings.subLayers[i].visible);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n /** The first time a tree of a particular imagery type is requested, this function creates it. */\r\n public async createTileTree(id: ImageryMapLayerTreeId, iModel: IModelConnection): Promise<TileTree | undefined> {\r\n const imageryProvider = IModelApp.mapLayerFormatRegistry.createImageryProvider(id.settings);\r\n if (undefined === imageryProvider)\r\n return undefined;\r\n\r\n await imageryProvider.initialize();\r\n const modelId = iModel.transientIds.next;\r\n const tilingScheme = imageryProvider.tilingScheme;\r\n const rootLevel = (1 === tilingScheme.numberOfLevelZeroTilesX && 1 === tilingScheme.numberOfLevelZeroTilesY) ? 0 : -1;\r\n const rootTileId = new QuadId(rootLevel, 0, 0).contentId;\r\n const rootRange = Range3d.createXYZXYZ(-Angle.piRadians, -Angle.piOver2Radians, 0, Angle.piRadians, Angle.piOver2Radians, 0);\r\n const rootTileProps = { contentId: rootTileId, range: rootRange, maximumSize: 0 };\r\n const loader = new ImageryTileLoader(imageryProvider, iModel);\r\n const treeProps = { rootTile: rootTileProps, id: modelId, modelId, iModel, location: Transform.createIdentity(), priority: TileLoadPriority.Map, loader, gcsConverterAvailable: false };\r\n return new ImageryMapTileTree(treeProps, loader);\r\n }\r\n}\r\n\r\nconst imageryTreeSupplier = new ImageryMapLayerTreeSupplier();\r\n\r\n/** A reference to one of our tile trees. The specific TileTree drawn may change when the desired imagery type or target iModel changes.\r\n * @internal\r\n */\r\nexport class ImageryMapLayerTreeReference extends MapLayerTileTreeReference {\r\n public constructor(layerSettings: MapLayerSettings, layerIndex: number, iModel: IModelConnection) {\r\n super(layerSettings, layerIndex, iModel);\r\n }\r\n\r\n public override get castsShadows() { return false; }\r\n\r\n /** Return the owner of the TileTree to draw. */\r\n public get treeOwner(): TileTreeOwner {\r\n return this.iModel.tiles.getTileTreeOwner({ settings: this._layerSettings }, imageryTreeSupplier);\r\n }\r\n public override get imageryProvider(): MapLayerImageryProvider | undefined {\r\n const tree = this.treeOwner.load();\r\n if (!tree || !(tree instanceof ImageryMapTileTree))\r\n return undefined;\r\n\r\n return tree.imageryLoader.imageryProvider;\r\n }\r\n}\r\n"]}
@@ -28,6 +28,7 @@ export declare class MapCartoRectangle extends Range2d {
28
28
  containsCartographic(carto: Cartographic): boolean;
29
29
  getCenter(result?: Cartographic): Cartographic;
30
30
  fractionFromCartographic(carto: Cartographic): Point2d | undefined;
31
+ /** @internal */
31
32
  getTileFractionRange(tilingScheme: MapTilingScheme): Range2d;
32
33
  }
33
34
  //# sourceMappingURL=MapCartoRectangle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MapCartoRectangle.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/MapCartoRectangle.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAS,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAK9C;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,OAAO;gBACzB,IAAI,SAAI,EAAE,KAAK,SAAI,EAAE,IAAI,SAAI,EAAE,KAAK,SAAI;WAG7C,MAAM,CAAC,IAAI,SAAmB,EAAE,KAAK,SAAwB,EAAE,IAAI,SAAkB,EAAE,KAAK,SAAuB,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,iBAAiB;WAOnK,iBAAiB,CAAC,IAAI,SAAO,EAAE,KAAK,SAAM,EAAE,IAAI,SAAM,EAAE,KAAK,SAAK,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,iBAAiB;IAIhI,IAAW,IAAI,IACI,MAAM,CADe;IACxC,IAAW,IAAI,CAAC,CAAC,EAAE,MAAM,EAAqB;IAC9C,IAAW,KAAK,IACI,MAAM,CADe;IACzC,IAAW,KAAK,CAAC,CAAC,EAAE,MAAM,EAAqB;IAC/C,IAAW,IAAI,IACI,MAAM,CADgB;IACzC,IAAW,IAAI,CAAC,CAAC,EAAE,MAAM,EAAsB;IAC/C,IAAW,KAAK,IACI,MAAM,CADgB;IAC1C,IAAW,KAAK,CAAC,CAAC,EAAE,MAAM,EAAsB;IAChD,IAAW,aAAa,WAAuM;IAC/N,IAAW,kBAAkB,IAAI,kBAAkB,CAAqL;IACxO,IAAW,WAAW,iBAA8H;IACpJ,IAAW,cAAc,IAAI,cAAc,CAAwE;IAE5G,IAAI,CAAC,IAAI,SAAI,EAAE,KAAK,SAAI,EAAE,IAAI,SAAI,EAAE,KAAK,SAAI;IAM7C,oBAAoB,CAAC,KAAK,EAAE,YAAY;IACxC,SAAS,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,YAAY;IAG9C,wBAAwB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,GAAG,SAAS;IAClE,oBAAoB,CAAC,YAAY,EAAE,eAAe;CAQ1D"}
1
+ {"version":3,"file":"MapCartoRectangle.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/MapCartoRectangle.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAS,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAK9C;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,OAAO;gBACzB,IAAI,SAAI,EAAE,KAAK,SAAI,EAAE,IAAI,SAAI,EAAE,KAAK,SAAI;WAG7C,MAAM,CAAC,IAAI,SAAmB,EAAE,KAAK,SAAwB,EAAE,IAAI,SAAkB,EAAE,KAAK,SAAuB,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,iBAAiB;WAOnK,iBAAiB,CAAC,IAAI,SAAO,EAAE,KAAK,SAAM,EAAE,IAAI,SAAM,EAAE,KAAK,SAAK,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,iBAAiB;IAIhI,IAAW,IAAI,IACI,MAAM,CADe;IACxC,IAAW,IAAI,CAAC,CAAC,EAAE,MAAM,EAAqB;IAC9C,IAAW,KAAK,IACI,MAAM,CADe;IACzC,IAAW,KAAK,CAAC,CAAC,EAAE,MAAM,EAAqB;IAC/C,IAAW,IAAI,IACI,MAAM,CADgB;IACzC,IAAW,IAAI,CAAC,CAAC,EAAE,MAAM,EAAsB;IAC/C,IAAW,KAAK,IACI,MAAM,CADgB;IAC1C,IAAW,KAAK,CAAC,CAAC,EAAE,MAAM,EAAsB;IAChD,IAAW,aAAa,WAAuM;IAC/N,IAAW,kBAAkB,IAAI,kBAAkB,CAAqL;IACxO,IAAW,WAAW,iBAA8H;IACpJ,IAAW,cAAc,IAAI,cAAc,CAAwE;IAE5G,IAAI,CAAC,IAAI,SAAI,EAAE,KAAK,SAAI,EAAE,IAAI,SAAI,EAAE,KAAK,SAAI;IAM7C,oBAAoB,CAAC,KAAK,EAAE,YAAY;IACxC,SAAS,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,YAAY;IAG9C,wBAAwB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,GAAG,SAAS;IAEzE,gBAAgB;IACT,oBAAoB,CAAC,YAAY,EAAE,eAAe;CAQ1D"}
@@ -51,6 +51,7 @@ class MapCartoRectangle extends core_geometry_1.Range2d {
51
51
  return core_common_1.Cartographic.fromRadians({ longitude: (this.west + this.east) / 2, latitude: (this.north + this.south) / 2, height: 0 }, result);
52
52
  }
53
53
  fractionFromCartographic(carto) { return this.worldToLocal(core_geometry_1.Point2d.create(carto.longitude, carto.latitude, scratchPoint2d)); }
54
+ /** @internal */
54
55
  getTileFractionRange(tilingScheme) {
55
56
  scratchMercatorFractionRange.low.x = tilingScheme.longitudeToXFraction(this.low.x);
56
57
  scratchMercatorFractionRange.high.x = tilingScheme.longitudeToXFraction(this.high.x);
@@ -1 +1 @@
1
- {"version":3,"file":"MapCartoRectangle.js","sourceRoot":"","sources":["../../../../src/tile/map/MapCartoRectangle.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 { Angle, Point2d, Range2d } from \"@itwin/core-geometry\";\r\nimport { Cartographic } from \"@itwin/core-common\";\r\nimport { GlobalLocation, GlobalLocationArea } from \"../../ViewGlobalLocation\";\r\nimport { MapTilingScheme } from \"../internal\";\r\n\r\nconst scratchMercatorFractionRange = Range2d.createNull();\r\nconst scratchPoint2d = Point2d.createZero();\r\n\r\n/** A specialization of Range2d that represents a cartographic range used by map tiles.\r\n * @internal\r\n */\r\nexport class MapCartoRectangle extends Range2d {\r\n public constructor(west = 0, south = 0, east = 0, north = 0) {\r\n super(west, Math.min(south, north), east, Math.max(south, north));\r\n }\r\n public static create(west = -Angle.piRadians, south = -Angle.piOver2Radians, east = Angle.piRadians, north = Angle.piOver2Radians, result?: MapCartoRectangle): MapCartoRectangle {\r\n if (!result)\r\n return new MapCartoRectangle(west, south, east, north);\r\n result.init(west, south, east, north);\r\n return result;\r\n }\r\n\r\n public static createFromDegrees(west = -180, south = -90, east = 180, north = 90, result?: MapCartoRectangle): MapCartoRectangle {\r\n return MapCartoRectangle.create(west * Angle.radiansPerDegree, south * Angle.radiansPerDegree, east * Angle.radiansPerDegree, north * Angle.radiansPerDegree, result);\r\n }\r\n\r\n public get west() { return this.low.x; }\r\n public set west(x: number) { this.low.x = x; }\r\n public get south() { return this.low.y; }\r\n public set south(y: number) { this.low.y = y; }\r\n public get east() { return this.high.x; }\r\n public set east(x: number) { this.high.x = x; }\r\n public get north() { return this.high.y; }\r\n public set north(y: number) { this.high.y = y; }\r\n public get latLongString() { return `Latitude: ${this.low.y * Angle.degreesPerRadian} - ${this.high.y * Angle.degreesPerRadian} Longitude: ${this.low.x * Angle.degreesPerRadian} - ${this.high.x * Angle.degreesPerRadian}`; }\r\n public get globalLocationArea(): GlobalLocationArea { return { southwest: Cartographic.fromRadians({longitude: this.west, latitude: this.south}), northeast: Cartographic.fromRadians({longitude: this.east, latitude: this.north}) }; }\r\n public get cartoCenter() { return Cartographic.fromRadians({longitude: (this.low.x + this.high.x) / 2, latitude: (this.low.y + this.high.y) / 2}); }\r\n public get globalLocation(): GlobalLocation { return { center: this.cartoCenter, area: this.globalLocationArea }; }\r\n\r\n public init(west = 0, south = 0, east = 0, north = 0) {\r\n this.west = west;\r\n this.south = south;\r\n this.east = east;\r\n this.north = north;\r\n }\r\n public containsCartographic(carto: Cartographic) { return this.containsXY(carto.longitude, carto.latitude); }\r\n public getCenter(result?: Cartographic): Cartographic {\r\n return Cartographic.fromRadians({longitude: (this.west + this.east) / 2, latitude: (this.north + this.south) / 2, height: 0}, result);\r\n }\r\n public fractionFromCartographic(carto: Cartographic): Point2d | undefined { return this.worldToLocal(Point2d.create(carto.longitude, carto.latitude, scratchPoint2d)); }\r\n public getTileFractionRange(tilingScheme: MapTilingScheme) {\r\n scratchMercatorFractionRange.low.x = tilingScheme.longitudeToXFraction(this.low.x);\r\n scratchMercatorFractionRange.high.x = tilingScheme.longitudeToXFraction(this.high.x);\r\n scratchMercatorFractionRange.low.y = tilingScheme.latitudeToYFraction(this.low.y);\r\n scratchMercatorFractionRange.high.y = tilingScheme.latitudeToYFraction(this.high.y);\r\n\r\n return scratchMercatorFractionRange;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"MapCartoRectangle.js","sourceRoot":"","sources":["../../../../src/tile/map/MapCartoRectangle.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 { Angle, Point2d, Range2d } from \"@itwin/core-geometry\";\r\nimport { Cartographic } from \"@itwin/core-common\";\r\nimport { GlobalLocation, GlobalLocationArea } from \"../../ViewGlobalLocation\";\r\nimport { MapTilingScheme } from \"../internal\";\r\n\r\nconst scratchMercatorFractionRange = Range2d.createNull();\r\nconst scratchPoint2d = Point2d.createZero();\r\n\r\n/** A specialization of Range2d that represents a cartographic range used by map tiles.\r\n * @internal\r\n */\r\nexport class MapCartoRectangle extends Range2d {\r\n public constructor(west = 0, south = 0, east = 0, north = 0) {\r\n super(west, Math.min(south, north), east, Math.max(south, north));\r\n }\r\n public static create(west = -Angle.piRadians, south = -Angle.piOver2Radians, east = Angle.piRadians, north = Angle.piOver2Radians, result?: MapCartoRectangle): MapCartoRectangle {\r\n if (!result)\r\n return new MapCartoRectangle(west, south, east, north);\r\n result.init(west, south, east, north);\r\n return result;\r\n }\r\n\r\n public static createFromDegrees(west = -180, south = -90, east = 180, north = 90, result?: MapCartoRectangle): MapCartoRectangle {\r\n return MapCartoRectangle.create(west * Angle.radiansPerDegree, south * Angle.radiansPerDegree, east * Angle.radiansPerDegree, north * Angle.radiansPerDegree, result);\r\n }\r\n\r\n public get west() { return this.low.x; }\r\n public set west(x: number) { this.low.x = x; }\r\n public get south() { return this.low.y; }\r\n public set south(y: number) { this.low.y = y; }\r\n public get east() { return this.high.x; }\r\n public set east(x: number) { this.high.x = x; }\r\n public get north() { return this.high.y; }\r\n public set north(y: number) { this.high.y = y; }\r\n public get latLongString() { return `Latitude: ${this.low.y * Angle.degreesPerRadian} - ${this.high.y * Angle.degreesPerRadian} Longitude: ${this.low.x * Angle.degreesPerRadian} - ${this.high.x * Angle.degreesPerRadian}`; }\r\n public get globalLocationArea(): GlobalLocationArea { return { southwest: Cartographic.fromRadians({longitude: this.west, latitude: this.south}), northeast: Cartographic.fromRadians({longitude: this.east, latitude: this.north}) }; }\r\n public get cartoCenter() { return Cartographic.fromRadians({longitude: (this.low.x + this.high.x) / 2, latitude: (this.low.y + this.high.y) / 2}); }\r\n public get globalLocation(): GlobalLocation { return { center: this.cartoCenter, area: this.globalLocationArea }; }\r\n\r\n public init(west = 0, south = 0, east = 0, north = 0) {\r\n this.west = west;\r\n this.south = south;\r\n this.east = east;\r\n this.north = north;\r\n }\r\n public containsCartographic(carto: Cartographic) { return this.containsXY(carto.longitude, carto.latitude); }\r\n public getCenter(result?: Cartographic): Cartographic {\r\n return Cartographic.fromRadians({longitude: (this.west + this.east) / 2, latitude: (this.north + this.south) / 2, height: 0}, result);\r\n }\r\n public fractionFromCartographic(carto: Cartographic): Point2d | undefined { return this.worldToLocal(Point2d.create(carto.longitude, carto.latitude, scratchPoint2d)); }\r\n\r\n /** @internal */\r\n public getTileFractionRange(tilingScheme: MapTilingScheme) {\r\n scratchMercatorFractionRange.low.x = tilingScheme.longitudeToXFraction(this.low.x);\r\n scratchMercatorFractionRange.high.x = tilingScheme.longitudeToXFraction(this.high.x);\r\n scratchMercatorFractionRange.low.y = tilingScheme.latitudeToYFraction(this.low.y);\r\n scratchMercatorFractionRange.high.y = tilingScheme.latitudeToYFraction(this.high.y);\r\n\r\n return scratchMercatorFractionRange;\r\n }\r\n}\r\n"]}
@@ -17,10 +17,11 @@ export declare class MapLayerFormat {
17
17
  }
18
18
  /** @beta */
19
19
  export declare type MapLayerFormatType = typeof MapLayerFormat;
20
- /** @beta */
20
+ /** @public */
21
21
  export interface MapLayerSourceValidation {
22
22
  status: MapLayerSourceStatus;
23
23
  subLayers?: MapSubLayerProps[];
24
+ /** @beta */
24
25
  authInfo?: MapLayerAuthenticationInfo;
25
26
  }
26
27
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"MapLayerFormatRegistry.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerFormatRegistry.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE5G,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,4BAA4B,EAAkC,oBAAoB,EAAE,0BAA0B,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACvN,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,YAAY;AACZ,qBAAa,cAAc;IACzB,OAAc,QAAQ,EAAE,MAAM,CAAC;WACjB,QAAQ;IAEtB,gBAAgB;WACF,qBAAqB,CAAC,SAAS,EAAE,gBAAgB,GAAG,uBAAuB,GAAG,SAAS;IACrG,gBAAgB;WACF,kBAAkB,CAAC,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,yBAAyB,GAAG,SAAS;WAIrI,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,uBAAuB,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,wBAAwB,CAAC;CACpJ;AAED,YAAY;AACZ,oBAAY,kBAAkB,GAAG,OAAO,cAAc,CAAC;AAEvD,YAAY;AACZ,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,QAAQ,CAAC,EAAE,0BAA0B,CAAC;CACvC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,2GAA2G;IAE3G,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB,+FAA+F;IAE/F,aAAa,CAAC,EAAE,WAAW,CAAC;IAC5B,4FAA4F;IAE5F,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,oDAAoD;IACpD,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC;CAC3C;AAED,gBAAgB;AAChB,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,kBAAkB,CAAC;IACzB,YAAY,CAAC,EAAE,oBAAoB,CAAC;CACrC;AAED,YAAY;AACZ,qBAAa,sBAAsB;IACjC,OAAO,CAAC,cAAc,CAAkB;gBAC5B,IAAI,CAAC,EAAE,eAAe;IAIlC,OAAO,CAAC,QAAQ,CAA0C;IACnD,QAAQ,CAAC,WAAW,EAAE,kBAAkB,EAAE,YAAY,CAAC,EAAE,oBAAoB;IAO7E,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,oBAAoB,GAAI,OAAO;IAS/E,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS;IAO1E,IAAW,aAAa,IAAI,eAAe,CAE1C;IAED,gBAAgB;IACT,yBAAyB,CAAC,aAAa,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,4BAA4B,GAAG,SAAS;IAM9J,gBAAgB;IACT,qBAAqB,CAAC,aAAa,EAAE,qBAAqB,GAAG,uBAAuB,GAAG,SAAS;IAW1F,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,uBAAuB,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,wBAAwB,CAAC;CAK5J"}
1
+ {"version":3,"file":"MapLayerFormatRegistry.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerFormatRegistry.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE5G,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,4BAA4B,EAAkC,oBAAoB,EAAE,0BAA0B,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACvN,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,YAAY;AACZ,qBAAa,cAAc;IACzB,OAAc,QAAQ,EAAE,MAAM,CAAC;WACjB,QAAQ;IAEtB,gBAAgB;WACF,qBAAqB,CAAC,SAAS,EAAE,gBAAgB,GAAG,uBAAuB,GAAG,SAAS;IACrG,gBAAgB;WACF,kBAAkB,CAAC,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,yBAAyB,GAAG,SAAS;WAIrI,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,uBAAuB,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,wBAAwB,CAAC;CACpJ;AAED,YAAY;AACZ,oBAAY,kBAAkB,GAAG,OAAO,cAAc,CAAC;AAEvD,cAAc;AACd,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAE/B,YAAY;IACZ,QAAQ,CAAC,EAAE,0BAA0B,CAAC;CACvC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,2GAA2G;IAE3G,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB,+FAA+F;IAE/F,aAAa,CAAC,EAAE,WAAW,CAAC;IAC5B,4FAA4F;IAE5F,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,oDAAoD;IACpD,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC;CAC3C;AAED,gBAAgB;AAChB,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,kBAAkB,CAAC;IACzB,YAAY,CAAC,EAAE,oBAAoB,CAAC;CACrC;AAED,YAAY;AACZ,qBAAa,sBAAsB;IACjC,OAAO,CAAC,cAAc,CAAkB;gBAC5B,IAAI,CAAC,EAAE,eAAe;IAIlC,OAAO,CAAC,QAAQ,CAA0C;IACnD,QAAQ,CAAC,WAAW,EAAE,kBAAkB,EAAE,YAAY,CAAC,EAAE,oBAAoB;IAO7E,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,oBAAoB,GAAI,OAAO;IAS/E,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS;IAO1E,IAAW,aAAa,IAAI,eAAe,CAE1C;IAED,gBAAgB;IACT,yBAAyB,CAAC,aAAa,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,4BAA4B,GAAG,SAAS;IAM9J,gBAAgB;IACT,qBAAqB,CAAC,aAAa,EAAE,qBAAqB,GAAG,uBAAuB,GAAG,SAAS;IAW1F,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,uBAAuB,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,wBAAwB,CAAC;CAK5J"}
@@ -1 +1 @@
1
- {"version":3,"file":"MapLayerFormatRegistry.js","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerFormatRegistry.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module MapLayers\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { ImageMapLayerSettings, MapLayerKey, MapLayerSettings, MapSubLayerProps } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../../IModelApp\";\r\nimport { IModelConnection } from \"../../IModelConnection\";\r\nimport { ImageryMapLayerTreeReference, internalMapLayerImageryFormats, MapLayerAccessClient, MapLayerAuthenticationInfo, MapLayerImageryProvider, MapLayerSourceStatus, MapLayerTileTreeReference } from \"../internal\";\r\nimport { RequestBasicCredentials } from \"../../request/Request\";\r\n\r\n/** @beta */\r\nexport class MapLayerFormat {\r\n public static formatId: string;\r\n public static register() { IModelApp.mapLayerFormatRegistry.register(this); }\r\n\r\n /** @internal */\r\n public static createImageryProvider(_settings: MapLayerSettings): MapLayerImageryProvider | undefined { assert(false); }\r\n /** @internal */\r\n public static createMapLayerTree(_layerSettings: MapLayerSettings, _layerIndex: number, _iModel: IModelConnection): MapLayerTileTreeReference | undefined {\r\n assert(false);\r\n return undefined;\r\n }\r\n public static async validateSource(_url: string, _credentials?: RequestBasicCredentials, _ignoreCache?: boolean): Promise<MapLayerSourceValidation> { return { status: MapLayerSourceStatus.Valid }; }\r\n}\r\n\r\n/** @beta */\r\nexport type MapLayerFormatType = typeof MapLayerFormat;\r\n\r\n/** @beta */\r\nexport interface MapLayerSourceValidation {\r\n status: MapLayerSourceStatus;\r\n subLayers?: MapSubLayerProps[];\r\n authInfo?: MapLayerAuthenticationInfo;\r\n}\r\n\r\n/**\r\n * Options supplied at startup via [[IModelAppOptions.mapLayerOptions]] to specify access keys for various map layer formats.\r\n * 'BingMaps' must have it's key value set to 'key'\r\n * 'MapboxImagery' must have it's key value set to 'access_token'\r\n *\r\n * @beta\r\n */\r\nexport interface MapLayerOptions {\r\n /** Access key for Azure Maps in the format `{ key: \"subscription-key\", value: \"your-azure-maps-key\" }`. */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n AzureMaps?: MapLayerKey;\r\n /** Access key for Mapbox in the format `{ key: \"access_token\", value: \"your-mapbox-key\" }`. */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n MapboxImagery?: MapLayerKey;\r\n /** Access key for Bing Maps in the format `{ key: \"key\", value: \"your-bing-maps-key\" }`. */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n BingMaps?: MapLayerKey;\r\n /** Access keys for additional map layer formats. */\r\n [format: string]: MapLayerKey | undefined;\r\n}\r\n\r\n/** @internal */\r\nexport interface MapLayerFormatEntry {\r\n type: MapLayerFormatType;\r\n accessClient?: MapLayerAccessClient;\r\n}\r\n\r\n/** @beta */\r\nexport class MapLayerFormatRegistry {\r\n private _configOptions: MapLayerOptions;\r\n constructor(opts?: MapLayerOptions) {\r\n this._configOptions = opts ?? {};\r\n internalMapLayerImageryFormats.forEach((format) => this.register(format));\r\n }\r\n private _formats = new Map<string, MapLayerFormatEntry>();\r\n public register(formatClass: MapLayerFormatType, accessClient?: MapLayerAccessClient) {\r\n if (formatClass.formatId.length === 0)\r\n return; // must be an abstract class, ignore it\r\n\r\n this._formats.set(formatClass.formatId, {type: formatClass, accessClient});\r\n }\r\n\r\n public setAccessClient(formatId: string, accessClient: MapLayerAccessClient ): boolean {\r\n const entry = this._formats.get(formatId);\r\n if (entry !== undefined) {\r\n entry.accessClient = accessClient;\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n public getAccessClient(formatId: string): MapLayerAccessClient | undefined {\r\n if (formatId.length === 0)\r\n return undefined;\r\n\r\n return this._formats.get(formatId)?.accessClient;\r\n }\r\n\r\n public get configOptions(): MapLayerOptions {\r\n return this._configOptions;\r\n }\r\n\r\n /** @internal */\r\n public createImageryMapLayerTree(layerSettings: ImageMapLayerSettings, layerIndex: number, iModel: IModelConnection): ImageryMapLayerTreeReference | undefined {\r\n const entry = this._formats.get(layerSettings.formatId);\r\n const format = entry?.type;\r\n return format !== undefined ? (format.createMapLayerTree(layerSettings, layerIndex, iModel) as ImageryMapLayerTreeReference) : undefined;\r\n }\r\n\r\n /** @internal */\r\n public createImageryProvider(layerSettings: ImageMapLayerSettings): MapLayerImageryProvider | undefined {\r\n const entry = this._formats.get(layerSettings.formatId);\r\n const format = entry?.type;\r\n if (this._configOptions[layerSettings.formatId] !== undefined) {\r\n const keyValuePair = this._configOptions[layerSettings.formatId]!;\r\n const key: MapLayerKey = { key: keyValuePair.key, value: keyValuePair.value };\r\n layerSettings = layerSettings.clone({ accessKey: key });\r\n }\r\n return (format === undefined) ? undefined : format.createImageryProvider(layerSettings);\r\n }\r\n\r\n public async validateSource(formatId: string, url: string, credentials?: RequestBasicCredentials, ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\r\n const entry = this._formats.get(formatId);\r\n const format = entry?.type;\r\n return (format === undefined) ? { status: MapLayerSourceStatus.InvalidFormat } : format.validateSource(url, credentials, ignoreCache);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"MapLayerFormatRegistry.js","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerFormatRegistry.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module MapLayers\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { ImageMapLayerSettings, MapLayerKey, MapLayerSettings, MapSubLayerProps } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../../IModelApp\";\r\nimport { IModelConnection } from \"../../IModelConnection\";\r\nimport { ImageryMapLayerTreeReference, internalMapLayerImageryFormats, MapLayerAccessClient, MapLayerAuthenticationInfo, MapLayerImageryProvider, MapLayerSourceStatus, MapLayerTileTreeReference } from \"../internal\";\r\nimport { RequestBasicCredentials } from \"../../request/Request\";\r\n\r\n/** @beta */\r\nexport class MapLayerFormat {\r\n public static formatId: string;\r\n public static register() { IModelApp.mapLayerFormatRegistry.register(this); }\r\n\r\n /** @internal */\r\n public static createImageryProvider(_settings: MapLayerSettings): MapLayerImageryProvider | undefined { assert(false); }\r\n /** @internal */\r\n public static createMapLayerTree(_layerSettings: MapLayerSettings, _layerIndex: number, _iModel: IModelConnection): MapLayerTileTreeReference | undefined {\r\n assert(false);\r\n return undefined;\r\n }\r\n public static async validateSource(_url: string, _credentials?: RequestBasicCredentials, _ignoreCache?: boolean): Promise<MapLayerSourceValidation> { return { status: MapLayerSourceStatus.Valid }; }\r\n}\r\n\r\n/** @beta */\r\nexport type MapLayerFormatType = typeof MapLayerFormat;\r\n\r\n/** @public */\r\nexport interface MapLayerSourceValidation {\r\n status: MapLayerSourceStatus;\r\n subLayers?: MapSubLayerProps[];\r\n\r\n /** @beta */\r\n authInfo?: MapLayerAuthenticationInfo;\r\n}\r\n\r\n/**\r\n * Options supplied at startup via [[IModelAppOptions.mapLayerOptions]] to specify access keys for various map layer formats.\r\n * 'BingMaps' must have it's key value set to 'key'\r\n * 'MapboxImagery' must have it's key value set to 'access_token'\r\n *\r\n * @beta\r\n */\r\nexport interface MapLayerOptions {\r\n /** Access key for Azure Maps in the format `{ key: \"subscription-key\", value: \"your-azure-maps-key\" }`. */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n AzureMaps?: MapLayerKey;\r\n /** Access key for Mapbox in the format `{ key: \"access_token\", value: \"your-mapbox-key\" }`. */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n MapboxImagery?: MapLayerKey;\r\n /** Access key for Bing Maps in the format `{ key: \"key\", value: \"your-bing-maps-key\" }`. */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n BingMaps?: MapLayerKey;\r\n /** Access keys for additional map layer formats. */\r\n [format: string]: MapLayerKey | undefined;\r\n}\r\n\r\n/** @internal */\r\nexport interface MapLayerFormatEntry {\r\n type: MapLayerFormatType;\r\n accessClient?: MapLayerAccessClient;\r\n}\r\n\r\n/** @beta */\r\nexport class MapLayerFormatRegistry {\r\n private _configOptions: MapLayerOptions;\r\n constructor(opts?: MapLayerOptions) {\r\n this._configOptions = opts ?? {};\r\n internalMapLayerImageryFormats.forEach((format) => this.register(format));\r\n }\r\n private _formats = new Map<string, MapLayerFormatEntry>();\r\n public register(formatClass: MapLayerFormatType, accessClient?: MapLayerAccessClient) {\r\n if (formatClass.formatId.length === 0)\r\n return; // must be an abstract class, ignore it\r\n\r\n this._formats.set(formatClass.formatId, {type: formatClass, accessClient});\r\n }\r\n\r\n public setAccessClient(formatId: string, accessClient: MapLayerAccessClient ): boolean {\r\n const entry = this._formats.get(formatId);\r\n if (entry !== undefined) {\r\n entry.accessClient = accessClient;\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n public getAccessClient(formatId: string): MapLayerAccessClient | undefined {\r\n if (formatId.length === 0)\r\n return undefined;\r\n\r\n return this._formats.get(formatId)?.accessClient;\r\n }\r\n\r\n public get configOptions(): MapLayerOptions {\r\n return this._configOptions;\r\n }\r\n\r\n /** @internal */\r\n public createImageryMapLayerTree(layerSettings: ImageMapLayerSettings, layerIndex: number, iModel: IModelConnection): ImageryMapLayerTreeReference | undefined {\r\n const entry = this._formats.get(layerSettings.formatId);\r\n const format = entry?.type;\r\n return format !== undefined ? (format.createMapLayerTree(layerSettings, layerIndex, iModel) as ImageryMapLayerTreeReference) : undefined;\r\n }\r\n\r\n /** @internal */\r\n public createImageryProvider(layerSettings: ImageMapLayerSettings): MapLayerImageryProvider | undefined {\r\n const entry = this._formats.get(layerSettings.formatId);\r\n const format = entry?.type;\r\n if (this._configOptions[layerSettings.formatId] !== undefined) {\r\n const keyValuePair = this._configOptions[layerSettings.formatId]!;\r\n const key: MapLayerKey = { key: keyValuePair.key, value: keyValuePair.value };\r\n layerSettings = layerSettings.clone({ accessKey: key });\r\n }\r\n return (format === undefined) ? undefined : format.createImageryProvider(layerSettings);\r\n }\r\n\r\n public async validateSource(formatId: string, url: string, credentials?: RequestBasicCredentials, ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\r\n const entry = this._formats.get(formatId);\r\n const format = entry?.type;\r\n return (format === undefined) ? { status: MapLayerSourceStatus.InvalidFormat } : format.validateSource(url, credentials, ignoreCache);\r\n }\r\n}\r\n"]}
@@ -35,7 +35,7 @@ export declare abstract class MapLayerImageryProvider {
35
35
  initialize(): Promise<void>;
36
36
  abstract constructUrl(row: number, column: number, zoomLevel: number): Promise<string>;
37
37
  get tilingScheme(): MapTilingScheme;
38
- getLogo(_viewport: ScreenViewport): HTMLTableRowElement | undefined;
38
+ addLogoCards(_cards: HTMLTableElement, _viewport: ScreenViewport): void;
39
39
  protected _missingTileData?: Uint8Array;
40
40
  get transparentBackgroundString(): string;
41
41
  protected _areChildrenAvailable(_tile: ImageryMapTile): Promise<boolean>;
@@ -54,6 +54,8 @@ export declare abstract class MapLayerImageryProvider {
54
54
  matchesMissingTile(tileData: Uint8Array): boolean;
55
55
  getEPSG3857X(longitude: number): number;
56
56
  getEPSG3857Y(latitude: number): number;
57
+ getEPSG4326Lon(x3857: number): number;
58
+ getEPSG4326Lat(y3857: number): number;
57
59
  getEPSG4326Extent(row: number, column: number, zoomLevel: number): {
58
60
  longitudeLeft: number;
59
61
  longitudeRight: number;
@@ -1 +1 @@
1
- {"version":3,"file":"MapLayerImageryProvider.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerImageryProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MapLayerImageryProvider.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerImageryProvider.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAU,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,WAAW,EAAqB,MAAM,oBAAoB,CAAC;AAIzG,OAAO,EAAoB,uBAAuB,EAAkB,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5G,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAA0B,cAAc,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,EAA2B,MAAM,aAAa,CAAC;AAOnL,gBAAgB;AAChB,oBAAY,6BAA6B;IACvC,KAAK,IAAA;IACL,WAAW,IAAA;CACZ;AAED;;GAEG;AACH,8BAAsB,uBAAuB;IAgB/B,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,qBAAqB;IAAE,SAAS,CAAC,gBAAgB,EAAE,OAAO;IAfpG,SAAS,CAAC,2BAA2B,UAAS;IACvC,MAAM,EAAE,6BAA6B,CAAuC;IACnF,SAAgB,eAAe,qBAA0B,uBAAuB,KAAK,IAAI,EAAI;IAC7F,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAiC;IACvE,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAgC;IAExE,IAAW,QAAQ,IAAI,MAAM,CAAqE;IAClG,IAAW,iBAAiB,WAAgC;IAC5D,IAAW,gBAAgB,IAAI,MAAM,CAAc;IACnD,IAAW,gBAAgB,IAAI,MAAM,CAAe;IACpD,IAAW,eAAe,YAAoC;IAC9D,IAAW,uBAAuB,IAAI,OAAO,CAAkB;IAC/D,IAAW,yBAAyB,YAAmB;IAChD,UAAU,CAAC,EAAE,iBAAiB,CAAC;IACtC,SAAS,KAAK,mBAAmB,YAAmB;gBACrB,SAAS,EAAE,qBAAqB,EAAY,gBAAgB,EAAE,OAAO;IAKvF,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;aAKxB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC7F,IAAW,YAAY,IAAI,eAAe,CAAwG;IAC3I,YAAY,CAAC,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAE,cAAc,GAAG,IAAI;IAC9E,SAAS,CAAC,gBAAgB,CAAC,EAAE,UAAU,CAAC;IACxC,IAAW,2BAA2B,IAAI,MAAM,CAAoE;cAEpG,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IACvE,oBAAoB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,EAAE;IAM3D,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,IAAI;IAIxF,gBAAgB,CAAC,IAAI,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,IAAI;IAQ9E,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAO5G,cAAc,CAAC,YAAY,EAAE,mBAAmB,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjJ,SAAS,CAAC,uBAAuB,IAAI,uBAAuB,GAAG,SAAS;IAIxE,SAAS,CAAC,wBAAwB,CAAC,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM;IAwBrE,SAAS,CAAC,MAAM,EAAE,6BAA6B;IAOzC,eAAe,CAAC,GAAG,EAAE,MAAM;IAM3B,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;cA+BvF,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;cAgB7D,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS3E,kBAAkB,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO;IAajD,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAKvC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAMtC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAKrC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAQrC,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE;IAgBjK,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAW/H,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAKtE,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,mBAAmB,EAAE,OAAO;CAU5G"}
@@ -10,11 +10,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.MapLayerImageryProvider = exports.MapLayerImageryProviderStatus = void 0;
11
11
  const core_bentley_1 = require("@itwin/core-bentley");
12
12
  const core_common_1 = require("@itwin/core-common");
13
+ const core_geometry_1 = require("@itwin/core-geometry");
13
14
  const IModelApp_1 = require("../../IModelApp");
14
15
  const NotificationManager_1 = require("../../NotificationManager");
15
16
  const Request_1 = require("../../request/Request");
16
17
  const internal_1 = require("../internal");
17
18
  const tileImageSize = 256, untiledImageSize = 256;
19
+ const earthRadius = 6378137;
18
20
  const doDebugToolTips = false;
19
21
  /** @internal */
20
22
  var MapLayerImageryProviderStatus;
@@ -52,7 +54,7 @@ class MapLayerImageryProvider {
52
54
  });
53
55
  }
54
56
  get tilingScheme() { return this.useGeographicTilingScheme ? this._geographicTilingScheme : this._mercatorTilingScheme; }
55
- getLogo(_viewport) { return undefined; }
57
+ addLogoCards(_cards, _viewport) { }
56
58
  get transparentBackgroundString() { return this._settings.transparentBackground ? "true" : "false"; }
57
59
  async _areChildrenAvailable(_tile) { return true; }
58
60
  getPotentialChildIds(tile) {
@@ -89,15 +91,18 @@ class MapLayerImageryProvider {
89
91
  if (this.matchesMissingTile(byteArray) && zoomLevel > 8)
90
92
  return undefined;
91
93
  let imageFormat;
92
- switch (tileResponse.header["content-type"]) {
93
- case "image/jpeg":
94
- imageFormat = core_common_1.ImageSourceFormat.Jpeg;
95
- break;
96
- case "image/png":
97
- imageFormat = core_common_1.ImageSourceFormat.Png;
98
- break;
99
- default:
100
- return undefined;
94
+ // Note: 'includes' is used here instead of exact comparison because we encountered
95
+ // some servers that would give content type such as 'image/png;charset=UTF-8'.
96
+ const contentType = tileResponse.header["content-type"].toLowerCase();
97
+ if (contentType.includes("image/jpeg")) {
98
+ imageFormat = core_common_1.ImageSourceFormat.Jpeg;
99
+ }
100
+ else if (contentType.includes("image/png")) {
101
+ imageFormat = core_common_1.ImageSourceFormat.Png;
102
+ }
103
+ else {
104
+ (0, core_bentley_1.assert)(false, "Invalid tile content type");
105
+ return undefined;
101
106
  }
102
107
  return new core_common_1.ImageSource(byteArray, imageFormat);
103
108
  }
@@ -181,6 +186,15 @@ class MapLayerImageryProvider {
181
186
  const y = Math.log(Math.tan((90.0 + latitude) * Math.PI / 360.0)) / (Math.PI / 180.0);
182
187
  return y * 20037508.34 / 180.0;
183
188
  }
189
+ // calculates the longitude in EPSG:4326 (WGS84) from the projected x cartesian coordinate in EPSG:3857
190
+ getEPSG4326Lon(x3857) {
191
+ return core_geometry_1.Angle.radiansToDegrees(x3857 / earthRadius);
192
+ }
193
+ // calculates the latitude in EPSG:4326 (WGS84) from the projected y cartesian coordinate in EPSG:3857
194
+ getEPSG4326Lat(y3857) {
195
+ const y = 2 * Math.atan(Math.exp(y3857 / earthRadius)) - (Math.PI / 2);
196
+ return core_geometry_1.Angle.radiansToDegrees(y);
197
+ }
184
198
  // Map tile providers like Bing and Mapbox allow the URL to be constructed directory from the zoom level and tile coordinates.
185
199
  // However, WMS-based servers take a bounding box instead. This method can help get that bounding box from a tile.
186
200
  getEPSG4326Extent(row, column, zoomLevel) {