@itwin/core-frontend 3.0.0-dev.179 → 3.0.0-dev.183

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 (133) hide show
  1. package/lib/cjs/BackgroundMapGeometry.d.ts +1 -1
  2. package/lib/cjs/BackgroundMapGeometry.d.ts.map +1 -1
  3. package/lib/cjs/BackgroundMapGeometry.js +2 -2
  4. package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
  5. package/lib/cjs/NotificationManager.d.ts +3 -1
  6. package/lib/cjs/NotificationManager.d.ts.map +1 -1
  7. package/lib/cjs/NotificationManager.js +2 -0
  8. package/lib/cjs/NotificationManager.js.map +1 -1
  9. package/lib/cjs/RealityDataSource.js +3 -1
  10. package/lib/cjs/RealityDataSource.js.map +1 -1
  11. package/lib/cjs/ViewContext.js.map +1 -1
  12. package/lib/cjs/ViewCreator3d.d.ts +1 -1
  13. package/lib/cjs/ViewCreator3d.d.ts.map +1 -1
  14. package/lib/cjs/ViewCreator3d.js +1 -1
  15. package/lib/cjs/ViewCreator3d.js.map +1 -1
  16. package/lib/cjs/ViewingSpace.js +1 -1
  17. package/lib/cjs/ViewingSpace.js.map +1 -1
  18. package/lib/cjs/core-frontend.d.ts +4 -0
  19. package/lib/cjs/core-frontend.d.ts.map +1 -1
  20. package/lib/cjs/core-frontend.js +4 -0
  21. package/lib/cjs/core-frontend.js.map +1 -1
  22. package/lib/cjs/render/GraphicBuilder.d.ts +6 -0
  23. package/lib/cjs/render/GraphicBuilder.d.ts.map +1 -1
  24. package/lib/cjs/render/GraphicBuilder.js.map +1 -1
  25. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts +2 -0
  26. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
  27. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js +2 -1
  28. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  29. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
  30. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js +1 -0
  31. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  32. package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts +2 -2
  33. package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
  34. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js +3 -3
  35. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  36. package/lib/cjs/render/webgl/BranchUniforms.d.ts.map +1 -1
  37. package/lib/cjs/render/webgl/BranchUniforms.js +8 -5
  38. package/lib/cjs/render/webgl/BranchUniforms.js.map +1 -1
  39. package/lib/cjs/render/webgl/SolarShadowMap.js +1 -1
  40. package/lib/cjs/render/webgl/SolarShadowMap.js.map +1 -1
  41. package/lib/cjs/tile/internal.d.ts +1 -0
  42. package/lib/cjs/tile/internal.d.ts.map +1 -1
  43. package/lib/cjs/tile/internal.js +1 -0
  44. package/lib/cjs/tile/internal.js.map +1 -1
  45. package/lib/cjs/tile/map/ArcGisUtilities.d.ts.map +1 -1
  46. package/lib/cjs/tile/map/ArcGisUtilities.js +7 -2
  47. package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
  48. package/lib/cjs/tile/map/MapLayerAuthentication.d.ts +20 -0
  49. package/lib/cjs/tile/map/MapLayerAuthentication.d.ts.map +1 -0
  50. package/lib/cjs/tile/map/MapLayerAuthentication.js +18 -0
  51. package/lib/cjs/tile/map/MapLayerAuthentication.js.map +1 -0
  52. package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts +5 -2
  53. package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
  54. package/lib/cjs/tile/map/MapLayerFormatRegistry.js +3 -1
  55. package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
  56. package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts +1 -1
  57. package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
  58. package/lib/cjs/tile/map/MapLayerImageryFormats.js +4 -2
  59. package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
  60. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +1 -1
  61. package/lib/cjs/tile/map/MapLayerImageryProvider.js +1 -1
  62. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  63. package/lib/cjs/tile/map/MapLayerSources.d.ts +3 -1
  64. package/lib/cjs/tile/map/MapLayerSources.d.ts.map +1 -1
  65. package/lib/cjs/tile/map/MapLayerSources.js +3 -1
  66. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  67. package/lib/esm/BackgroundMapGeometry.d.ts +1 -1
  68. package/lib/esm/BackgroundMapGeometry.d.ts.map +1 -1
  69. package/lib/esm/BackgroundMapGeometry.js +2 -2
  70. package/lib/esm/BackgroundMapGeometry.js.map +1 -1
  71. package/lib/esm/NotificationManager.d.ts +3 -1
  72. package/lib/esm/NotificationManager.d.ts.map +1 -1
  73. package/lib/esm/NotificationManager.js +2 -0
  74. package/lib/esm/NotificationManager.js.map +1 -1
  75. package/lib/esm/RealityDataSource.js +3 -1
  76. package/lib/esm/RealityDataSource.js.map +1 -1
  77. package/lib/esm/ViewContext.js.map +1 -1
  78. package/lib/esm/ViewCreator3d.d.ts +1 -1
  79. package/lib/esm/ViewCreator3d.d.ts.map +1 -1
  80. package/lib/esm/ViewCreator3d.js +1 -1
  81. package/lib/esm/ViewCreator3d.js.map +1 -1
  82. package/lib/esm/ViewingSpace.js +1 -1
  83. package/lib/esm/ViewingSpace.js.map +1 -1
  84. package/lib/esm/core-frontend.d.ts +4 -0
  85. package/lib/esm/core-frontend.d.ts.map +1 -1
  86. package/lib/esm/core-frontend.js +4 -0
  87. package/lib/esm/core-frontend.js.map +1 -1
  88. package/lib/esm/render/GraphicBuilder.d.ts +6 -0
  89. package/lib/esm/render/GraphicBuilder.d.ts.map +1 -1
  90. package/lib/esm/render/GraphicBuilder.js.map +1 -1
  91. package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts +2 -0
  92. package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
  93. package/lib/esm/render/primitives/geometry/GeometryAccumulator.js +2 -1
  94. package/lib/esm/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  95. package/lib/esm/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
  96. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js +1 -0
  97. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  98. package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts +2 -2
  99. package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
  100. package/lib/esm/render/primitives/mesh/MeshPrimitives.js +3 -3
  101. package/lib/esm/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  102. package/lib/esm/render/webgl/BranchUniforms.d.ts.map +1 -1
  103. package/lib/esm/render/webgl/BranchUniforms.js +8 -5
  104. package/lib/esm/render/webgl/BranchUniforms.js.map +1 -1
  105. package/lib/esm/render/webgl/SolarShadowMap.js +1 -1
  106. package/lib/esm/render/webgl/SolarShadowMap.js.map +1 -1
  107. package/lib/esm/tile/internal.d.ts +1 -0
  108. package/lib/esm/tile/internal.d.ts.map +1 -1
  109. package/lib/esm/tile/internal.js +1 -0
  110. package/lib/esm/tile/internal.js.map +1 -1
  111. package/lib/esm/tile/map/ArcGisUtilities.d.ts.map +1 -1
  112. package/lib/esm/tile/map/ArcGisUtilities.js +8 -3
  113. package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
  114. package/lib/esm/tile/map/MapLayerAuthentication.d.ts +20 -0
  115. package/lib/esm/tile/map/MapLayerAuthentication.d.ts.map +1 -0
  116. package/lib/esm/tile/map/MapLayerAuthentication.js +15 -0
  117. package/lib/esm/tile/map/MapLayerAuthentication.js.map +1 -0
  118. package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts +5 -2
  119. package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
  120. package/lib/esm/tile/map/MapLayerFormatRegistry.js +3 -1
  121. package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
  122. package/lib/esm/tile/map/MapLayerImageryFormats.d.ts +1 -1
  123. package/lib/esm/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
  124. package/lib/esm/tile/map/MapLayerImageryFormats.js +5 -3
  125. package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
  126. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +1 -1
  127. package/lib/esm/tile/map/MapLayerImageryProvider.js +1 -1
  128. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  129. package/lib/esm/tile/map/MapLayerSources.d.ts +3 -1
  130. package/lib/esm/tile/map/MapLayerSources.d.ts.map +1 -1
  131. package/lib/esm/tile/map/MapLayerSources.js +3 -1
  132. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  133. package/package.json +22 -22
@@ -1 +1 @@
1
- {"version":3,"file":"ArcGisUtilities.js","sourceRoot":"","sources":["../../../../src/tile/map/ArcGisUtilities.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\nimport { Angle } from \"@itwin/core-geometry\";\r\nimport { MapSubLayerProps } from \"@itwin/core-common\";\r\nimport { getJson, request, RequestBasicCredentials, RequestOptions, Response } from \"@bentley/itwin-client\";\r\nimport {\r\n ArcGisTokenClientType, ArcGisTokenManager, MapCartoRectangle, MapLayerSource, MapLayerSourceStatus, MapLayerSourceValidation,\r\n} from \"../internal\";\r\n\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n/** @internal */\r\nexport enum ArcGisErrorCode {\r\n InvalidCredentials = 401,\r\n InvalidToken = 498,\r\n TokenRequired = 499,\r\n UnknownError = 1000,\r\n NoTokenService = 1001,\r\n}\r\n\r\n/** @internal */\r\nexport class ArcGisUtilities {\r\n\r\n public static hasTokenError(response: Response): boolean {\r\n if (response.header && (response.header[\"content-type\"] as string)?.toLowerCase().includes(\"json\")) {\r\n try {\r\n // Tile response returns byte array, so we need to check the response data type and convert accordingly.\r\n const json = ((response.body instanceof ArrayBuffer) ? JSON.parse(Buffer.from(response.body).toString()) : response.body);\r\n return (json?.error?.code === ArcGisErrorCode.TokenRequired || json?.error?.code === ArcGisErrorCode.InvalidToken);\r\n } catch (_err) {\r\n return false; // that probably means we failed to convert byte array to JSON\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n private static getBBoxString(range?: MapCartoRectangle) {\r\n if (!range)\r\n range = MapCartoRectangle.create();\r\n\r\n return `${range.low.x * Angle.degreesPerRadian},${range.low.y * Angle.degreesPerRadian},${range.high.x * Angle.degreesPerRadian},${range.high.y * Angle.degreesPerRadian}`;\r\n }\r\n public static async getEndpoint(url: string): Promise<any | undefined> {\r\n const capabilities = await getJson(`${url}?f=pjson`);\r\n\r\n return capabilities;\r\n }\r\n public static async getNationalMapSources(): Promise<MapLayerSource[]> {\r\n const sources = new Array<MapLayerSource>();\r\n const services = await getJson(\"https://viewer.nationalmap.gov/tnmaccess/api/getMapServiceList\");\r\n\r\n if (!Array.isArray(services))\r\n return sources;\r\n\r\n for (const service of services) {\r\n if (service.wmsUrl.length === 0) // Exclude Wfs..\r\n continue;\r\n switch (service.serviceType) {\r\n case \"ArcGIS\":\r\n sources.push(MapLayerSource.fromJSON({ name: service.displayName, url: service.serviceLink, formatId: \"ArcGIS\" })!);\r\n break;\r\n default: {\r\n const wmsIndex = service.wmsUrl.lastIndexOf(\"/wms\");\r\n if (wmsIndex > 0) {\r\n const url = service.wmsUrl.slice(0, wmsIndex + 4);\r\n sources.push(MapLayerSource.fromJSON({ name: service.displayName, url, formatId: \"WMS\" })!);\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n return sources;\r\n }\r\n public static async getServiceDirectorySources(url: string, baseUrl?: string): Promise<MapLayerSource[]> {\r\n if (undefined === baseUrl)\r\n baseUrl = url;\r\n let sources = new Array<MapLayerSource>();\r\n const json = await getJson(`${url}?f=json`);\r\n if (json !== undefined) {\r\n if (Array.isArray(json.folders)) {\r\n for (const folder of json.folders) {\r\n sources = sources.concat(await ArcGisUtilities.getServiceDirectorySources(`${url}/${folder}`, url));\r\n }\r\n }\r\n if (Array.isArray(json.services)) {\r\n for (const service of json.services) {\r\n let source;\r\n if (service.type === \"MapServer\")\r\n source = MapLayerSource.fromJSON({ name: service.name, url: `${baseUrl}/${service.name}/MapServer`, formatId: \"ArcGIS\" });\r\n else if (service.type === \"ImageServer\")\r\n source = MapLayerSource.fromJSON({ name: service.name, url: `${baseUrl}/${service.name}/ImageServer`, formatId: \"ArcGIS\" });\r\n if (source)\r\n sources.push(source);\r\n }\r\n }\r\n }\r\n\r\n return sources;\r\n }\r\n public static async getSourcesFromQuery(range?: MapCartoRectangle, url = \"https://usgs.maps.arcgis.com/sharing/rest/search\"): Promise<MapLayerSource[]> {\r\n const sources = new Array<MapLayerSource>();\r\n for (let start = 1; start > 0;) {\r\n const json = await getJson(`${url}?f=json&q=(group:9d1199a521334e77a7d15abbc29f8144) AND (type:\"Map Service\")&bbox=${ArcGisUtilities.getBBoxString(range)}&sortOrder=desc&start=${start}&num=100`);\r\n if (!json) break;\r\n start = json.nextStart ? json.nextStart : -1;\r\n if (json !== undefined && Array.isArray(json.results)) {\r\n for (const result of json.results) {\r\n const source = MapLayerSource.fromJSON({ name: result.name ? result.name : result.title, url: result.url, formatId: \"ArcGIS\" });\r\n if (source)\r\n sources.push(source);\r\n }\r\n }\r\n }\r\n\r\n return sources;\r\n }\r\n\r\n public static async validateSource(url: string, credentials?: RequestBasicCredentials, ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\r\n const json = await this.getServiceJson(url, credentials, ignoreCache);\r\n if (json === undefined) {\r\n return { status: MapLayerSourceStatus.InvalidUrl };\r\n } else if (json.error !== undefined) {\r\n if (json.error.code === ArcGisErrorCode.TokenRequired) {\r\n return { status: MapLayerSourceStatus.RequireAuth };\r\n } else if (json.error.code === ArcGisErrorCode.InvalidCredentials)\r\n return { status: MapLayerSourceStatus.InvalidCredentials };\r\n }\r\n\r\n let subLayers;\r\n if (json.layers) {\r\n\r\n subLayers = new Array<MapSubLayerProps>();\r\n\r\n for (const layer of json.layers) {\r\n const parent = layer.parentLayerId < 0 ? undefined : layer.parentLayerId;\r\n const children = Array.isArray(layer.subLayerIds) ? layer.subLayerIds : undefined;\r\n subLayers.push({ name: layer.name, visible: layer.defaultVisibility !== false, id: layer.id, parent, children });\r\n }\r\n }\r\n return { status: MapLayerSourceStatus.Valid, subLayers };\r\n\r\n }\r\n private static _serviceCache = new Map<string, any>();\r\n public static async getServiceJson(url: string, credentials?: RequestBasicCredentials, ignoreCache?: boolean): Promise<any> {\r\n if (!ignoreCache) {\r\n const cached = ArcGisUtilities._serviceCache.get(url);\r\n if (cached !== undefined)\r\n return cached;\r\n }\r\n\r\n try {\r\n const options: RequestOptions = {\r\n method: \"GET\",\r\n responseType: \"json\",\r\n };\r\n let tokenParam = \"\";\r\n if (credentials) {\r\n const token = await ArcGisTokenManager.getToken(url, credentials.user, credentials.password, { client: ArcGisTokenClientType.referer });\r\n if (token?.token) {\r\n tokenParam = `&token=${token.token}`;\r\n } else if (token?.error)\r\n return token; // An error occurred, return immediately\r\n }\r\n const finalUrl = `${url}?f=json${tokenParam}`;\r\n const data = await request(finalUrl, options);\r\n const json = data.body ?? undefined;\r\n\r\n // Cache the response only if it doesn't contain a token error.\r\n if (!ArcGisUtilities.hasTokenError(data)) {\r\n ArcGisUtilities._serviceCache.set(url, json);\r\n }\r\n\r\n return json;\r\n } catch (_error) {\r\n ArcGisUtilities._serviceCache.set(url, undefined);\r\n return undefined;\r\n }\r\n }\r\n\r\n private static _footprintCache = new Map<string, any>();\r\n public static async getFootprintJson(url: string, credentials?: RequestBasicCredentials): Promise<any> {\r\n const cached = ArcGisUtilities._footprintCache.get(url);\r\n if (cached !== undefined)\r\n return cached;\r\n\r\n try {\r\n let tokenParam = \"\";\r\n if (credentials) {\r\n const token = await ArcGisTokenManager.getToken(url, credentials.user, credentials.password, { client: ArcGisTokenClientType.referer });\r\n if (token?.token)\r\n tokenParam = `&token=${token.token}`;\r\n }\r\n const json = await getJson(`${url}?f=json&option=footprints&outSR=4326${tokenParam}`);\r\n ArcGisUtilities._footprintCache.set(url, json);\r\n return json;\r\n } catch (_error) {\r\n ArcGisUtilities._footprintCache.set(url, undefined);\r\n return undefined;\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ArcGisUtilities.js","sourceRoot":"","sources":["../../../../src/tile/map/ArcGisUtilities.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\nimport { Angle } from \"@itwin/core-geometry\";\r\nimport { MapSubLayerProps } from \"@itwin/core-common\";\r\nimport { getJson, request, RequestBasicCredentials, RequestOptions, Response } from \"@bentley/itwin-client\";\r\nimport {\r\n ArcGisTokenClientType, ArcGisTokenManager, MapCartoRectangle, MapLayerAuthType, MapLayerSource, MapLayerSourceStatus, MapLayerSourceValidation,\r\n} from \"../internal\";\r\n\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n/** @internal */\r\nexport enum ArcGisErrorCode {\r\n InvalidCredentials = 401,\r\n InvalidToken = 498,\r\n TokenRequired = 499,\r\n UnknownError = 1000,\r\n NoTokenService = 1001,\r\n}\r\n\r\n/** @internal */\r\nexport class ArcGisUtilities {\r\n\r\n public static hasTokenError(response: Response): boolean {\r\n if (response.header && (response.header[\"content-type\"] as string)?.toLowerCase().includes(\"json\")) {\r\n try {\r\n // Tile response returns byte array, so we need to check the response data type and convert accordingly.\r\n const json = ((response.body instanceof ArrayBuffer) ? JSON.parse(Buffer.from(response.body).toString()) : response.body);\r\n return (json?.error?.code === ArcGisErrorCode.TokenRequired || json?.error?.code === ArcGisErrorCode.InvalidToken);\r\n } catch (_err) {\r\n return false; // that probably means we failed to convert byte array to JSON\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n private static getBBoxString(range?: MapCartoRectangle) {\r\n if (!range)\r\n range = MapCartoRectangle.create();\r\n\r\n return `${range.low.x * Angle.degreesPerRadian},${range.low.y * Angle.degreesPerRadian},${range.high.x * Angle.degreesPerRadian},${range.high.y * Angle.degreesPerRadian}`;\r\n }\r\n public static async getEndpoint(url: string): Promise<any | undefined> {\r\n const capabilities = await getJson(`${url}?f=pjson`);\r\n\r\n return capabilities;\r\n }\r\n public static async getNationalMapSources(): Promise<MapLayerSource[]> {\r\n const sources = new Array<MapLayerSource>();\r\n const services = await getJson(\"https://viewer.nationalmap.gov/tnmaccess/api/getMapServiceList\");\r\n\r\n if (!Array.isArray(services))\r\n return sources;\r\n\r\n for (const service of services) {\r\n if (service.wmsUrl.length === 0) // Exclude Wfs..\r\n continue;\r\n switch (service.serviceType) {\r\n case \"ArcGIS\":\r\n sources.push(MapLayerSource.fromJSON({ name: service.displayName, url: service.serviceLink, formatId: \"ArcGIS\" })!);\r\n break;\r\n default: {\r\n const wmsIndex = service.wmsUrl.lastIndexOf(\"/wms\");\r\n if (wmsIndex > 0) {\r\n const url = service.wmsUrl.slice(0, wmsIndex + 4);\r\n sources.push(MapLayerSource.fromJSON({ name: service.displayName, url, formatId: \"WMS\" })!);\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n return sources;\r\n }\r\n public static async getServiceDirectorySources(url: string, baseUrl?: string): Promise<MapLayerSource[]> {\r\n if (undefined === baseUrl)\r\n baseUrl = url;\r\n let sources = new Array<MapLayerSource>();\r\n const json = await getJson(`${url}?f=json`);\r\n if (json !== undefined) {\r\n if (Array.isArray(json.folders)) {\r\n for (const folder of json.folders) {\r\n sources = sources.concat(await ArcGisUtilities.getServiceDirectorySources(`${url}/${folder}`, url));\r\n }\r\n }\r\n if (Array.isArray(json.services)) {\r\n for (const service of json.services) {\r\n let source;\r\n if (service.type === \"MapServer\")\r\n source = MapLayerSource.fromJSON({ name: service.name, url: `${baseUrl}/${service.name}/MapServer`, formatId: \"ArcGIS\" });\r\n else if (service.type === \"ImageServer\")\r\n source = MapLayerSource.fromJSON({ name: service.name, url: `${baseUrl}/${service.name}/ImageServer`, formatId: \"ArcGIS\" });\r\n if (source)\r\n sources.push(source);\r\n }\r\n }\r\n }\r\n\r\n return sources;\r\n }\r\n public static async getSourcesFromQuery(range?: MapCartoRectangle, url = \"https://usgs.maps.arcgis.com/sharing/rest/search\"): Promise<MapLayerSource[]> {\r\n const sources = new Array<MapLayerSource>();\r\n for (let start = 1; start > 0;) {\r\n const json = await getJson(`${url}?f=json&q=(group:9d1199a521334e77a7d15abbc29f8144) AND (type:\"Map Service\")&bbox=${ArcGisUtilities.getBBoxString(range)}&sortOrder=desc&start=${start}&num=100`);\r\n if (!json) break;\r\n start = json.nextStart ? json.nextStart : -1;\r\n if (json !== undefined && Array.isArray(json.results)) {\r\n for (const result of json.results) {\r\n const source = MapLayerSource.fromJSON({ name: result.name ? result.name : result.title, url: result.url, formatId: \"ArcGIS\" });\r\n if (source)\r\n sources.push(source);\r\n }\r\n }\r\n }\r\n\r\n return sources;\r\n }\r\n\r\n public static async validateSource(url: string, credentials?: RequestBasicCredentials, ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\r\n\r\n let authMethod: MapLayerAuthType = MapLayerAuthType.None;\r\n\r\n const json = await this.getServiceJson(url, credentials, ignoreCache);\r\n if (json === undefined) {\r\n return { status: MapLayerSourceStatus.InvalidUrl };\r\n } else if (json.error !== undefined) {\r\n\r\n // If we got a 'Token Required' error, lets check what authentification methods this ESRI service offers\r\n // and return information needed to initiate the authentification process... the end-user\r\n // will have to provide his credentials before we can fully validate this source.\r\n if (json.error.code === ArcGisErrorCode.TokenRequired) {\r\n authMethod = MapLayerAuthType.EsriToken;\r\n return { status: MapLayerSourceStatus.RequireAuth, authInfo: { authMethod, tokenEndpoint: undefined } };\r\n } else if (json.error.code === ArcGisErrorCode.InvalidCredentials)\r\n return { status: MapLayerSourceStatus.InvalidCredentials, authInfo: { authMethod: MapLayerAuthType.EsriToken } };\r\n }\r\n\r\n let subLayers;\r\n if (json.layers) {\r\n\r\n subLayers = new Array<MapSubLayerProps>();\r\n\r\n for (const layer of json.layers) {\r\n const parent = layer.parentLayerId < 0 ? undefined : layer.parentLayerId;\r\n const children = Array.isArray(layer.subLayerIds) ? layer.subLayerIds : undefined;\r\n subLayers.push({ name: layer.name, visible: layer.defaultVisibility !== false, id: layer.id, parent, children });\r\n }\r\n }\r\n return { status: MapLayerSourceStatus.Valid, subLayers };\r\n }\r\n\r\n private static _serviceCache = new Map<string, any>();\r\n public static async getServiceJson(url: string, credentials?: RequestBasicCredentials, ignoreCache?: boolean): Promise<any> {\r\n if (!ignoreCache) {\r\n const cached = ArcGisUtilities._serviceCache.get(url);\r\n if (cached !== undefined)\r\n return cached;\r\n }\r\n\r\n try {\r\n const options: RequestOptions = {\r\n method: \"GET\",\r\n responseType: \"json\",\r\n };\r\n let tokenParam = \"\";\r\n if (credentials) {\r\n const token = await ArcGisTokenManager.getToken(url, credentials.user, credentials.password, { client: ArcGisTokenClientType.referer });\r\n if (token?.token) {\r\n tokenParam = `&token=${token.token}`;\r\n } else if (token?.error)\r\n return token; // An error occurred, return immediately\r\n }\r\n const finalUrl = `${url}?f=json${tokenParam}`;\r\n const data = await request(finalUrl, options);\r\n const json = data.body ?? undefined;\r\n\r\n // Cache the response only if it doesn't contain a token error.\r\n if (!ArcGisUtilities.hasTokenError(data)) {\r\n ArcGisUtilities._serviceCache.set(url, json);\r\n }\r\n\r\n return json;\r\n } catch (_error) {\r\n ArcGisUtilities._serviceCache.set(url, undefined);\r\n return undefined;\r\n }\r\n }\r\n\r\n private static _footprintCache = new Map<string, any>();\r\n public static async getFootprintJson(url: string, credentials?: RequestBasicCredentials): Promise<any> {\r\n const cached = ArcGisUtilities._footprintCache.get(url);\r\n if (cached !== undefined)\r\n return cached;\r\n\r\n try {\r\n let tokenParam = \"\";\r\n if (credentials) {\r\n const token = await ArcGisTokenManager.getToken(url, credentials.user, credentials.password, { client: ArcGisTokenClientType.referer });\r\n if (token?.token)\r\n tokenParam = `&token=${token.token}`;\r\n }\r\n const json = await getJson(`${url}?f=json&option=footprints&outSR=4326${tokenParam}`);\r\n ArcGisUtilities._footprintCache.set(url, json);\r\n return json;\r\n } catch (_error) {\r\n ArcGisUtilities._footprintCache.set(url, undefined);\r\n return undefined;\r\n }\r\n }\r\n}\r\n"]}
@@ -0,0 +1,20 @@
1
+ /** @packageDocumentation
2
+ * @module MapLayers
3
+ */
4
+ /** @beta */
5
+ export declare enum MapLayerAuthType {
6
+ None = 1,
7
+ Basic = 2,
8
+ EsriToken = 3
9
+ }
10
+ /** @internal */
11
+ export interface MapLayerTokenEndpoint {
12
+ getLoginUrl(stateData?: string): string | undefined;
13
+ getUrl(): string;
14
+ }
15
+ /** @internal */
16
+ export interface MapLayerAuthenticationInfo {
17
+ authMethod: MapLayerAuthType;
18
+ tokenEndpoint?: MapLayerTokenEndpoint;
19
+ }
20
+ //# sourceMappingURL=MapLayerAuthentication.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MapLayerAuthentication.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerAuthentication.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,YAAY;AACZ,oBAAY,gBAAgB;IAC1B,IAAI,IAAI;IACR,KAAK,IAAI;IACT,SAAS,IAAI;CACd;AACD,gBAAgB;AAChB,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAC,SAAS,CAAC;IAClD,MAAM,IAAI,MAAM,CAAC;CAClB;AAED,gBAAgB;AAChB,MAAM,WAAW,0BAA0B;IACzC,UAAU,EAAE,gBAAgB,CAAC;IAC7B,aAAa,CAAC,EAAE,qBAAqB,CAAC;CACvC"}
@@ -0,0 +1,15 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ /** @packageDocumentation
6
+ * @module MapLayers
7
+ */
8
+ /** @beta */
9
+ export var MapLayerAuthType;
10
+ (function (MapLayerAuthType) {
11
+ MapLayerAuthType[MapLayerAuthType["None"] = 1] = "None";
12
+ MapLayerAuthType[MapLayerAuthType["Basic"] = 2] = "Basic";
13
+ MapLayerAuthType[MapLayerAuthType["EsriToken"] = 3] = "EsriToken";
14
+ })(MapLayerAuthType || (MapLayerAuthType = {}));
15
+ //# sourceMappingURL=MapLayerAuthentication.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MapLayerAuthentication.js","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerAuthentication.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,YAAY;AACZ,MAAM,CAAN,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,uDAAQ,CAAA;IACR,yDAAS,CAAA;IACT,iEAAa,CAAA;AACf,CAAC,EAJW,gBAAgB,KAAhB,gBAAgB,QAI3B","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\n/** @beta */\r\nexport enum MapLayerAuthType {\r\n None = 1,\r\n Basic = 2,\r\n EsriToken = 3\r\n}\r\n/** @internal */\r\nexport interface MapLayerTokenEndpoint {\r\n getLoginUrl(stateData?: string): string|undefined;\r\n getUrl(): string;\r\n}\r\n\r\n/** @internal */\r\nexport interface MapLayerAuthenticationInfo {\r\n authMethod: MapLayerAuthType;\r\n tokenEndpoint?: MapLayerTokenEndpoint;\r\n}\r\n"]}
@@ -1,7 +1,9 @@
1
- /** @module Views */
1
+ /** @packageDocumentation
2
+ * @module MapLayers
3
+ */
2
4
  import { MapLayerKey, MapLayerSettings, MapSubLayerProps } from "@itwin/core-common";
3
5
  import { IModelConnection } from "../../IModelConnection";
4
- import { ImageryMapLayerTreeReference, MapLayerImageryProvider, MapLayerSourceStatus, MapLayerTileTreeReference } from "../internal";
6
+ import { ImageryMapLayerTreeReference, MapLayerAuthenticationInfo, MapLayerImageryProvider, MapLayerSourceStatus, MapLayerTileTreeReference } from "../internal";
5
7
  import { RequestBasicCredentials } from "@bentley/itwin-client";
6
8
  /** @internal */
7
9
  export declare class MapLayerFormat {
@@ -17,6 +19,7 @@ export declare type MapLayerFormatType = typeof MapLayerFormat;
17
19
  export interface MapLayerSourceValidation {
18
20
  status: MapLayerSourceStatus;
19
21
  subLayers?: MapSubLayerProps[];
22
+ authInfo?: MapLayerAuthenticationInfo;
20
23
  }
21
24
  /**
22
25
  * Options to be passed to the IModelApp on startup which contain access keys for various layer formats
@@ -1 +1 @@
1
- {"version":3,"file":"MapLayerFormatRegistry.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerFormatRegistry.ts"],"names":[],"mappings":"AAIA,oBAAoB;AAGpB,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAErF,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,4BAA4B,EAAkC,uBAAuB,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACrK,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,gBAAgB;AAChB,qBAAa,cAAc;IACzB,OAAc,QAAQ,EAAE,MAAM,CAAC;WACjB,QAAQ;WACR,qBAAqB,CAAC,SAAS,EAAE,gBAAgB,GAAG,uBAAuB,GAAG,SAAS;WACvF,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,gBAAgB;AAChB,oBAAY,kBAAkB,GAAG,OAAO,cAAc,CAAC;AAEvD,gBAAgB;AAChB,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAChC;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAE9B,SAAS,CAAC,EAAE,WAAW,CAAC;IAExB,aAAa,CAAC,EAAE,WAAW,CAAC;IAE5B,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC;CAC3C;AAED,gBAAgB;AAChB,qBAAa,sBAAsB;IACjC,OAAO,CAAC,cAAc,CAAkB;gBAC5B,IAAI,CAAC,EAAE,eAAe;IAIlC,OAAO,CAAC,QAAQ,CAAyC;IAClD,QAAQ,CAAC,WAAW,EAAE,kBAAkB;IAM/C,IAAW,aAAa,IAAI,eAAe,CAE1C;IACM,yBAAyB,CAAC,aAAa,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,4BAA4B,GAAG,SAAS;IAIlJ,qBAAqB,CAAC,aAAa,EAAE,gBAAgB,GAAG,uBAAuB,GAAG,SAAS;IASrF,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,uBAAuB,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,wBAAwB,CAAC;CAI5J"}
1
+ {"version":3,"file":"MapLayerFormatRegistry.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerFormatRegistry.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAErF,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,4BAA4B,EAAkC,0BAA0B,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACjM,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,gBAAgB;AAChB,qBAAa,cAAc;IACzB,OAAc,QAAQ,EAAE,MAAM,CAAC;WACjB,QAAQ;WACR,qBAAqB,CAAC,SAAS,EAAE,gBAAgB,GAAG,uBAAuB,GAAG,SAAS;WACvF,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,gBAAgB;AAChB,oBAAY,kBAAkB,GAAG,OAAO,cAAc,CAAC;AAEvD,gBAAgB;AAChB,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,QAAQ,CAAC,EAAE,0BAA0B,CAAC;CACvC;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAE9B,SAAS,CAAC,EAAE,WAAW,CAAC;IAExB,aAAa,CAAC,EAAE,WAAW,CAAC;IAE5B,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC;CAC3C;AAED,gBAAgB;AAChB,qBAAa,sBAAsB;IACjC,OAAO,CAAC,cAAc,CAAkB;gBAC5B,IAAI,CAAC,EAAE,eAAe;IAIlC,OAAO,CAAC,QAAQ,CAAyC;IAClD,QAAQ,CAAC,WAAW,EAAE,kBAAkB;IAM/C,IAAW,aAAa,IAAI,eAAe,CAE1C;IACM,yBAAyB,CAAC,aAAa,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,4BAA4B,GAAG,SAAS;IAIlJ,qBAAqB,CAAC,aAAa,EAAE,gBAAgB,GAAG,uBAAuB,GAAG,SAAS;IASrF,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,uBAAuB,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,wBAAwB,CAAC;CAI5J"}
@@ -2,7 +2,9 @@
2
2
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
- /** @module Views */
5
+ /** @packageDocumentation
6
+ * @module MapLayers
7
+ */
6
8
  import { assert } from "@itwin/core-bentley";
7
9
  import { IModelApp } from "../../IModelApp";
8
10
  import { internalMapLayerImageryFormats, MapLayerSourceStatus } from "../internal";
@@ -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/** @module Views */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { MapLayerKey, MapLayerSettings, MapSubLayerProps } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../../IModelApp\";\r\nimport { IModelConnection } from \"../../IModelConnection\";\r\nimport { ImageryMapLayerTreeReference, internalMapLayerImageryFormats, MapLayerImageryProvider, MapLayerSourceStatus, MapLayerTileTreeReference } from \"../internal\";\r\nimport { RequestBasicCredentials } from \"@bentley/itwin-client\";\r\n\r\n/** @internal */\r\nexport class MapLayerFormat {\r\n public static formatId: string;\r\n public static register() { IModelApp.mapLayerFormatRegistry.register(this); }\r\n public static createImageryProvider(_settings: MapLayerSettings): MapLayerImageryProvider | undefined { assert(false); }\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/** @internal */\r\nexport type MapLayerFormatType = typeof MapLayerFormat;\r\n\r\n/** @internal */\r\nexport interface MapLayerSourceValidation {\r\n status: MapLayerSourceStatus;\r\n subLayers?: MapSubLayerProps[];\r\n}\r\n\r\n/**\r\n * Options to be passed to the IModelApp on startup which contain access keys for various layer formats\r\n * @beta\r\n */\r\nexport interface MapLayerOptions {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n AzureMaps?: MapLayerKey;\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n MapBoxImagery?: MapLayerKey;\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n BingMaps?: MapLayerKey;\r\n [format: string]: MapLayerKey | undefined;\r\n}\r\n\r\n/** @internal */\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, MapLayerFormatType>();\r\n public register(formatClass: MapLayerFormatType) {\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, formatClass);\r\n }\r\n public get configOptions(): MapLayerOptions {\r\n return this._configOptions;\r\n }\r\n public createImageryMapLayerTree(layerSettings: MapLayerSettings, layerIndex: number, iModel: IModelConnection): ImageryMapLayerTreeReference | undefined {\r\n const format = this._formats.get(layerSettings.formatId);\r\n return format !== undefined ? (format.createMapLayerTree(layerSettings, layerIndex, iModel) as ImageryMapLayerTreeReference) : undefined;\r\n }\r\n public createImageryProvider(layerSettings: MapLayerSettings): MapLayerImageryProvider | undefined {\r\n const format = this._formats.get(layerSettings.formatId);\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 public async validateSource(formatId: string, url: string, credentials?: RequestBasicCredentials, ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\r\n const format = this._formats.get(formatId);\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 { MapLayerKey, MapLayerSettings, MapSubLayerProps } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../../IModelApp\";\r\nimport { IModelConnection } from \"../../IModelConnection\";\r\nimport { ImageryMapLayerTreeReference, internalMapLayerImageryFormats, MapLayerAuthenticationInfo, MapLayerImageryProvider, MapLayerSourceStatus, MapLayerTileTreeReference } from \"../internal\";\r\nimport { RequestBasicCredentials } from \"@bentley/itwin-client\";\r\n\r\n/** @internal */\r\nexport class MapLayerFormat {\r\n public static formatId: string;\r\n public static register() { IModelApp.mapLayerFormatRegistry.register(this); }\r\n public static createImageryProvider(_settings: MapLayerSettings): MapLayerImageryProvider | undefined { assert(false); }\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/** @internal */\r\nexport type MapLayerFormatType = typeof MapLayerFormat;\r\n\r\n/** @internal */\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 to be passed to the IModelApp on startup which contain access keys for various layer formats\r\n * @beta\r\n */\r\nexport interface MapLayerOptions {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n AzureMaps?: MapLayerKey;\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n MapBoxImagery?: MapLayerKey;\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n BingMaps?: MapLayerKey;\r\n [format: string]: MapLayerKey | undefined;\r\n}\r\n\r\n/** @internal */\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, MapLayerFormatType>();\r\n public register(formatClass: MapLayerFormatType) {\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, formatClass);\r\n }\r\n public get configOptions(): MapLayerOptions {\r\n return this._configOptions;\r\n }\r\n public createImageryMapLayerTree(layerSettings: MapLayerSettings, layerIndex: number, iModel: IModelConnection): ImageryMapLayerTreeReference | undefined {\r\n const format = this._formats.get(layerSettings.formatId);\r\n return format !== undefined ? (format.createMapLayerTree(layerSettings, layerIndex, iModel) as ImageryMapLayerTreeReference) : undefined;\r\n }\r\n public createImageryProvider(layerSettings: MapLayerSettings): MapLayerImageryProvider | undefined {\r\n const format = this._formats.get(layerSettings.formatId);\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 public async validateSource(formatId: string, url: string, credentials?: RequestBasicCredentials, ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\r\n const format = this._formats.get(formatId);\r\n return (format === undefined) ? { status: MapLayerSourceStatus.InvalidFormat } : format.validateSource(url, credentials, ignoreCache);\r\n }\r\n}\r\n"]}
@@ -1,5 +1,5 @@
1
1
  /** @packageDocumentation
2
- * @module Tiles
2
+ * @module MapLayers
3
3
  */
4
4
  import { MapLayerSettings } from "@itwin/core-common";
5
5
  import { RequestBasicCredentials } from "@bentley/itwin-client";
@@ -1 +1 @@
1
- {"version":3,"file":"MapLayerImageryFormats.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerImageryFormats.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAoB,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAOL,cAAc,EACd,uBAAuB,EAEvB,wBAAwB,EACxB,yBAAyB,EAO1B,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,cAAc;WAChC,kBAAkB,CAAC,aAAa,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,yBAAyB,GAAG,SAAS;CAGhK;AAED,cAAM,iBAAkB,SAAQ,qBAAqB;IACnD,OAAuB,QAAQ,SAAS;WAEjB,qBAAqB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,uBAAuB,GAAG,SAAS;WAGhF,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,uBAAuB,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,wBAAwB,CAAC;CAuD1J;AAiGD,gBAAgB;AAChB,eAAO,MAAM,8BAA8B,8BAA2K,CAAC"}
1
+ {"version":3,"file":"MapLayerImageryFormats.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerImageryFormats.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAoB,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EASL,cAAc,EACd,uBAAuB,EAEvB,wBAAwB,EACxB,yBAAyB,EAO1B,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,cAAc;WAChC,kBAAkB,CAAC,aAAa,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,yBAAyB,GAAG,SAAS;CAGhK;AAED,cAAM,iBAAkB,SAAQ,qBAAqB;IACnD,OAAuB,QAAQ,SAAS;WAEjB,qBAAqB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,uBAAuB,GAAG,SAAS;WAGhF,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,uBAAuB,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,wBAAwB,CAAC;CAyD1J;AAiGD,gBAAgB;AAChB,eAAO,MAAM,8BAA8B,8BAA2K,CAAC"}
@@ -3,9 +3,9 @@
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  /** @packageDocumentation
6
- * @module Tiles
6
+ * @module MapLayers
7
7
  */
8
- import { ArcGISMapLayerImageryProvider, ArcGisUtilities, AzureMapsLayerImageryProvider, BingMapsImageryLayerProvider, ImageryMapLayerTreeReference, MapBoxLayerImageryProvider, MapLayerFormat, MapLayerSourceStatus, TileUrlImageryProvider, WmsCapabilities, WmsMapLayerImageryProvider, WmtsCapabilities, WmtsMapLayerImageryProvider, } from "../internal";
8
+ import { ArcGISMapLayerImageryProvider, ArcGisUtilities, AzureMapsLayerImageryProvider, BingMapsImageryLayerProvider, ImageryMapLayerTreeReference, MapBoxLayerImageryProvider, MapLayerAuthType, MapLayerFormat, MapLayerSourceStatus, TileUrlImageryProvider, WmsCapabilities, WmsMapLayerImageryProvider, WmtsCapabilities, WmtsMapLayerImageryProvider, } from "../internal";
9
9
  /** Base class imagery map layer formats. Subclasses should override formatId and [[MapLayerFormat.createImageryProvider]].
10
10
  * @internal
11
11
  */
@@ -63,10 +63,12 @@ class WmsMapLayerFormat extends ImageryMapLayerFormat {
63
63
  }
64
64
  catch (err) {
65
65
  let status = MapLayerSourceStatus.InvalidUrl;
66
+ let authInfo;
66
67
  if ((err === null || err === void 0 ? void 0 : err.status) === 401) {
67
68
  status = (credentials ? MapLayerSourceStatus.InvalidCredentials : MapLayerSourceStatus.RequireAuth);
69
+ authInfo = { authMethod: MapLayerAuthType.Basic };
68
70
  }
69
- return { status };
71
+ return { status, authInfo };
70
72
  }
71
73
  }
72
74
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MapLayerImageryFormats.js","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerImageryFormats.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAKH,OAAO,EACL,6BAA6B,EAC7B,eAAe,EACf,6BAA6B,EAC7B,4BAA4B,EAC5B,4BAA4B,EAC5B,0BAA0B,EAC1B,cAAc,EAEd,oBAAoB,EAGpB,sBAAsB,EACtB,eAAe,EACf,0BAA0B,EAC1B,gBAAgB,EAEhB,2BAA2B,GAC5B,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,cAAc;IAChD,MAAM,CAAU,kBAAkB,CAAC,aAA+B,EAAE,UAAkB,EAAE,MAAwB;QACrH,OAAO,IAAI,4BAA4B,CAAC,aAAa,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAC7E,CAAC;CACF;AAED,MAAM,iBAAkB,SAAQ,qBAAqB;IAG5C,MAAM,CAAU,qBAAqB,CAAC,QAA0B;QACrE,OAAO,IAAI,0BAA0B,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC;IACM,MAAM,CAAU,KAAK,CAAC,cAAc,CAAC,GAAW,EAAE,WAAqC,EAAE,WAAqB;QACnH,IAAI;YACF,IAAI,SAAyC,CAAC;YAC9C,MAAM,mBAAmB,GAAG,EAAE,CAAC;YAC/B,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;YACjF,IAAI,YAAY,KAAK,SAAS,EAAE;gBAC9B,SAAS,GAAG,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBAC7C,MAAM,aAAa,GAAG,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;gBACnF,MAAM,gBAAgB,GAAG,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,mBAAmB,CAAC;gBAE7E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;oBAC3B,OAAO,EAAE,MAAM,EAAE,oBAAoB,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC;gBAE3D,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;oBAChC,oGAAoG;oBACpG,mDAAmD;oBACnD,2FAA2F;oBAC3F,IAAI,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,EAAE,MAAK,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,EAAE,CAAA;2BAC/C,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,gBAAgB,CAAC,EAAE;wBACvE,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;wBACxB,MAAM,CAAE,oEAAoE;qBAC7E;oBAED,0CAA0C;oBAC1C,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,MAAK,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,EAAE,CAAA,IAAI,CAAC,gBAAgB,EAAE;wBACjF,MAAM,cAAc,GAAG,CAAC,KAAuB,EAAE,EAAE,GAAG,OAAO,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBACxJ,MAAM,mBAAmB,GAAG,CAAC,MAAsC,EAAE,KAAuB,EAAE,EAAE;;4BAC9F,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,0CAAE,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gCACnC,MAAM,aAAa,GAAG,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,EAAE,MAAK,OAAO,CAAC,CAAC;gCACxE,IAAI,aAAa,EAAE;oCACjB,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC;oCAC7B,IAAI,cAAc,CAAC,aAAa,CAAC;wCAC/B,mBAAmB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;iCAC9C;4BACH,CAAC,CAAC,CAAC;wBACL,CAAC,CAAC;wBAEF,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;wBAExB,mGAAmG;wBACnG,IAAI,cAAc,CAAC,QAAQ,CAAC;4BAC1B,mBAAmB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;qBAC5C;iBACF;aACF;YAED,OAAO,EAAE,MAAM,EAAE,oBAAoB,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC;SAC1D;QAAC,OAAO,GAAQ,EAAE;YACjB,IAAI,MAAM,GAAG,oBAAoB,CAAC,UAAU,CAAC;YAC7C,IAAI,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,MAAK,GAAG,EAAE;gBACvB,MAAM,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;aACrG;YACD,OAAO,EAAE,MAAM,EAAE,CAAC;SACnB;IACH,CAAC;;AA3DsB,0BAAQ,GAAG,KAAK,CAAC;AA8D1C,MAAM,kBAAmB,SAAQ,qBAAqB;IAG7C,MAAM,CAAU,qBAAqB,CAAC,QAA0B;QACrE,OAAO,IAAI,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC;IAEM,MAAM,CAAU,KAAK,CAAC,cAAc,CAAC,GAAW,EAAE,WAAqC,EAAE,WAAqB;;QACnH,IAAI;YACF,MAAM,SAAS,GAAuB,EAAE,CAAC;YACzC,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;YAClF,IAAI,CAAC,YAAY;gBACf,OAAO,EAAE,MAAM,EAAE,oBAAoB,CAAC,UAAU,EAAE,CAAC;YAErD,2FAA2F;YAC3F,IAAI,YAAY,GAAoC,EAAE,CAAC;YACvD,MAAM,aAAa,GAAG,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,QAAQ,0CAAE,oCAAoC,EAAE,CAAC;YACrF,IAAI,aAAa,EAAE;gBACjB,YAAY,GAAG,aAAa,CAAC;aAC9B;YACD,MAAM,QAAQ,GAAG,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,QAAQ,0CAAE,kCAAkC,EAAE,CAAC;YAC9E,IAAI,QAAQ,EAAE;gBACZ,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;aAC9C;YAED,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC7B,8DAA8D;gBAC9D,OAAO,EAAE,MAAM,EAAE,oBAAoB,CAAC,eAAe,EAAE,CAAC;aACzD;YAED,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,QAAQ,0CAAE,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;;gBAC/C,MAAM,eAAe,GAAG,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;oBACjD,OAAO,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,KAAK,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtG,CAAC,CAAC,CAAC;gBACH,IAAI,eAAe,EAAE;oBACnB,SAAS,CAAC,IAAI,CAAC;wBACb,IAAI,EAAE,KAAK,CAAC,UAAU;wBACtB,KAAK,EAAE,MAAA,KAAK,CAAC,KAAK,mCAAI,KAAK,CAAC,UAAU;wBACtC,OAAO,EAAE,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC;wBACjC,MAAM,EAAE,SAAS;wBACjB,QAAQ,EAAE,SAAS;wBACnB,EAAE,EAAE,UAAU,EAAE;qBACjB,CAAC,CAAC;iBACJ;YACH,CAAC,CAAC,CAAC;YAEH,2DAA2D;YAC3D,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;gBACxB,OAAO,EAAE,MAAM,EAAE,oBAAoB,CAAC,eAAe,EAAE,CAAC;YAE1D,OAAO,EAAE,MAAM,EAAE,oBAAoB,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC;SAC1D;QAAC,OAAO,GAAG,EAAE;YACZ,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,iCAAiC;YACrD,OAAO,EAAE,MAAM,EAAE,oBAAoB,CAAC,UAAU,EAAE,CAAC;SACpD;IACH,CAAC;;AAvDsB,2BAAQ,GAAG,MAAM,CAAC;AA2D3C,MAAM,oBAAqB,SAAQ,qBAAqB;IAE/C,MAAM,CAAU,KAAK,CAAC,cAAc,CAAC,GAAW,EAAE,WAAqC,EAAE,WAAqB;QACnH,OAAO,eAAe,CAAC,cAAc,CAAC,GAAG,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IACvE,CAAC;IACM,MAAM,CAAU,qBAAqB,CAAC,QAA0B;QACrE,OAAO,IAAI,6BAA6B,CAAC,QAAQ,CAAC,CAAC;IACrD,CAAC;;AANsB,6BAAQ,GAAG,QAAQ,CAAC;AAS7C,6DAA6D;AAC7D,MAAM,uBAAwB,SAAQ,qBAAqB;IAElD,MAAM,CAAU,qBAAqB,CAAC,QAA0B;QACrE,OAAO,IAAI,6BAA6B,CAAC,QAAQ,CAAC,CAAC;IACrD,CAAC;;AAHsB,gCAAQ,GAAG,WAAW,CAAC;AAKhD,MAAM,sBAAuB,SAAQ,qBAAqB;IAEjD,MAAM,CAAU,qBAAqB,CAAC,QAA0B;QACrE,OAAO,IAAI,4BAA4B,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC;;AAHsB,+BAAQ,GAAG,UAAU,CAAC;AAM/C,MAAM,2BAA4B,SAAQ,qBAAqB;IAEtD,MAAM,CAAU,qBAAqB,CAAC,QAA0B;QACrE,OAAO,IAAI,0BAA0B,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC;;AAHsB,oCAAQ,GAAG,eAAe,CAAC;AAKpD,MAAM,qBAAsB,SAAQ,qBAAqB;IAEhD,MAAM,CAAU,qBAAqB,CAAC,QAA0B,IAAyC,OAAO,IAAI,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;;AADvI,8BAAQ,GAAG,SAAS,CAAC;AAI9C,gBAAgB;AAChB,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,iBAAiB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,8BAA8B,CAAC,sBAAsB,EAAE,2BAA2B,EAAE,qBAAqB,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport { MapLayerSettings, MapSubLayerProps } from \"@itwin/core-common\";\r\nimport { RequestBasicCredentials } from \"@bentley/itwin-client\";\r\nimport { IModelConnection } from \"../../IModelConnection\";\r\nimport {\r\n ArcGISMapLayerImageryProvider,\r\n ArcGisUtilities,\r\n AzureMapsLayerImageryProvider,\r\n BingMapsImageryLayerProvider,\r\n ImageryMapLayerTreeReference,\r\n MapBoxLayerImageryProvider,\r\n MapLayerFormat,\r\n MapLayerImageryProvider,\r\n MapLayerSourceStatus,\r\n MapLayerSourceValidation,\r\n MapLayerTileTreeReference,\r\n TileUrlImageryProvider,\r\n WmsCapabilities,\r\n WmsMapLayerImageryProvider,\r\n WmtsCapabilities,\r\n WmtsCapability,\r\n WmtsMapLayerImageryProvider,\r\n} from \"../internal\";\r\n\r\n/** Base class imagery map layer formats. Subclasses should override formatId and [[MapLayerFormat.createImageryProvider]].\r\n * @internal\r\n */\r\nexport class ImageryMapLayerFormat extends MapLayerFormat {\r\n public static override createMapLayerTree(layerSettings: MapLayerSettings, layerIndex: number, iModel: IModelConnection): MapLayerTileTreeReference | undefined {\r\n return new ImageryMapLayerTreeReference(layerSettings, layerIndex, iModel);\r\n }\r\n}\r\n\r\nclass WmsMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"WMS\";\r\n\r\n public static override createImageryProvider(settings: MapLayerSettings): MapLayerImageryProvider | undefined {\r\n return new WmsMapLayerImageryProvider(settings);\r\n }\r\n public static override async validateSource(url: string, credentials?: RequestBasicCredentials, ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\r\n try {\r\n let subLayers: MapSubLayerProps[] | undefined;\r\n const maxVisibleSubLayers = 50;\r\n const capabilities = await WmsCapabilities.create(url, credentials, ignoreCache);\r\n if (capabilities !== undefined) {\r\n subLayers = capabilities.getSubLayers(false);\r\n const rootsSubLayer = subLayers?.find((sublayer) => sublayer.parent === undefined);\r\n const hasTooManyLayers = subLayers && subLayers.length > maxVisibleSubLayers;\r\n\r\n if (!Array.isArray(subLayers))\r\n return { status: MapLayerSourceStatus.Valid, subLayers };\r\n\r\n for (const subLayer of subLayers) {\r\n // In general for WMS, we prefer to have the children of root node visible, but not the root itself.\r\n // Thats simply to give more flexibility in the UI.\r\n // Two exceptions to this rule: If there are too many layers or the root node is not named.\r\n if (subLayer.id && subLayer.id === rootsSubLayer?.id\r\n && (!(subLayer.name && subLayer.name.length > 0) || hasTooManyLayers)) {\r\n subLayer.visible = true;\r\n break; // if root node is visible, don't bother turning ON any other layers\r\n }\r\n\r\n // Make children of the root node visible.\r\n if (subLayer.parent && subLayer.parent === rootsSubLayer?.id && !hasTooManyLayers) {\r\n const isUnnamedGroup = (layer: MapSubLayerProps) => { return layer.children && layer.children.length > 0 && (!layer.name || layer.name.length === 0); };\r\n const makeChildrenVisible = (layers: MapSubLayerProps[] | undefined, layer: MapSubLayerProps) => {\r\n layer?.children?.forEach((childId) => {\r\n const childSubLayer = subLayers?.find((child) => child?.id === childId);\r\n if (childSubLayer) {\r\n childSubLayer.visible = true;\r\n if (isUnnamedGroup(childSubLayer))\r\n makeChildrenVisible(layers, childSubLayer);\r\n }\r\n });\r\n };\r\n\r\n subLayer.visible = true;\r\n\r\n // If we got a unnamed group, make children visible recursively until we have a leaf or named group\r\n if (isUnnamedGroup(subLayer))\r\n makeChildrenVisible(subLayers, subLayer);\r\n }\r\n }\r\n }\r\n\r\n return { status: MapLayerSourceStatus.Valid, subLayers };\r\n } catch (err: any) {\r\n let status = MapLayerSourceStatus.InvalidUrl;\r\n if (err?.status === 401) {\r\n status = (credentials ? MapLayerSourceStatus.InvalidCredentials : MapLayerSourceStatus.RequireAuth);\r\n }\r\n return { status };\r\n }\r\n }\r\n}\r\n\r\nclass WmtsMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"WMTS\";\r\n\r\n public static override createImageryProvider(settings: MapLayerSettings): MapLayerImageryProvider | undefined {\r\n return new WmtsMapLayerImageryProvider(settings);\r\n }\r\n\r\n public static override async validateSource(url: string, credentials?: RequestBasicCredentials, ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\r\n try {\r\n const subLayers: MapSubLayerProps[] = [];\r\n const capabilities = await WmtsCapabilities.create(url, credentials, ignoreCache);\r\n if (!capabilities)\r\n return { status: MapLayerSourceStatus.InvalidUrl };\r\n\r\n // Only returns layer that can be published in the Google maps or WGS84 aligned tile trees.\r\n let supportedTms: WmtsCapability.TileMatrixSet[] = [];\r\n const googleMapsTms = capabilities?.contents?.getGoogleMapsCompatibleTileMatrixSet();\r\n if (googleMapsTms) {\r\n supportedTms = googleMapsTms;\r\n }\r\n const wsg84Tms = capabilities?.contents?.getEpsg4326CompatibleTileMatrixSet();\r\n if (wsg84Tms) {\r\n supportedTms = supportedTms.concat(wsg84Tms);\r\n }\r\n\r\n if (supportedTms.length === 0) {\r\n // This WMTS server doesn't support either GoogleMaps or WSG84\r\n return { status: MapLayerSourceStatus.InvalidTileTree };\r\n }\r\n\r\n let subLayerId = 0;\r\n capabilities?.contents?.layers.forEach((layer) => {\r\n const hasSupportedTms = supportedTms?.some((tms) => {\r\n return layer.tileMatrixSetLinks.some((tmls) => { return (tmls.tileMatrixSet === tms.identifier); });\r\n });\r\n if (hasSupportedTms) {\r\n subLayers.push({\r\n name: layer.identifier,\r\n title: layer.title ?? layer.identifier,\r\n visible: (subLayers.length === 0), // Make the first layer visible.\r\n parent: undefined,\r\n children: undefined,\r\n id: subLayerId++,\r\n });\r\n }\r\n });\r\n\r\n // Return error if we could find a single compatible layer.\r\n if (subLayers.length === 0)\r\n return { status: MapLayerSourceStatus.InvalidTileTree };\r\n\r\n return { status: MapLayerSourceStatus.Valid, subLayers };\r\n } catch (err) {\r\n console.error(err); // eslint-disable-line no-console\r\n return { status: MapLayerSourceStatus.InvalidUrl };\r\n }\r\n }\r\n\r\n}\r\n\r\nclass ArcGISMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"ArcGIS\";\r\n public static override async validateSource(url: string, credentials?: RequestBasicCredentials, ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\r\n return ArcGisUtilities.validateSource(url, credentials, ignoreCache);\r\n }\r\n public static override createImageryProvider(settings: MapLayerSettings): MapLayerImageryProvider | undefined {\r\n return new ArcGISMapLayerImageryProvider(settings);\r\n }\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\nclass AzureMapsMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"AzureMaps\";\r\n public static override createImageryProvider(settings: MapLayerSettings): MapLayerImageryProvider | undefined {\r\n return new AzureMapsLayerImageryProvider(settings);\r\n }\r\n}\r\nclass BingMapsMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"BingMaps\";\r\n public static override createImageryProvider(settings: MapLayerSettings): MapLayerImageryProvider | undefined {\r\n return new BingMapsImageryLayerProvider(settings);\r\n }\r\n}\r\n\r\nclass MapBoxImageryMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"MapboxImagery\";\r\n public static override createImageryProvider(settings: MapLayerSettings): MapLayerImageryProvider | undefined {\r\n return new MapBoxLayerImageryProvider(settings);\r\n }\r\n}\r\nclass TileUrlMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"TileURL\";\r\n public static override createImageryProvider(settings: MapLayerSettings): MapLayerImageryProvider | undefined { return new TileUrlImageryProvider(settings); }\r\n}\r\n\r\n/** @internal */\r\nexport const internalMapLayerImageryFormats = [WmsMapLayerFormat, WmtsMapLayerFormat, ArcGISMapLayerFormat, /* AzureMapsMapLayerFormat, */ BingMapsMapLayerFormat, MapBoxImageryMapLayerFormat, TileUrlMapLayerFormat];\r\n"]}
1
+ {"version":3,"file":"MapLayerImageryFormats.js","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerImageryFormats.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAKH,OAAO,EACL,6BAA6B,EAC7B,eAAe,EACf,6BAA6B,EAC7B,4BAA4B,EAC5B,4BAA4B,EAC5B,0BAA0B,EAE1B,gBAAgB,EAChB,cAAc,EAEd,oBAAoB,EAGpB,sBAAsB,EACtB,eAAe,EACf,0BAA0B,EAC1B,gBAAgB,EAEhB,2BAA2B,GAC5B,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,cAAc;IAChD,MAAM,CAAU,kBAAkB,CAAC,aAA+B,EAAE,UAAkB,EAAE,MAAwB;QACrH,OAAO,IAAI,4BAA4B,CAAC,aAAa,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAC7E,CAAC;CACF;AAED,MAAM,iBAAkB,SAAQ,qBAAqB;IAG5C,MAAM,CAAU,qBAAqB,CAAC,QAA0B;QACrE,OAAO,IAAI,0BAA0B,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC;IACM,MAAM,CAAU,KAAK,CAAC,cAAc,CAAC,GAAW,EAAE,WAAqC,EAAE,WAAqB;QACnH,IAAI;YACF,IAAI,SAAyC,CAAC;YAC9C,MAAM,mBAAmB,GAAG,EAAE,CAAC;YAC/B,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;YACjF,IAAI,YAAY,KAAK,SAAS,EAAE;gBAC9B,SAAS,GAAG,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBAC7C,MAAM,aAAa,GAAG,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;gBACnF,MAAM,gBAAgB,GAAG,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,mBAAmB,CAAC;gBAE7E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;oBAC3B,OAAO,EAAE,MAAM,EAAE,oBAAoB,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC;gBAE3D,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;oBAChC,oGAAoG;oBACpG,mDAAmD;oBACnD,2FAA2F;oBAC3F,IAAI,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,EAAE,MAAK,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,EAAE,CAAA;2BAC/C,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,gBAAgB,CAAC,EAAE;wBACvE,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;wBACxB,MAAM,CAAE,oEAAoE;qBAC7E;oBAED,0CAA0C;oBAC1C,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,MAAK,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,EAAE,CAAA,IAAI,CAAC,gBAAgB,EAAE;wBACjF,MAAM,cAAc,GAAG,CAAC,KAAuB,EAAE,EAAE,GAAG,OAAO,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBACxJ,MAAM,mBAAmB,GAAG,CAAC,MAAsC,EAAE,KAAuB,EAAE,EAAE;;4BAC9F,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,0CAAE,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gCACnC,MAAM,aAAa,GAAG,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,EAAE,MAAK,OAAO,CAAC,CAAC;gCACxE,IAAI,aAAa,EAAE;oCACjB,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC;oCAC7B,IAAI,cAAc,CAAC,aAAa,CAAC;wCAC/B,mBAAmB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;iCAC9C;4BACH,CAAC,CAAC,CAAC;wBACL,CAAC,CAAC;wBAEF,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;wBAExB,mGAAmG;wBACnG,IAAI,cAAc,CAAC,QAAQ,CAAC;4BAC1B,mBAAmB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;qBAC5C;iBACF;aACF;YAED,OAAO,EAAE,MAAM,EAAE,oBAAoB,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC;SAC1D;QAAC,OAAO,GAAQ,EAAE;YACjB,IAAI,MAAM,GAAG,oBAAoB,CAAC,UAAU,CAAC;YAC7C,IAAI,QAA8C,CAAC;YACnD,IAAI,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,MAAK,GAAG,EAAE;gBACvB,MAAM,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;gBACpG,QAAQ,GAAG,EAAC,UAAU,EAAE,gBAAgB,CAAC,KAAK,EAAC,CAAC;aACjD;YACD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAC,CAAC;SAC5B;IACH,CAAC;;AA7DsB,0BAAQ,GAAG,KAAK,CAAC;AAgE1C,MAAM,kBAAmB,SAAQ,qBAAqB;IAG7C,MAAM,CAAU,qBAAqB,CAAC,QAA0B;QACrE,OAAO,IAAI,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC;IAEM,MAAM,CAAU,KAAK,CAAC,cAAc,CAAC,GAAW,EAAE,WAAqC,EAAE,WAAqB;;QACnH,IAAI;YACF,MAAM,SAAS,GAAuB,EAAE,CAAC;YACzC,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;YAClF,IAAI,CAAC,YAAY;gBACf,OAAO,EAAE,MAAM,EAAE,oBAAoB,CAAC,UAAU,EAAE,CAAC;YAErD,2FAA2F;YAC3F,IAAI,YAAY,GAAoC,EAAE,CAAC;YACvD,MAAM,aAAa,GAAG,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,QAAQ,0CAAE,oCAAoC,EAAE,CAAC;YACrF,IAAI,aAAa,EAAE;gBACjB,YAAY,GAAG,aAAa,CAAC;aAC9B;YACD,MAAM,QAAQ,GAAG,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,QAAQ,0CAAE,kCAAkC,EAAE,CAAC;YAC9E,IAAI,QAAQ,EAAE;gBACZ,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;aAC9C;YAED,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC7B,8DAA8D;gBAC9D,OAAO,EAAE,MAAM,EAAE,oBAAoB,CAAC,eAAe,EAAE,CAAC;aACzD;YAED,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,QAAQ,0CAAE,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;;gBAC/C,MAAM,eAAe,GAAG,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;oBACjD,OAAO,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,KAAK,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtG,CAAC,CAAC,CAAC;gBACH,IAAI,eAAe,EAAE;oBACnB,SAAS,CAAC,IAAI,CAAC;wBACb,IAAI,EAAE,KAAK,CAAC,UAAU;wBACtB,KAAK,EAAE,MAAA,KAAK,CAAC,KAAK,mCAAI,KAAK,CAAC,UAAU;wBACtC,OAAO,EAAE,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC;wBACjC,MAAM,EAAE,SAAS;wBACjB,QAAQ,EAAE,SAAS;wBACnB,EAAE,EAAE,UAAU,EAAE;qBACjB,CAAC,CAAC;iBACJ;YACH,CAAC,CAAC,CAAC;YAEH,2DAA2D;YAC3D,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;gBACxB,OAAO,EAAE,MAAM,EAAE,oBAAoB,CAAC,eAAe,EAAE,CAAC;YAE1D,OAAO,EAAE,MAAM,EAAE,oBAAoB,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC;SAC1D;QAAC,OAAO,GAAG,EAAE;YACZ,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,iCAAiC;YACrD,OAAO,EAAE,MAAM,EAAE,oBAAoB,CAAC,UAAU,EAAE,CAAC;SACpD;IACH,CAAC;;AAvDsB,2BAAQ,GAAG,MAAM,CAAC;AA2D3C,MAAM,oBAAqB,SAAQ,qBAAqB;IAE/C,MAAM,CAAU,KAAK,CAAC,cAAc,CAAC,GAAW,EAAE,WAAqC,EAAE,WAAqB;QACnH,OAAO,eAAe,CAAC,cAAc,CAAC,GAAG,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IACvE,CAAC;IACM,MAAM,CAAU,qBAAqB,CAAC,QAA0B;QACrE,OAAO,IAAI,6BAA6B,CAAC,QAAQ,CAAC,CAAC;IACrD,CAAC;;AANsB,6BAAQ,GAAG,QAAQ,CAAC;AAS7C,6DAA6D;AAC7D,MAAM,uBAAwB,SAAQ,qBAAqB;IAElD,MAAM,CAAU,qBAAqB,CAAC,QAA0B;QACrE,OAAO,IAAI,6BAA6B,CAAC,QAAQ,CAAC,CAAC;IACrD,CAAC;;AAHsB,gCAAQ,GAAG,WAAW,CAAC;AAKhD,MAAM,sBAAuB,SAAQ,qBAAqB;IAEjD,MAAM,CAAU,qBAAqB,CAAC,QAA0B;QACrE,OAAO,IAAI,4BAA4B,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC;;AAHsB,+BAAQ,GAAG,UAAU,CAAC;AAM/C,MAAM,2BAA4B,SAAQ,qBAAqB;IAEtD,MAAM,CAAU,qBAAqB,CAAC,QAA0B;QACrE,OAAO,IAAI,0BAA0B,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC;;AAHsB,oCAAQ,GAAG,eAAe,CAAC;AAKpD,MAAM,qBAAsB,SAAQ,qBAAqB;IAEhD,MAAM,CAAU,qBAAqB,CAAC,QAA0B,IAAyC,OAAO,IAAI,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;;AADvI,8BAAQ,GAAG,SAAS,CAAC;AAI9C,gBAAgB;AAChB,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,iBAAiB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,8BAA8B,CAAC,sBAAsB,EAAE,2BAA2B,EAAE,qBAAqB,CAAC,CAAC","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 { MapLayerSettings, MapSubLayerProps } from \"@itwin/core-common\";\r\nimport { RequestBasicCredentials } from \"@bentley/itwin-client\";\r\nimport { IModelConnection } from \"../../IModelConnection\";\r\nimport {\r\n ArcGISMapLayerImageryProvider,\r\n ArcGisUtilities,\r\n AzureMapsLayerImageryProvider,\r\n BingMapsImageryLayerProvider,\r\n ImageryMapLayerTreeReference,\r\n MapBoxLayerImageryProvider,\r\n MapLayerAuthenticationInfo,\r\n MapLayerAuthType,\r\n MapLayerFormat,\r\n MapLayerImageryProvider,\r\n MapLayerSourceStatus,\r\n MapLayerSourceValidation,\r\n MapLayerTileTreeReference,\r\n TileUrlImageryProvider,\r\n WmsCapabilities,\r\n WmsMapLayerImageryProvider,\r\n WmtsCapabilities,\r\n WmtsCapability,\r\n WmtsMapLayerImageryProvider,\r\n} from \"../internal\";\r\n\r\n/** Base class imagery map layer formats. Subclasses should override formatId and [[MapLayerFormat.createImageryProvider]].\r\n * @internal\r\n */\r\nexport class ImageryMapLayerFormat extends MapLayerFormat {\r\n public static override createMapLayerTree(layerSettings: MapLayerSettings, layerIndex: number, iModel: IModelConnection): MapLayerTileTreeReference | undefined {\r\n return new ImageryMapLayerTreeReference(layerSettings, layerIndex, iModel);\r\n }\r\n}\r\n\r\nclass WmsMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"WMS\";\r\n\r\n public static override createImageryProvider(settings: MapLayerSettings): MapLayerImageryProvider | undefined {\r\n return new WmsMapLayerImageryProvider(settings);\r\n }\r\n public static override async validateSource(url: string, credentials?: RequestBasicCredentials, ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\r\n try {\r\n let subLayers: MapSubLayerProps[] | undefined;\r\n const maxVisibleSubLayers = 50;\r\n const capabilities = await WmsCapabilities.create(url, credentials, ignoreCache);\r\n if (capabilities !== undefined) {\r\n subLayers = capabilities.getSubLayers(false);\r\n const rootsSubLayer = subLayers?.find((sublayer) => sublayer.parent === undefined);\r\n const hasTooManyLayers = subLayers && subLayers.length > maxVisibleSubLayers;\r\n\r\n if (!Array.isArray(subLayers))\r\n return { status: MapLayerSourceStatus.Valid, subLayers };\r\n\r\n for (const subLayer of subLayers) {\r\n // In general for WMS, we prefer to have the children of root node visible, but not the root itself.\r\n // Thats simply to give more flexibility in the UI.\r\n // Two exceptions to this rule: If there are too many layers or the root node is not named.\r\n if (subLayer.id && subLayer.id === rootsSubLayer?.id\r\n && (!(subLayer.name && subLayer.name.length > 0) || hasTooManyLayers)) {\r\n subLayer.visible = true;\r\n break; // if root node is visible, don't bother turning ON any other layers\r\n }\r\n\r\n // Make children of the root node visible.\r\n if (subLayer.parent && subLayer.parent === rootsSubLayer?.id && !hasTooManyLayers) {\r\n const isUnnamedGroup = (layer: MapSubLayerProps) => { return layer.children && layer.children.length > 0 && (!layer.name || layer.name.length === 0); };\r\n const makeChildrenVisible = (layers: MapSubLayerProps[] | undefined, layer: MapSubLayerProps) => {\r\n layer?.children?.forEach((childId) => {\r\n const childSubLayer = subLayers?.find((child) => child?.id === childId);\r\n if (childSubLayer) {\r\n childSubLayer.visible = true;\r\n if (isUnnamedGroup(childSubLayer))\r\n makeChildrenVisible(layers, childSubLayer);\r\n }\r\n });\r\n };\r\n\r\n subLayer.visible = true;\r\n\r\n // If we got a unnamed group, make children visible recursively until we have a leaf or named group\r\n if (isUnnamedGroup(subLayer))\r\n makeChildrenVisible(subLayers, subLayer);\r\n }\r\n }\r\n }\r\n\r\n return { status: MapLayerSourceStatus.Valid, subLayers };\r\n } catch (err: any) {\r\n let status = MapLayerSourceStatus.InvalidUrl;\r\n let authInfo: MapLayerAuthenticationInfo|undefined;\r\n if (err?.status === 401) {\r\n status = (credentials ? MapLayerSourceStatus.InvalidCredentials : MapLayerSourceStatus.RequireAuth);\r\n authInfo = {authMethod: MapLayerAuthType.Basic};\r\n }\r\n return { status, authInfo};\r\n }\r\n }\r\n}\r\n\r\nclass WmtsMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"WMTS\";\r\n\r\n public static override createImageryProvider(settings: MapLayerSettings): MapLayerImageryProvider | undefined {\r\n return new WmtsMapLayerImageryProvider(settings);\r\n }\r\n\r\n public static override async validateSource(url: string, credentials?: RequestBasicCredentials, ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\r\n try {\r\n const subLayers: MapSubLayerProps[] = [];\r\n const capabilities = await WmtsCapabilities.create(url, credentials, ignoreCache);\r\n if (!capabilities)\r\n return { status: MapLayerSourceStatus.InvalidUrl };\r\n\r\n // Only returns layer that can be published in the Google maps or WGS84 aligned tile trees.\r\n let supportedTms: WmtsCapability.TileMatrixSet[] = [];\r\n const googleMapsTms = capabilities?.contents?.getGoogleMapsCompatibleTileMatrixSet();\r\n if (googleMapsTms) {\r\n supportedTms = googleMapsTms;\r\n }\r\n const wsg84Tms = capabilities?.contents?.getEpsg4326CompatibleTileMatrixSet();\r\n if (wsg84Tms) {\r\n supportedTms = supportedTms.concat(wsg84Tms);\r\n }\r\n\r\n if (supportedTms.length === 0) {\r\n // This WMTS server doesn't support either GoogleMaps or WSG84\r\n return { status: MapLayerSourceStatus.InvalidTileTree };\r\n }\r\n\r\n let subLayerId = 0;\r\n capabilities?.contents?.layers.forEach((layer) => {\r\n const hasSupportedTms = supportedTms?.some((tms) => {\r\n return layer.tileMatrixSetLinks.some((tmls) => { return (tmls.tileMatrixSet === tms.identifier); });\r\n });\r\n if (hasSupportedTms) {\r\n subLayers.push({\r\n name: layer.identifier,\r\n title: layer.title ?? layer.identifier,\r\n visible: (subLayers.length === 0), // Make the first layer visible.\r\n parent: undefined,\r\n children: undefined,\r\n id: subLayerId++,\r\n });\r\n }\r\n });\r\n\r\n // Return error if we could find a single compatible layer.\r\n if (subLayers.length === 0)\r\n return { status: MapLayerSourceStatus.InvalidTileTree };\r\n\r\n return { status: MapLayerSourceStatus.Valid, subLayers };\r\n } catch (err) {\r\n console.error(err); // eslint-disable-line no-console\r\n return { status: MapLayerSourceStatus.InvalidUrl };\r\n }\r\n }\r\n\r\n}\r\n\r\nclass ArcGISMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"ArcGIS\";\r\n public static override async validateSource(url: string, credentials?: RequestBasicCredentials, ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\r\n return ArcGisUtilities.validateSource(url, credentials, ignoreCache);\r\n }\r\n public static override createImageryProvider(settings: MapLayerSettings): MapLayerImageryProvider | undefined {\r\n return new ArcGISMapLayerImageryProvider(settings);\r\n }\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\nclass AzureMapsMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"AzureMaps\";\r\n public static override createImageryProvider(settings: MapLayerSettings): MapLayerImageryProvider | undefined {\r\n return new AzureMapsLayerImageryProvider(settings);\r\n }\r\n}\r\nclass BingMapsMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"BingMaps\";\r\n public static override createImageryProvider(settings: MapLayerSettings): MapLayerImageryProvider | undefined {\r\n return new BingMapsImageryLayerProvider(settings);\r\n }\r\n}\r\n\r\nclass MapBoxImageryMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"MapboxImagery\";\r\n public static override createImageryProvider(settings: MapLayerSettings): MapLayerImageryProvider | undefined {\r\n return new MapBoxLayerImageryProvider(settings);\r\n }\r\n}\r\nclass TileUrlMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"TileURL\";\r\n public static override createImageryProvider(settings: MapLayerSettings): MapLayerImageryProvider | undefined { return new TileUrlImageryProvider(settings); }\r\n}\r\n\r\n/** @internal */\r\nexport const internalMapLayerImageryFormats = [WmsMapLayerFormat, WmtsMapLayerFormat, ArcGISMapLayerFormat, /* AzureMapsMapLayerFormat, */ BingMapsMapLayerFormat, MapBoxImageryMapLayerFormat, TileUrlMapLayerFormat];\r\n"]}
@@ -1,5 +1,5 @@
1
1
  /** @packageDocumentation
2
- * @module Tiles
2
+ * @module MapLayers
3
3
  */
4
4
  import { BeEvent } from "@itwin/core-bentley";
5
5
  import { Cartographic, ImageSource, MapLayerSettings } from "@itwin/core-common";
@@ -3,7 +3,7 @@
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  /** @packageDocumentation
6
- * @module Tiles
6
+ * @module MapLayers
7
7
  */
8
8
  import { BeEvent } from "@itwin/core-bentley";
9
9
  import { ImageSource, ImageSourceFormat } from "@itwin/core-common";
@@ -1 +1 @@
1
- {"version":3,"file":"MapLayerImageryProvider.js","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerImageryProvider.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 { BeEvent } from \"@itwin/core-bentley\";\r\nimport { Cartographic, ImageSource, ImageSourceFormat, MapLayerSettings } from \"@itwin/core-common\";\r\nimport { getJson, request, RequestBasicCredentials, RequestOptions, Response } from \"@bentley/itwin-client\";\r\nimport { IModelApp } from \"../../IModelApp\";\r\nimport { NotifyMessageDetails, OutputMessagePriority } from \"../../NotificationManager\";\r\nimport { ScreenViewport } from \"../../Viewport\";\r\nimport { GeographicTilingScheme, ImageryMapTile, ImageryMapTileTree, MapCartoRectangle, MapTilingScheme, QuadId, WebMercatorTilingScheme } from \"../internal\";\r\n\r\nconst tileImageSize = 256, untiledImageSize = 256;\r\n\r\nconst doDebugToolTips = false;\r\n\r\n/** @internal */\r\nexport enum MapLayerImageryProviderStatus {\r\n Valid,\r\n RequireAuth,\r\n}\r\n\r\n/** Base class for map layer imagery providers.\r\n * @internal\r\n */\r\nexport abstract class MapLayerImageryProvider {\r\n protected _hasSuccessfullyFetchedTile = false;\r\n public status: MapLayerImageryProviderStatus = MapLayerImageryProviderStatus.Valid;\r\n public readonly onStatusChanged = new BeEvent<(provider: MapLayerImageryProvider) => void>();\r\n private readonly _mercatorTilingScheme = new WebMercatorTilingScheme();\r\n private readonly _geographicTilingScheme = new GeographicTilingScheme();\r\n\r\n public get tileSize(): number { return this._usesCachedTiles ? tileImageSize : untiledImageSize; }\r\n public get maximumScreenSize() { return 2 * this.tileSize; }\r\n public get minimumZoomLevel(): number { return 0; }\r\n public get maximumZoomLevel(): number { return 22; }\r\n public get usesCachedTiles() { return this._usesCachedTiles; }\r\n public get mutualExclusiveSubLayer(): boolean { return false; }\r\n public get useGeographicTilingScheme() { return false;}\r\n public cartoRange?: MapCartoRectangle;\r\n protected get _filterByCartoRange() { return true; }\r\n constructor(protected readonly _settings: MapLayerSettings, protected _usesCachedTiles: boolean) {\r\n this._mercatorTilingScheme = new WebMercatorTilingScheme();\r\n this._geographicTilingScheme = new GeographicTilingScheme(2, 1, true);\r\n }\r\n\r\n public async initialize(): Promise<void> {\r\n this.loadTile(0, 0, 22).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 }\r\n public abstract constructUrl(row: number, column: number, zoomLevel: number): Promise<string>;\r\n public get tilingScheme(): MapTilingScheme { return this.useGeographicTilingScheme ? this._geographicTilingScheme : this._mercatorTilingScheme; }\r\n public getLogo(_viewport: ScreenViewport): HTMLTableRowElement | undefined { return undefined; }\r\n protected _missingTileData?: Uint8Array;\r\n public get transparentBackgroundString(): string { return this._settings.transparentBackground ? \"true\" : \"false\"; }\r\n\r\n protected async _areChildrenAvailable(_tile: ImageryMapTile): Promise<boolean> { return true; }\r\n public getPotentialChildIds(tile: ImageryMapTile): QuadId[] {\r\n const childLevel = tile.quadId.level + 1;\r\n return tile.quadId.getChildIds(this.tilingScheme.getNumberOfXChildrenAtLevel(childLevel), this.tilingScheme.getNumberOfYChildrenAtLevel(childLevel));\r\n\r\n }\r\n\r\n protected _generateChildIds(tile: ImageryMapTile, resolveChildren: (childIds: QuadId[]) => void) {\r\n resolveChildren(this.getPotentialChildIds(tile));\r\n }\r\n\r\n public generateChildIds(tile: ImageryMapTile, resolveChildren: (childIds: QuadId[]) => void) {\r\n if (tile.depth >= this.maximumZoomLevel || (undefined !== this.cartoRange && this._filterByCartoRange && !this.cartoRange.intersectsRange(tile.rectangle))) {\r\n tile.setLeaf();\r\n return;\r\n }\r\n this._generateChildIds(tile, resolveChildren);\r\n }\r\n\r\n public async getToolTip(strings: string[], quadId: QuadId, _carto: Cartographic, tree: ImageryMapTileTree): Promise<void> {\r\n if (doDebugToolTips) {\r\n const range = quadId.getLatLongRange(tree.tilingScheme);\r\n strings.push(`QuadId: ${quadId.debugString}, Lat: ${range.low.x} - ${range.high.x} Long: ${range.low.y} - ${range.high.y}`);\r\n }\r\n }\r\n\r\n protected getRequestAuthorization(): RequestBasicCredentials | undefined {\r\n return (this._settings.userName && this._settings.password) ? { user: this._settings.userName, password: this._settings.password } : undefined;\r\n }\r\n\r\n protected getImageFromTileResponse(tileResponse: Response, zoomLevel: number) {\r\n const byteArray: Uint8Array = new Uint8Array(tileResponse.body);\r\n if (!byteArray || (byteArray.length === 0))\r\n return undefined;\r\n if (this.matchesMissingTile(byteArray) && zoomLevel > 8)\r\n return undefined;\r\n let imageFormat: ImageSourceFormat;\r\n switch (tileResponse.header[\"content-type\"]) {\r\n case \"image/jpeg\":\r\n imageFormat = ImageSourceFormat.Jpeg;\r\n break;\r\n case \"image/png\":\r\n imageFormat = ImageSourceFormat.Png;\r\n break;\r\n default:\r\n return undefined;\r\n }\r\n\r\n return new ImageSource(byteArray, imageFormat);\r\n }\r\n\r\n public setStatus(status: MapLayerImageryProviderStatus) {\r\n if (this.status !== status) {\r\n this.status = status;\r\n this.onStatusChanged.raiseEvent(this);\r\n }\r\n }\r\n\r\n public async makeTileRequest(url: string) {\r\n const tileRequestOptions: RequestOptions = { method: \"GET\", responseType: \"arraybuffer\" };\r\n tileRequestOptions.auth = this.getRequestAuthorization();\r\n return request(url, tileRequestOptions);\r\n }\r\n\r\n public async loadTile(row: number, column: number, zoomLevel: number): Promise<ImageSource | undefined> {\r\n\r\n try {\r\n const tileUrl: string = await this.constructUrl(row, column, zoomLevel);\r\n if (tileUrl.length === 0)\r\n return undefined;\r\n\r\n const tileResponse: Response = await this.makeTileRequest(tileUrl);\r\n\r\n if (!this._hasSuccessfullyFetchedTile) {\r\n this._hasSuccessfullyFetchedTile = true;\r\n }\r\n\r\n return this.getImageFromTileResponse(tileResponse, zoomLevel);\r\n } catch (error: any) {\r\n if (error?.status === 401) {\r\n this.setStatus(MapLayerImageryProviderStatus.RequireAuth);\r\n\r\n // Only report error to end-user if we were previously able to fetch tiles\r\n // and then encountered an error, otherwise I assume an error was already reported\r\n // through the source validation process.\r\n if (this._hasSuccessfullyFetchedTile) {\r\n const msg = IModelApp.localization.getLocalizedString(\"iModelJs:MapLayers.Messages.LoadTileTokenError\", { layerName: this._settings.name });\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Warning, msg));\r\n }\r\n\r\n }\r\n return undefined;\r\n }\r\n }\r\n\r\n protected async toolTipFromUrl(strings: string[], url: string): Promise<void> {\r\n\r\n const requestOptions: RequestOptions = {\r\n method: \"GET\",\r\n responseType: \"text\",\r\n auth: this.getRequestAuthorization(),\r\n }; // spell-checker: disable-line\r\n\r\n try {\r\n const response: Response = await request(url, requestOptions);\r\n if (undefined !== response.text) {\r\n strings.push(response.text);\r\n }\r\n } catch {\r\n }\r\n }\r\n protected async toolTipFromJsonUrl(_strings: string[], url: string): Promise<void> {\r\n try {\r\n const json = await getJson(url);\r\n if (undefined !== json) {\r\n\r\n }\r\n } catch { }\r\n }\r\n\r\n public matchesMissingTile(tileData: Uint8Array): boolean {\r\n if (!this._missingTileData)\r\n return false;\r\n if (tileData.length !== this._missingTileData.length)\r\n return false;\r\n for (let i: number = 0; i < tileData.length; i += 10) {\r\n if (this._missingTileData[i] !== tileData[i]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n // calculates the projected x cartesian coordinate in EPSG:3857from the longitude in EPSG:4326 (WGS84)\r\n public getEPSG3857X(longitude: number): number {\r\n return longitude * 20037508.34 / 180.0;\r\n }\r\n\r\n // calculates the projected y cartesian coordinate in EPSG:3857from the latitude in EPSG:4326 (WGS84)\r\n public getEPSG3857Y(latitude: number): number {\r\n const y = Math.log(Math.tan((90.0 + latitude) * Math.PI / 360.0)) / (Math.PI / 180.0);\r\n return y * 20037508.34 / 180.0;\r\n }\r\n\r\n // Map tile providers like Bing and Mapbox allow the URL to be constructed directory from the zoom level and tile coordinates.\r\n // However, WMS-based servers take a bounding box instead. This method can help get that bounding box from a tile.\r\n\r\n public getEPSG4326Extent(row: number, column: number, zoomLevel: number): { longitudeLeft: number, longitudeRight: number, latitudeTop: number, latitudeBottom: number } {\r\n const mapSize = 256 << zoomLevel;\r\n const leftGrid = 256 * column;\r\n const topGrid = 256 * row;\r\n\r\n const longitudeLeft = 360 * ((leftGrid / mapSize) - 0.5);\r\n const y0 = 0.5 - ((topGrid + 256) / mapSize);\r\n const latitudeBottom = 90.0 - 360.0 * Math.atan(Math.exp(-y0 * 2 * Math.PI)) / Math.PI;\r\n\r\n const longitudeRight = 360 * (((leftGrid + 256) / mapSize) - 0.5);\r\n const y1 = 0.5 - (topGrid / mapSize);\r\n const latitudeTop = 90.0 - 360.0 * Math.atan(Math.exp(-y1 * 2 * Math.PI)) / Math.PI;\r\n\r\n return { longitudeLeft, longitudeRight, latitudeTop, latitudeBottom };\r\n }\r\n\r\n public getEPSG3857Extent(row: number, column: number, zoomLevel: number): { left: number, right: number, top: number, bottom: number } {\r\n const epsg4326Extent = this.getEPSG4326Extent(row, column, zoomLevel);\r\n\r\n const left = this.getEPSG3857X(epsg4326Extent.longitudeLeft);\r\n const right = this.getEPSG3857X(epsg4326Extent.longitudeRight);\r\n const bottom = this.getEPSG3857Y(epsg4326Extent.latitudeBottom);\r\n const top = this.getEPSG3857Y(epsg4326Extent.latitudeTop);\r\n\r\n return { left, right, bottom, top };\r\n }\r\n\r\n public getEPSG3857ExtentString(row: number, column: number, zoomLevel: number) {\r\n const tileExtent = this.getEPSG3857Extent(row, column, zoomLevel);\r\n return `${tileExtent.left.toFixed(2)},${tileExtent.bottom.toFixed(2)},${tileExtent.right.toFixed(2)},${tileExtent.top.toFixed(2)}`;\r\n }\r\n\r\n public getEPSG4326ExtentString(row: number, column: number, zoomLevel: number, latLongAxisOrdering: boolean) {\r\n const tileExtent = this.getEPSG4326Extent(row, column, zoomLevel);\r\n if (latLongAxisOrdering) {\r\n return `${tileExtent.latitudeBottom.toFixed(8)},${tileExtent.longitudeLeft.toFixed(8)},\r\n ${tileExtent.latitudeTop.toFixed(8)},${tileExtent.longitudeRight.toFixed(8)}`;\r\n } else {\r\n return `${tileExtent.longitudeLeft.toFixed(8)},${tileExtent.latitudeBottom.toFixed(8)},\r\n ${tileExtent.longitudeRight.toFixed(8)},${tileExtent.latitudeTop.toFixed(8)}`;\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"MapLayerImageryProvider.js","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerImageryProvider.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 { BeEvent } from \"@itwin/core-bentley\";\r\nimport { Cartographic, ImageSource, ImageSourceFormat, MapLayerSettings } from \"@itwin/core-common\";\r\nimport { getJson, request, RequestBasicCredentials, RequestOptions, Response } from \"@bentley/itwin-client\";\r\nimport { IModelApp } from \"../../IModelApp\";\r\nimport { NotifyMessageDetails, OutputMessagePriority } from \"../../NotificationManager\";\r\nimport { ScreenViewport } from \"../../Viewport\";\r\nimport { GeographicTilingScheme, ImageryMapTile, ImageryMapTileTree, MapCartoRectangle, MapTilingScheme, QuadId, WebMercatorTilingScheme } from \"../internal\";\r\n\r\nconst tileImageSize = 256, untiledImageSize = 256;\r\n\r\nconst doDebugToolTips = false;\r\n\r\n/** @internal */\r\nexport enum MapLayerImageryProviderStatus {\r\n Valid,\r\n RequireAuth,\r\n}\r\n\r\n/** Base class for map layer imagery providers.\r\n * @internal\r\n */\r\nexport abstract class MapLayerImageryProvider {\r\n protected _hasSuccessfullyFetchedTile = false;\r\n public status: MapLayerImageryProviderStatus = MapLayerImageryProviderStatus.Valid;\r\n public readonly onStatusChanged = new BeEvent<(provider: MapLayerImageryProvider) => void>();\r\n private readonly _mercatorTilingScheme = new WebMercatorTilingScheme();\r\n private readonly _geographicTilingScheme = new GeographicTilingScheme();\r\n\r\n public get tileSize(): number { return this._usesCachedTiles ? tileImageSize : untiledImageSize; }\r\n public get maximumScreenSize() { return 2 * this.tileSize; }\r\n public get minimumZoomLevel(): number { return 0; }\r\n public get maximumZoomLevel(): number { return 22; }\r\n public get usesCachedTiles() { return this._usesCachedTiles; }\r\n public get mutualExclusiveSubLayer(): boolean { return false; }\r\n public get useGeographicTilingScheme() { return false;}\r\n public cartoRange?: MapCartoRectangle;\r\n protected get _filterByCartoRange() { return true; }\r\n constructor(protected readonly _settings: MapLayerSettings, protected _usesCachedTiles: boolean) {\r\n this._mercatorTilingScheme = new WebMercatorTilingScheme();\r\n this._geographicTilingScheme = new GeographicTilingScheme(2, 1, true);\r\n }\r\n\r\n public async initialize(): Promise<void> {\r\n this.loadTile(0, 0, 22).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 }\r\n public abstract constructUrl(row: number, column: number, zoomLevel: number): Promise<string>;\r\n public get tilingScheme(): MapTilingScheme { return this.useGeographicTilingScheme ? this._geographicTilingScheme : this._mercatorTilingScheme; }\r\n public getLogo(_viewport: ScreenViewport): HTMLTableRowElement | undefined { return undefined; }\r\n protected _missingTileData?: Uint8Array;\r\n public get transparentBackgroundString(): string { return this._settings.transparentBackground ? \"true\" : \"false\"; }\r\n\r\n protected async _areChildrenAvailable(_tile: ImageryMapTile): Promise<boolean> { return true; }\r\n public getPotentialChildIds(tile: ImageryMapTile): QuadId[] {\r\n const childLevel = tile.quadId.level + 1;\r\n return tile.quadId.getChildIds(this.tilingScheme.getNumberOfXChildrenAtLevel(childLevel), this.tilingScheme.getNumberOfYChildrenAtLevel(childLevel));\r\n\r\n }\r\n\r\n protected _generateChildIds(tile: ImageryMapTile, resolveChildren: (childIds: QuadId[]) => void) {\r\n resolveChildren(this.getPotentialChildIds(tile));\r\n }\r\n\r\n public generateChildIds(tile: ImageryMapTile, resolveChildren: (childIds: QuadId[]) => void) {\r\n if (tile.depth >= this.maximumZoomLevel || (undefined !== this.cartoRange && this._filterByCartoRange && !this.cartoRange.intersectsRange(tile.rectangle))) {\r\n tile.setLeaf();\r\n return;\r\n }\r\n this._generateChildIds(tile, resolveChildren);\r\n }\r\n\r\n public async getToolTip(strings: string[], quadId: QuadId, _carto: Cartographic, tree: ImageryMapTileTree): Promise<void> {\r\n if (doDebugToolTips) {\r\n const range = quadId.getLatLongRange(tree.tilingScheme);\r\n strings.push(`QuadId: ${quadId.debugString}, Lat: ${range.low.x} - ${range.high.x} Long: ${range.low.y} - ${range.high.y}`);\r\n }\r\n }\r\n\r\n protected getRequestAuthorization(): RequestBasicCredentials | undefined {\r\n return (this._settings.userName && this._settings.password) ? { user: this._settings.userName, password: this._settings.password } : undefined;\r\n }\r\n\r\n protected getImageFromTileResponse(tileResponse: Response, zoomLevel: number) {\r\n const byteArray: Uint8Array = new Uint8Array(tileResponse.body);\r\n if (!byteArray || (byteArray.length === 0))\r\n return undefined;\r\n if (this.matchesMissingTile(byteArray) && zoomLevel > 8)\r\n return undefined;\r\n let imageFormat: ImageSourceFormat;\r\n switch (tileResponse.header[\"content-type\"]) {\r\n case \"image/jpeg\":\r\n imageFormat = ImageSourceFormat.Jpeg;\r\n break;\r\n case \"image/png\":\r\n imageFormat = ImageSourceFormat.Png;\r\n break;\r\n default:\r\n return undefined;\r\n }\r\n\r\n return new ImageSource(byteArray, imageFormat);\r\n }\r\n\r\n public setStatus(status: MapLayerImageryProviderStatus) {\r\n if (this.status !== status) {\r\n this.status = status;\r\n this.onStatusChanged.raiseEvent(this);\r\n }\r\n }\r\n\r\n public async makeTileRequest(url: string) {\r\n const tileRequestOptions: RequestOptions = { method: \"GET\", responseType: \"arraybuffer\" };\r\n tileRequestOptions.auth = this.getRequestAuthorization();\r\n return request(url, tileRequestOptions);\r\n }\r\n\r\n public async loadTile(row: number, column: number, zoomLevel: number): Promise<ImageSource | undefined> {\r\n\r\n try {\r\n const tileUrl: string = await this.constructUrl(row, column, zoomLevel);\r\n if (tileUrl.length === 0)\r\n return undefined;\r\n\r\n const tileResponse: Response = await this.makeTileRequest(tileUrl);\r\n\r\n if (!this._hasSuccessfullyFetchedTile) {\r\n this._hasSuccessfullyFetchedTile = true;\r\n }\r\n\r\n return this.getImageFromTileResponse(tileResponse, zoomLevel);\r\n } catch (error: any) {\r\n if (error?.status === 401) {\r\n this.setStatus(MapLayerImageryProviderStatus.RequireAuth);\r\n\r\n // Only report error to end-user if we were previously able to fetch tiles\r\n // and then encountered an error, otherwise I assume an error was already reported\r\n // through the source validation process.\r\n if (this._hasSuccessfullyFetchedTile) {\r\n const msg = IModelApp.localization.getLocalizedString(\"iModelJs:MapLayers.Messages.LoadTileTokenError\", { layerName: this._settings.name });\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Warning, msg));\r\n }\r\n\r\n }\r\n return undefined;\r\n }\r\n }\r\n\r\n protected async toolTipFromUrl(strings: string[], url: string): Promise<void> {\r\n\r\n const requestOptions: RequestOptions = {\r\n method: \"GET\",\r\n responseType: \"text\",\r\n auth: this.getRequestAuthorization(),\r\n }; // spell-checker: disable-line\r\n\r\n try {\r\n const response: Response = await request(url, requestOptions);\r\n if (undefined !== response.text) {\r\n strings.push(response.text);\r\n }\r\n } catch {\r\n }\r\n }\r\n protected async toolTipFromJsonUrl(_strings: string[], url: string): Promise<void> {\r\n try {\r\n const json = await getJson(url);\r\n if (undefined !== json) {\r\n\r\n }\r\n } catch { }\r\n }\r\n\r\n public matchesMissingTile(tileData: Uint8Array): boolean {\r\n if (!this._missingTileData)\r\n return false;\r\n if (tileData.length !== this._missingTileData.length)\r\n return false;\r\n for (let i: number = 0; i < tileData.length; i += 10) {\r\n if (this._missingTileData[i] !== tileData[i]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n // calculates the projected x cartesian coordinate in EPSG:3857from the longitude in EPSG:4326 (WGS84)\r\n public getEPSG3857X(longitude: number): number {\r\n return longitude * 20037508.34 / 180.0;\r\n }\r\n\r\n // calculates the projected y cartesian coordinate in EPSG:3857from the latitude in EPSG:4326 (WGS84)\r\n public getEPSG3857Y(latitude: number): number {\r\n const y = Math.log(Math.tan((90.0 + latitude) * Math.PI / 360.0)) / (Math.PI / 180.0);\r\n return y * 20037508.34 / 180.0;\r\n }\r\n\r\n // Map tile providers like Bing and Mapbox allow the URL to be constructed directory from the zoom level and tile coordinates.\r\n // However, WMS-based servers take a bounding box instead. This method can help get that bounding box from a tile.\r\n\r\n public getEPSG4326Extent(row: number, column: number, zoomLevel: number): { longitudeLeft: number, longitudeRight: number, latitudeTop: number, latitudeBottom: number } {\r\n const mapSize = 256 << zoomLevel;\r\n const leftGrid = 256 * column;\r\n const topGrid = 256 * row;\r\n\r\n const longitudeLeft = 360 * ((leftGrid / mapSize) - 0.5);\r\n const y0 = 0.5 - ((topGrid + 256) / mapSize);\r\n const latitudeBottom = 90.0 - 360.0 * Math.atan(Math.exp(-y0 * 2 * Math.PI)) / Math.PI;\r\n\r\n const longitudeRight = 360 * (((leftGrid + 256) / mapSize) - 0.5);\r\n const y1 = 0.5 - (topGrid / mapSize);\r\n const latitudeTop = 90.0 - 360.0 * Math.atan(Math.exp(-y1 * 2 * Math.PI)) / Math.PI;\r\n\r\n return { longitudeLeft, longitudeRight, latitudeTop, latitudeBottom };\r\n }\r\n\r\n public getEPSG3857Extent(row: number, column: number, zoomLevel: number): { left: number, right: number, top: number, bottom: number } {\r\n const epsg4326Extent = this.getEPSG4326Extent(row, column, zoomLevel);\r\n\r\n const left = this.getEPSG3857X(epsg4326Extent.longitudeLeft);\r\n const right = this.getEPSG3857X(epsg4326Extent.longitudeRight);\r\n const bottom = this.getEPSG3857Y(epsg4326Extent.latitudeBottom);\r\n const top = this.getEPSG3857Y(epsg4326Extent.latitudeTop);\r\n\r\n return { left, right, bottom, top };\r\n }\r\n\r\n public getEPSG3857ExtentString(row: number, column: number, zoomLevel: number) {\r\n const tileExtent = this.getEPSG3857Extent(row, column, zoomLevel);\r\n return `${tileExtent.left.toFixed(2)},${tileExtent.bottom.toFixed(2)},${tileExtent.right.toFixed(2)},${tileExtent.top.toFixed(2)}`;\r\n }\r\n\r\n public getEPSG4326ExtentString(row: number, column: number, zoomLevel: number, latLongAxisOrdering: boolean) {\r\n const tileExtent = this.getEPSG4326Extent(row, column, zoomLevel);\r\n if (latLongAxisOrdering) {\r\n return `${tileExtent.latitudeBottom.toFixed(8)},${tileExtent.longitudeLeft.toFixed(8)},\r\n ${tileExtent.latitudeTop.toFixed(8)},${tileExtent.longitudeRight.toFixed(8)}`;\r\n } else {\r\n return `${tileExtent.longitudeLeft.toFixed(8)},${tileExtent.latitudeBottom.toFixed(8)},\r\n ${tileExtent.longitudeRight.toFixed(8)},${tileExtent.latitudeTop.toFixed(8)}`;\r\n }\r\n }\r\n}\r\n"]}
@@ -1,4 +1,6 @@
1
- /** @module Views */
1
+ /** @packageDocumentation
2
+ * @module MapLayers
3
+ */
2
4
  import { DeprecatedBackgroundMapProps, MapLayerSettings, MapSubLayerProps } from "@itwin/core-common";
3
5
  import { IModelConnection } from "../../IModelConnection";
4
6
  import { MapLayerSourceValidation } from "../internal";
@@ -1 +1 @@
1
- {"version":3,"file":"MapLayerSources.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerSources.ts"],"names":[],"mappings":"AAIA,oBAAoB;AAIpB,OAAO,EAC2D,4BAA4B,EAAE,gBAAgB,EAAE,gBAAgB,EACjI,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,EAAsC,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAE3F,gBAAgB;AAChB,oBAAY,oBAAoB;IAC9B,KAAK,IAAA;IACL,kBAAkB,IAAA;IAClB,aAAa,IAAA;IACb,eAAe,IAAA;IACf,UAAU,IAAA;IACV,WAAW,IAAA;CACZ;AAED;;GAEG;AACH,UAAU,mBAAmB;IAC3B,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU;IACV,GAAG,EAAE,MAAM,CAAC;IACZ,uEAAuE;IACvE,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,6CAA6C;IAC7C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,0FAA0F;IAC1F,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,cAAc;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,UAAS;IAChB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAEzB,OAAO;WAUO,QAAQ,CAAC,IAAI,EAAE,mBAAmB,GAAG,cAAc,GAAG,SAAS;IAOhE,cAAc,CAAC,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,wBAAwB,CAAC;WAGvE,sBAAsB,CAAC,KAAK,EAAE,4BAA4B;IAajE,MAAM;;;;;;IAIN,eAAe,CAAC,SAAS,CAAC,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,GAAG,SAAS;IAOpF,OAAO,CAAC,cAAc;CAGvB;AAED;;GAEG;AACH,qBAAa,eAAe;IAEN,OAAO,CAAC,QAAQ;IADpC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAkB;IAC3C,OAAO;WAEO,WAAW;IAElB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,OAAe,GAAG,cAAc,GAAG,SAAS;IAQrF,IAAW,MAAM,IAAI,cAAc,EAAE,CAIpC;IACD,IAAW,SAAS,qBAA4B;IAChD,IAAW,KAAK,IAAI,cAAc,EAAE,CAInC;IAED,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAQpC,OAAO,CAAC,MAAM,CAAC,oBAAoB;WAQf,MAAM,CAAC,MAAM,CAAC,EAAE,gBAAgB,EAAE,qBAAqB,UAAQ,EAAE,gBAAgB,UAAQ,GAAG,OAAO,CAAC,eAAe,CAAC;WAsDpH,0BAA0B,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;WAavG,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAYvD"}
1
+ {"version":3,"file":"MapLayerSources.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerSources.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EAC2D,4BAA4B,EAAE,gBAAgB,EAAE,gBAAgB,EACjI,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,EAAsC,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAE3F,gBAAgB;AAChB,oBAAY,oBAAoB;IAC9B,KAAK,IAAA;IACL,kBAAkB,IAAA;IAClB,aAAa,IAAA;IACb,eAAe,IAAA;IACf,UAAU,IAAA;IACV,WAAW,IAAA;CACZ;AAED;;GAEG;AACH,UAAU,mBAAmB;IAC3B,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU;IACV,GAAG,EAAE,MAAM,CAAC;IACZ,uEAAuE;IACvE,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,6CAA6C;IAC7C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,0FAA0F;IAC1F,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,cAAc;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,UAAS;IAChB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAEzB,OAAO;WAUO,QAAQ,CAAC,IAAI,EAAE,mBAAmB,GAAG,cAAc,GAAG,SAAS;IAOhE,cAAc,CAAC,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,wBAAwB,CAAC;WAGvE,sBAAsB,CAAC,KAAK,EAAE,4BAA4B;IAajE,MAAM;;;;;;IAIN,eAAe,CAAC,SAAS,CAAC,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,GAAG,SAAS;IAOpF,OAAO,CAAC,cAAc;CAGvB;AAED;;GAEG;AACH,qBAAa,eAAe;IAEN,OAAO,CAAC,QAAQ;IADpC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAkB;IAC3C,OAAO;WAEO,WAAW;IAElB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,OAAe,GAAG,cAAc,GAAG,SAAS;IAQrF,IAAW,MAAM,IAAI,cAAc,EAAE,CAIpC;IACD,IAAW,SAAS,qBAA4B;IAChD,IAAW,KAAK,IAAI,cAAc,EAAE,CAInC;IAED,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAQpC,OAAO,CAAC,MAAM,CAAC,oBAAoB;WAQf,MAAM,CAAC,MAAM,CAAC,EAAE,gBAAgB,EAAE,qBAAqB,UAAQ,EAAE,gBAAgB,UAAQ,GAAG,OAAO,CAAC,eAAe,CAAC;WAsDpH,0BAA0B,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;WAavG,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAYvD"}
@@ -2,7 +2,9 @@
2
2
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
- /** @module Views */
5
+ /** @packageDocumentation
6
+ * @module MapLayers
7
+ */
6
8
  import { compareStrings } from "@itwin/core-bentley";
7
9
  import { Point2d } from "@itwin/core-geometry";
8
10
  import { BackgroundMapProvider, BackgroundMapType, BaseMapLayerSettings, MapLayerSettings, } from "@itwin/core-common";
@@ -1 +1 @@
1
- {"version":3,"file":"MapLayerSources.js","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerSources.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/** @module Views */\r\n\r\nimport { compareStrings } from \"@itwin/core-bentley\";\r\nimport { Point2d } from \"@itwin/core-geometry\";\r\nimport {\r\n BackgroundMapProvider, BackgroundMapType, BaseMapLayerSettings, DeprecatedBackgroundMapProps, MapLayerSettings, MapSubLayerProps,\r\n} from \"@itwin/core-common\";\r\nimport { getJson, RequestBasicCredentials } from \"@bentley/itwin-client\";\r\nimport { IModelApp } from \"../../IModelApp\";\r\nimport { IModelConnection } from \"../../IModelConnection\";\r\n\r\nimport { ArcGisUtilities, MapCartoRectangle, MapLayerSourceValidation } from \"../internal\";\r\n\r\n/** @internal */\r\nexport enum MapLayerSourceStatus {\r\n Valid,\r\n InvalidCredentials,\r\n InvalidFormat,\r\n InvalidTileTree,\r\n InvalidUrl,\r\n RequireAuth,\r\n}\r\n\r\n/** JSON representation of a map layer source.\r\n * @internal\r\n */\r\ninterface MapLayerSourceProps {\r\n /** Identifies the map layers source. Defaults to 'WMS'. */\r\n formatId?: string;\r\n /** Name */\r\n name: string;\r\n /** URL */\r\n url: string;\r\n /** True to indicate background is transparent. Defaults to 'true'. */\r\n transparentBackground?: boolean;\r\n /** Is a base layer. Defaults to 'false'. */\r\n isBase?: boolean;\r\n /** Indicate if this source definition should be used as a base map. Defaults to false. */\r\n baseMap?: boolean;\r\n /** UserName */\r\n userName?: string;\r\n /** Password */\r\n password?: string;\r\n}\r\n\r\n/** A source for map layers. These may be catalogued for convenient use by users or applications.\r\n * @internal\r\n */\r\nexport class MapLayerSource {\r\n public formatId: string;\r\n public name: string;\r\n public url: string;\r\n public baseMap = false;\r\n public transparentBackground?: boolean;\r\n public userName?: string;\r\n public password?: string;\r\n\r\n private constructor(formatId = \"WMS\", name: string, url: string, baseMap = false, transparentBackground = true, userName?: string, password?: string) {\r\n this.formatId = formatId;\r\n this.name = name;\r\n this.url = url;\r\n this.baseMap = baseMap;\r\n this.transparentBackground = transparentBackground;\r\n this.userName = userName;\r\n this.password = password;\r\n }\r\n\r\n public static fromJSON(json: MapLayerSourceProps): MapLayerSource | undefined {\r\n if (json === undefined)\r\n return undefined;\r\n\r\n return new MapLayerSource(json.formatId, json.name, json.url, json.baseMap, json.transparentBackground, json.userName, json.password);\r\n }\r\n\r\n public async validateSource(ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\r\n return IModelApp.mapLayerFormatRegistry.validateSource(this.formatId, this.url, this.getCredentials(), ignoreCache);\r\n }\r\n public static fromBackgroundMapProps(props: DeprecatedBackgroundMapProps) {\r\n const provider = BackgroundMapProvider.fromBackgroundMapProps(props);\r\n const layerSettings = BaseMapLayerSettings.fromProvider(provider);\r\n if (undefined !== layerSettings) {\r\n const source = MapLayerSource.fromJSON(layerSettings);\r\n if (source) {\r\n source.baseMap = true;\r\n return source;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n public toJSON() {\r\n return { url: this.url, name: this.name, formatId: this.formatId, transparentBackground: this.transparentBackground };\r\n }\r\n\r\n public toLayerSettings(subLayers?: MapSubLayerProps[]): MapLayerSettings | undefined {\r\n // When MapLayerSetting is created from a MapLayerSource, sub-layers and credentials need to be set separately.\r\n const layerSettings = MapLayerSettings.fromJSON({ ...this, subLayers });\r\n layerSettings?.setCredentials(this.userName, this.password);\r\n return layerSettings;\r\n }\r\n\r\n private getCredentials(): RequestBasicCredentials | undefined {\r\n return this.userName && this.password ? { user: this.userName, password: this.password } : undefined;\r\n }\r\n}\r\n\r\n/** A collection of [[MapLayerSource]] objects.\r\n * @internal\r\n */\r\nexport class MapLayerSources {\r\n private static _instance?: MapLayerSources;\r\n private constructor(private _sources: MapLayerSource[]) { }\r\n\r\n public static getInstance() { return MapLayerSources._instance; }\r\n\r\n public findByName(name: string, baseMap: boolean = false): MapLayerSource | undefined {\r\n const nameTest = name.toLowerCase();\r\n for (const source of this._sources)\r\n if (source.baseMap === baseMap && source.name.toLowerCase().indexOf(nameTest) !== -1)\r\n return source;\r\n\r\n return undefined;\r\n }\r\n public get layers(): MapLayerSource[] {\r\n const layers = new Array<MapLayerSource>();\r\n this._sources.forEach((source) => { if (!source.baseMap) layers.push(source); });\r\n return layers;\r\n }\r\n public get allSource() { return this._sources; }\r\n public get bases(): MapLayerSource[] {\r\n const layers = new Array<MapLayerSource>();\r\n this._sources.forEach((source) => { if (source.baseMap) layers.push(source); });\r\n return layers;\r\n }\r\n\r\n private static getBingMapLayerSource(): MapLayerSource[] {\r\n const mapLayerSources: MapLayerSource[] = [];\r\n mapLayerSources.push(MapLayerSource.fromBackgroundMapProps({ providerName: \"BingProvider\", providerData: { mapType: BackgroundMapType.Street } })!);\r\n mapLayerSources.push(MapLayerSource.fromBackgroundMapProps({ providerName: \"BingProvider\", providerData: { mapType: BackgroundMapType.Aerial } })!);\r\n mapLayerSources.push(MapLayerSource.fromBackgroundMapProps({ providerName: \"BingProvider\", providerData: { mapType: BackgroundMapType.Hybrid } })!);\r\n return mapLayerSources;\r\n }\r\n\r\n private static getMapBoxLayerSource(): MapLayerSource[] {\r\n const mapLayerSources: MapLayerSource[] = [];\r\n mapLayerSources.push(MapLayerSource.fromBackgroundMapProps({ providerName: \"MapBoxProvider\", providerData: { mapType: BackgroundMapType.Street } })!);\r\n mapLayerSources.push(MapLayerSource.fromBackgroundMapProps({ providerName: \"MapBoxProvider\", providerData: { mapType: BackgroundMapType.Aerial } })!);\r\n mapLayerSources.push(MapLayerSource.fromBackgroundMapProps({ providerName: \"MapBoxProvider\", providerData: { mapType: BackgroundMapType.Hybrid } })!);\r\n return mapLayerSources;\r\n }\r\n\r\n public static async create(iModel?: IModelConnection, queryForPublicSources = false, addMapBoxSources = false): Promise<MapLayerSources> {\r\n if (!queryForPublicSources && MapLayerSources._instance)\r\n return MapLayerSources._instance;\r\n\r\n if (!iModel)\r\n iModel = IModelApp.viewManager.selectedView ? IModelApp.viewManager.selectedView.iModel : undefined;\r\n\r\n let sourceRange = MapCartoRectangle.create();\r\n if (iModel) {\r\n const projectCenter = iModel.projectExtents.localXYZToWorld(.5, .5, .5)!;\r\n const cartoCenter = iModel.spatialToCartographicFromEcef(projectCenter);\r\n const globeRange = MapCartoRectangle.create();\r\n const nearDelta = Point2d.create(globeRange.xLength() / 100, globeRange.yLength() / 100);\r\n sourceRange = MapCartoRectangle.create(cartoCenter.longitude - nearDelta.x, cartoCenter.latitude - nearDelta.y, cartoCenter.longitude + nearDelta.x, cartoCenter.latitude + nearDelta.y);\r\n }\r\n\r\n const sources = new Array<MapLayerSource>();\r\n const urlSet = new Set<string>();\r\n const addSource = ((source: MapLayerSource) => {\r\n if (!urlSet.has(source.url)) {\r\n sources.push(source);\r\n urlSet.add(source.url);\r\n }\r\n });\r\n\r\n this.getBingMapLayerSource().forEach((source) => {\r\n addSource(source);\r\n });\r\n\r\n if (addMapBoxSources) {\r\n this.getMapBoxLayerSource().forEach((source) => {\r\n addSource(source);\r\n });\r\n }\r\n\r\n if (queryForPublicSources) {\r\n const sourcesJson = await getJson(`${IModelApp.publicPath}assets/MapLayerSources.json`);\r\n\r\n for (const sourceJson of sourcesJson) {\r\n const source = MapLayerSource.fromJSON(sourceJson);\r\n if (source)\r\n addSource(source);\r\n }\r\n\r\n (await ArcGisUtilities.getSourcesFromQuery(sourceRange)).forEach((queriedSource) => addSource(queriedSource));\r\n }\r\n\r\n sources.sort((a: MapLayerSource, b: MapLayerSource) => compareStrings(a.name.toLowerCase(), b.name.toLowerCase()));\r\n\r\n const mapLayerSources = new MapLayerSources(sources);\r\n MapLayerSources._instance = mapLayerSources;\r\n\r\n return mapLayerSources;\r\n }\r\n public static async addSourceToMapLayerSources(mapLayerSource?: MapLayerSource): Promise<MapLayerSources | undefined> {\r\n if (!MapLayerSources._instance || !mapLayerSource) {\r\n return undefined;\r\n }\r\n MapLayerSources._instance._sources = MapLayerSources._instance._sources.filter((source) => {\r\n return !(source.name === mapLayerSource.name || source.url === mapLayerSource.url);\r\n });\r\n\r\n MapLayerSources._instance._sources.push(mapLayerSource);\r\n MapLayerSources._instance._sources.sort((a: MapLayerSource, b: MapLayerSource) => compareStrings(a.name.toLowerCase(), b.name.toLowerCase()));\r\n return MapLayerSources._instance;\r\n }\r\n\r\n public static removeLayerByName(name: string): boolean {\r\n if (!MapLayerSources._instance) {\r\n return false;\r\n }\r\n\r\n // For now we only rely on the name\r\n const lengthBeforeRemove = MapLayerSources._instance._sources.length;\r\n MapLayerSources._instance._sources = MapLayerSources._instance._sources.filter((source) => {\r\n return (source.name !== name);\r\n });\r\n return (lengthBeforeRemove !== MapLayerSources._instance._sources.length);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"MapLayerSources.js","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerSources.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 { compareStrings } from \"@itwin/core-bentley\";\r\nimport { Point2d } from \"@itwin/core-geometry\";\r\nimport {\r\n BackgroundMapProvider, BackgroundMapType, BaseMapLayerSettings, DeprecatedBackgroundMapProps, MapLayerSettings, MapSubLayerProps,\r\n} from \"@itwin/core-common\";\r\nimport { getJson, RequestBasicCredentials } from \"@bentley/itwin-client\";\r\nimport { IModelApp } from \"../../IModelApp\";\r\nimport { IModelConnection } from \"../../IModelConnection\";\r\n\r\nimport { ArcGisUtilities, MapCartoRectangle, MapLayerSourceValidation } from \"../internal\";\r\n\r\n/** @internal */\r\nexport enum MapLayerSourceStatus {\r\n Valid,\r\n InvalidCredentials,\r\n InvalidFormat,\r\n InvalidTileTree,\r\n InvalidUrl,\r\n RequireAuth,\r\n}\r\n\r\n/** JSON representation of a map layer source.\r\n * @internal\r\n */\r\ninterface MapLayerSourceProps {\r\n /** Identifies the map layers source. Defaults to 'WMS'. */\r\n formatId?: string;\r\n /** Name */\r\n name: string;\r\n /** URL */\r\n url: string;\r\n /** True to indicate background is transparent. Defaults to 'true'. */\r\n transparentBackground?: boolean;\r\n /** Is a base layer. Defaults to 'false'. */\r\n isBase?: boolean;\r\n /** Indicate if this source definition should be used as a base map. Defaults to false. */\r\n baseMap?: boolean;\r\n /** UserName */\r\n userName?: string;\r\n /** Password */\r\n password?: string;\r\n}\r\n\r\n/** A source for map layers. These may be catalogued for convenient use by users or applications.\r\n * @internal\r\n */\r\nexport class MapLayerSource {\r\n public formatId: string;\r\n public name: string;\r\n public url: string;\r\n public baseMap = false;\r\n public transparentBackground?: boolean;\r\n public userName?: string;\r\n public password?: string;\r\n\r\n private constructor(formatId = \"WMS\", name: string, url: string, baseMap = false, transparentBackground = true, userName?: string, password?: string) {\r\n this.formatId = formatId;\r\n this.name = name;\r\n this.url = url;\r\n this.baseMap = baseMap;\r\n this.transparentBackground = transparentBackground;\r\n this.userName = userName;\r\n this.password = password;\r\n }\r\n\r\n public static fromJSON(json: MapLayerSourceProps): MapLayerSource | undefined {\r\n if (json === undefined)\r\n return undefined;\r\n\r\n return new MapLayerSource(json.formatId, json.name, json.url, json.baseMap, json.transparentBackground, json.userName, json.password);\r\n }\r\n\r\n public async validateSource(ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\r\n return IModelApp.mapLayerFormatRegistry.validateSource(this.formatId, this.url, this.getCredentials(), ignoreCache);\r\n }\r\n public static fromBackgroundMapProps(props: DeprecatedBackgroundMapProps) {\r\n const provider = BackgroundMapProvider.fromBackgroundMapProps(props);\r\n const layerSettings = BaseMapLayerSettings.fromProvider(provider);\r\n if (undefined !== layerSettings) {\r\n const source = MapLayerSource.fromJSON(layerSettings);\r\n if (source) {\r\n source.baseMap = true;\r\n return source;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n public toJSON() {\r\n return { url: this.url, name: this.name, formatId: this.formatId, transparentBackground: this.transparentBackground };\r\n }\r\n\r\n public toLayerSettings(subLayers?: MapSubLayerProps[]): MapLayerSettings | undefined {\r\n // When MapLayerSetting is created from a MapLayerSource, sub-layers and credentials need to be set separately.\r\n const layerSettings = MapLayerSettings.fromJSON({ ...this, subLayers });\r\n layerSettings?.setCredentials(this.userName, this.password);\r\n return layerSettings;\r\n }\r\n\r\n private getCredentials(): RequestBasicCredentials | undefined {\r\n return this.userName && this.password ? { user: this.userName, password: this.password } : undefined;\r\n }\r\n}\r\n\r\n/** A collection of [[MapLayerSource]] objects.\r\n * @internal\r\n */\r\nexport class MapLayerSources {\r\n private static _instance?: MapLayerSources;\r\n private constructor(private _sources: MapLayerSource[]) { }\r\n\r\n public static getInstance() { return MapLayerSources._instance; }\r\n\r\n public findByName(name: string, baseMap: boolean = false): MapLayerSource | undefined {\r\n const nameTest = name.toLowerCase();\r\n for (const source of this._sources)\r\n if (source.baseMap === baseMap && source.name.toLowerCase().indexOf(nameTest) !== -1)\r\n return source;\r\n\r\n return undefined;\r\n }\r\n public get layers(): MapLayerSource[] {\r\n const layers = new Array<MapLayerSource>();\r\n this._sources.forEach((source) => { if (!source.baseMap) layers.push(source); });\r\n return layers;\r\n }\r\n public get allSource() { return this._sources; }\r\n public get bases(): MapLayerSource[] {\r\n const layers = new Array<MapLayerSource>();\r\n this._sources.forEach((source) => { if (source.baseMap) layers.push(source); });\r\n return layers;\r\n }\r\n\r\n private static getBingMapLayerSource(): MapLayerSource[] {\r\n const mapLayerSources: MapLayerSource[] = [];\r\n mapLayerSources.push(MapLayerSource.fromBackgroundMapProps({ providerName: \"BingProvider\", providerData: { mapType: BackgroundMapType.Street } })!);\r\n mapLayerSources.push(MapLayerSource.fromBackgroundMapProps({ providerName: \"BingProvider\", providerData: { mapType: BackgroundMapType.Aerial } })!);\r\n mapLayerSources.push(MapLayerSource.fromBackgroundMapProps({ providerName: \"BingProvider\", providerData: { mapType: BackgroundMapType.Hybrid } })!);\r\n return mapLayerSources;\r\n }\r\n\r\n private static getMapBoxLayerSource(): MapLayerSource[] {\r\n const mapLayerSources: MapLayerSource[] = [];\r\n mapLayerSources.push(MapLayerSource.fromBackgroundMapProps({ providerName: \"MapBoxProvider\", providerData: { mapType: BackgroundMapType.Street } })!);\r\n mapLayerSources.push(MapLayerSource.fromBackgroundMapProps({ providerName: \"MapBoxProvider\", providerData: { mapType: BackgroundMapType.Aerial } })!);\r\n mapLayerSources.push(MapLayerSource.fromBackgroundMapProps({ providerName: \"MapBoxProvider\", providerData: { mapType: BackgroundMapType.Hybrid } })!);\r\n return mapLayerSources;\r\n }\r\n\r\n public static async create(iModel?: IModelConnection, queryForPublicSources = false, addMapBoxSources = false): Promise<MapLayerSources> {\r\n if (!queryForPublicSources && MapLayerSources._instance)\r\n return MapLayerSources._instance;\r\n\r\n if (!iModel)\r\n iModel = IModelApp.viewManager.selectedView ? IModelApp.viewManager.selectedView.iModel : undefined;\r\n\r\n let sourceRange = MapCartoRectangle.create();\r\n if (iModel) {\r\n const projectCenter = iModel.projectExtents.localXYZToWorld(.5, .5, .5)!;\r\n const cartoCenter = iModel.spatialToCartographicFromEcef(projectCenter);\r\n const globeRange = MapCartoRectangle.create();\r\n const nearDelta = Point2d.create(globeRange.xLength() / 100, globeRange.yLength() / 100);\r\n sourceRange = MapCartoRectangle.create(cartoCenter.longitude - nearDelta.x, cartoCenter.latitude - nearDelta.y, cartoCenter.longitude + nearDelta.x, cartoCenter.latitude + nearDelta.y);\r\n }\r\n\r\n const sources = new Array<MapLayerSource>();\r\n const urlSet = new Set<string>();\r\n const addSource = ((source: MapLayerSource) => {\r\n if (!urlSet.has(source.url)) {\r\n sources.push(source);\r\n urlSet.add(source.url);\r\n }\r\n });\r\n\r\n this.getBingMapLayerSource().forEach((source) => {\r\n addSource(source);\r\n });\r\n\r\n if (addMapBoxSources) {\r\n this.getMapBoxLayerSource().forEach((source) => {\r\n addSource(source);\r\n });\r\n }\r\n\r\n if (queryForPublicSources) {\r\n const sourcesJson = await getJson(`${IModelApp.publicPath}assets/MapLayerSources.json`);\r\n\r\n for (const sourceJson of sourcesJson) {\r\n const source = MapLayerSource.fromJSON(sourceJson);\r\n if (source)\r\n addSource(source);\r\n }\r\n\r\n (await ArcGisUtilities.getSourcesFromQuery(sourceRange)).forEach((queriedSource) => addSource(queriedSource));\r\n }\r\n\r\n sources.sort((a: MapLayerSource, b: MapLayerSource) => compareStrings(a.name.toLowerCase(), b.name.toLowerCase()));\r\n\r\n const mapLayerSources = new MapLayerSources(sources);\r\n MapLayerSources._instance = mapLayerSources;\r\n\r\n return mapLayerSources;\r\n }\r\n public static async addSourceToMapLayerSources(mapLayerSource?: MapLayerSource): Promise<MapLayerSources | undefined> {\r\n if (!MapLayerSources._instance || !mapLayerSource) {\r\n return undefined;\r\n }\r\n MapLayerSources._instance._sources = MapLayerSources._instance._sources.filter((source) => {\r\n return !(source.name === mapLayerSource.name || source.url === mapLayerSource.url);\r\n });\r\n\r\n MapLayerSources._instance._sources.push(mapLayerSource);\r\n MapLayerSources._instance._sources.sort((a: MapLayerSource, b: MapLayerSource) => compareStrings(a.name.toLowerCase(), b.name.toLowerCase()));\r\n return MapLayerSources._instance;\r\n }\r\n\r\n public static removeLayerByName(name: string): boolean {\r\n if (!MapLayerSources._instance) {\r\n return false;\r\n }\r\n\r\n // For now we only rely on the name\r\n const lengthBeforeRemove = MapLayerSources._instance._sources.length;\r\n MapLayerSources._instance._sources = MapLayerSources._instance._sources.filter((source) => {\r\n return (source.name !== name);\r\n });\r\n return (lengthBeforeRemove !== MapLayerSources._instance._sources.length);\r\n }\r\n}\r\n"]}