@itwin/core-frontend 3.3.0-dev.6 → 3.3.0-dev.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +33 -1
- package/lib/cjs/IModelApp.d.ts.map +1 -1
- package/lib/cjs/IModelApp.js +1 -1
- package/lib/cjs/IModelApp.js.map +1 -1
- package/lib/cjs/ViewRect.d.ts +5 -3
- package/lib/cjs/ViewRect.d.ts.map +1 -1
- package/lib/cjs/ViewRect.js +11 -7
- package/lib/cjs/ViewRect.js.map +1 -1
- package/lib/cjs/Viewport.d.ts +1 -1
- package/lib/cjs/Viewport.d.ts.map +1 -1
- package/lib/cjs/Viewport.js +2 -2
- package/lib/cjs/Viewport.js.map +1 -1
- package/lib/cjs/render/webgl/Target.d.ts +1 -1
- package/lib/cjs/render/webgl/Target.js +2 -2
- package/lib/cjs/render/webgl/Target.js.map +1 -1
- package/lib/cjs/tile/RealityModelTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/RealityModelTileTree.js +2 -1
- package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
- package/lib/cjs/tile/map/CesiumTerrainProvider.js +6 -2
- package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +1 -1
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +5 -2
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts +1 -1
- package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js +5 -2
- package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.d.ts +1 -1
- package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js +2 -2
- package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts +1 -1
- package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js +5 -2
- package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryTileTree.d.ts +2 -2
- package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryTileTree.js +6 -2
- package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +1 -1
- package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryProvider.js +1 -1
- package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapTileTree.js +3 -5
- package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
- package/lib/cjs/tile/map/TerrainMeshProvider.d.ts +2 -1
- package/lib/cjs/tile/map/TerrainMeshProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/TerrainMeshProvider.js +1 -1
- package/lib/cjs/tile/map/TerrainMeshProvider.js.map +1 -1
- package/lib/esm/IModelApp.d.ts.map +1 -1
- package/lib/esm/IModelApp.js +2 -2
- package/lib/esm/IModelApp.js.map +1 -1
- package/lib/esm/ViewRect.d.ts +5 -3
- package/lib/esm/ViewRect.d.ts.map +1 -1
- package/lib/esm/ViewRect.js +11 -7
- package/lib/esm/ViewRect.js.map +1 -1
- package/lib/esm/Viewport.d.ts +1 -1
- package/lib/esm/Viewport.d.ts.map +1 -1
- package/lib/esm/Viewport.js +2 -2
- package/lib/esm/Viewport.js.map +1 -1
- package/lib/esm/render/webgl/Target.d.ts +1 -1
- package/lib/esm/render/webgl/Target.js +2 -2
- package/lib/esm/render/webgl/Target.js.map +1 -1
- package/lib/esm/tile/RealityModelTileTree.d.ts.map +1 -1
- package/lib/esm/tile/RealityModelTileTree.js +2 -1
- package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
- package/lib/esm/tile/map/CesiumTerrainProvider.js +6 -2
- package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +1 -1
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +5 -2
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts +1 -1
- package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js +5 -2
- package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.d.ts +1 -1
- package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js +2 -2
- package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts +1 -1
- package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js +5 -2
- package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryTileTree.d.ts +2 -2
- package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryTileTree.js +6 -2
- package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +1 -1
- package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryProvider.js +1 -1
- package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
- package/lib/esm/tile/map/MapTileTree.js +3 -5
- package/lib/esm/tile/map/MapTileTree.js.map +1 -1
- package/lib/esm/tile/map/TerrainMeshProvider.d.ts +2 -1
- package/lib/esm/tile/map/TerrainMeshProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/TerrainMeshProvider.js +1 -1
- package/lib/esm/tile/map/TerrainMeshProvider.js.map +1 -1
- package/package.json +20 -20
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArcGISMapLayerImageryProvider.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport { getJson, request, RequestOptions, Response } from \"../../../request/Request\";\r\nimport { Cartographic, ImageMapLayerSettings, ImageSource, IModelStatus, ServerError } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../../../IModelApp\";\r\nimport { NotifyMessageDetails, OutputMessagePriority } from \"../../../NotificationManager\";\r\nimport {\r\n ArcGisErrorCode, ArcGISTileMap, ArcGisUtilities,\r\n ImageryMapTile, ImageryMapTileTree, MapCartoRectangle, MapFeatureInfoRecord, MapLayerAccessClient, MapLayerAccessToken, MapLayerFeatureInfo,\r\n MapLayerImageryProvider, MapLayerImageryProviderStatus, MapSubLayerFeatureInfo, QuadId,\r\n} from \"../../internal\";\r\nimport { PropertyValueFormat, StandardTypeNames } from \"@itwin/appui-abstract\";\r\n\r\n/** @internal */\r\nexport class ArcGISMapLayerImageryProvider extends MapLayerImageryProvider {\r\n private _maxDepthFromLod = 0;\r\n private _minDepthFromLod = 0;\r\n private _copyrightText = \"Copyright\";\r\n private _querySupported = false;\r\n private _tileMapSupported = false;\r\n private _tileMap: ArcGISTileMap|undefined;\r\n private _accessClient: MapLayerAccessClient|undefined;\r\n private _lastAccessToken: MapLayerAccessToken|undefined;\r\n public serviceJson: any;\r\n constructor(settings: ImageMapLayerSettings) {\r\n super(settings, false);\r\n this._accessClient = IModelApp.mapLayerFormatRegistry.getAccessClient(settings.formatId);\r\n }\r\n\r\n protected override get _filterByCartoRange() { return false; } // Can't trust footprint ranges (USGS Hydro)\r\n\r\n public override get minimumZoomLevel() { return Math.max(super.minimumZoomLevel, this._minDepthFromLod); }\r\n public override get maximumZoomLevel() { return this._maxDepthFromLod > 0 ? this._maxDepthFromLod : super.maximumZoomLevel; }\r\n\r\n public uintToString(uintArray: any) {\r\n return Buffer.from(uintArray).toJSON();\r\n\r\n }\r\n\r\n private async fetchTile(row: number, column: number, zoomLevel: number): Promise<Response | undefined> {\r\n const tileRequestOptions: RequestOptions = { method: \"GET\", responseType: \"arraybuffer\" };\r\n tileRequestOptions.auth = this.getRequestAuthorization();\r\n const tileUrl: string = await this.constructUrl(row, column, zoomLevel);\r\n if (tileUrl.length === 0)\r\n return undefined;\r\n\r\n return request(tileUrl, tileRequestOptions);\r\n }\r\n\r\n public override async loadTile(row: number, column: number, zoomLevel: number): Promise<ImageSource | undefined> {\r\n\r\n if ((this.status === MapLayerImageryProviderStatus.RequireAuth)) {\r\n return undefined;\r\n }\r\n\r\n try {\r\n let tileResponse = await this.fetchTile(row, column, zoomLevel);\r\n if (tileResponse === undefined)\r\n return undefined;\r\n\r\n // Check the content type from the response, it might contain an authentication error that need to be reported.\r\n // Skip if the layer state was already invalid\r\n if (ArcGisUtilities.hasTokenError(tileResponse)) {\r\n\r\n if (this._accessClient?.invalidateToken !== undefined && this._lastAccessToken !== undefined)\r\n this._accessClient.invalidateToken(this._lastAccessToken);\r\n\r\n // Token might have expired, make a second attempt by forcing new token.\r\n if (this._settings.userName && this._settings.userName.length > 0 && this._lastAccessToken) {\r\n tileResponse = await this.fetchTile(row, column, zoomLevel);\r\n if (tileResponse === undefined)\r\n return undefined;\r\n }\r\n\r\n // OK at this point, if response still contain a token error, we assume end-user will\r\n // have to provide credentials again. Change the layer status so we\r\n // don't make additional invalid requests..\r\n if (tileResponse && ArcGisUtilities.hasTokenError(tileResponse)) {\r\n // Check again layer status, it might have change during await.\r\n if (this.status === MapLayerImageryProviderStatus.Valid) {\r\n this.status = MapLayerImageryProviderStatus.RequireAuth;\r\n this.onStatusChanged.raiseEvent(this);\r\n\r\n // Only report error to end-user if we were previously able to fetch tiles\r\n // and then encountered an error, otherwise I assume an error was already reported\r\n // through the source validation process.\r\n if (this._hasSuccessfullyFetchedTile) {\r\n const msg = IModelApp.localization.getLocalizedString(\"iModelJs:MapLayers.Messages.LoadTileTokenError\", { layerName: this._settings.name });\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Warning, msg));\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n }\r\n\r\n if (!this._hasSuccessfullyFetchedTile) {\r\n this._hasSuccessfullyFetchedTile = true;\r\n }\r\n return this.getImageFromTileResponse(tileResponse, zoomLevel);\r\n } catch (error) {\r\n return undefined;\r\n }\r\n }\r\n protected override _generateChildIds(tile: ImageryMapTile, resolveChildren: (childIds: QuadId[]) => void) {\r\n const childIds = this.getPotentialChildIds(tile);\r\n if (!this._tileMap || tile.quadId.level < Math.max(4, this.minimumZoomLevel-1)) {\r\n resolveChildren(childIds);\r\n return;\r\n }\r\n\r\n if (this._tileMap) {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this._tileMap.getChildrenAvailability(childIds).then((availability) => {\r\n const availableChildIds = new Array<QuadId>();\r\n for (let i = 0; i < availability.length; i++)\r\n if (availability[i])\r\n availableChildIds.push(childIds[i]);\r\n\r\n resolveChildren (availableChildIds);\r\n });\r\n }\r\n }\r\n\r\n private isEpsg3857Compatible(tileInfo: any) {\r\n if (tileInfo.spatialReference?.latestWkid !== 3857 || !Array.isArray(tileInfo.lods))\r\n return false;\r\n\r\n const zeroLod = tileInfo.lods[0];\r\n return zeroLod.level === 0 && Math.abs(zeroLod.resolution - 156543.03392800014) < .001;\r\n }\r\n\r\n public override async initialize(): Promise<void> {\r\n\r\n const json = await ArcGisUtilities.getServiceJson(this._settings.url, this.getRequestAuthorization());\r\n if (json === undefined)\r\n throw new ServerError(IModelStatus.ValidationFailed, \"\");\r\n\r\n if (json?.error?.code === ArcGisErrorCode.TokenRequired || json?.error?.code === ArcGisErrorCode.InvalidToken) {\r\n // Check again layer status, it might have change during await.\r\n if (this.status === MapLayerImageryProviderStatus.Valid) {\r\n this.status = MapLayerImageryProviderStatus.RequireAuth;\r\n this.onStatusChanged.raiseEvent(this);\r\n }\r\n }\r\n\r\n if (json !== undefined) {\r\n this.serviceJson = json;\r\n if (json.capabilities) {\r\n\r\n this._querySupported = json.capabilities.indexOf(\"Query\") >= 0;\r\n this._tileMapSupported = json.capabilities.indexOf(\"Tilemap\") >= 0;\r\n }\r\n if (json.copyrightText) this._copyrightText = json.copyrightText;\r\n if (false !== (this._usesCachedTiles = json.tileInfo !== undefined && this.isEpsg3857Compatible(json.tileInfo))) {\r\n if (json.maxScale !== undefined && json.maxScale !== 0 && Array.isArray(json.tileInfo.lods)) {\r\n for (; this._maxDepthFromLod < json.tileInfo.lods.length && json.tileInfo.lods[this._maxDepthFromLod].scale > json.maxScale; this._maxDepthFromLod++)\r\n ;\r\n }\r\n }\r\n\r\n // Create tile map object only if we are going to request tiles from this server and it support tilemap requests.\r\n if (this._usesCachedTiles && this._tileMapSupported) {\r\n this._tileMap = new ArcGISTileMap(this._settings.url, json.tileInfo?.lods?.length);\r\n }\r\n\r\n const footprintJson = await ArcGisUtilities.getFootprintJson(this._settings.url, this.getRequestAuthorization());\r\n if (undefined !== footprintJson && undefined !== footprintJson.featureCollection && Array.isArray(footprintJson.featureCollection.layers)) {\r\n for (const layer of footprintJson.featureCollection.layers) {\r\n if (layer.layerDefinition && layer.layerDefinition.extent) {\r\n this.cartoRange = MapCartoRectangle.createFromDegrees(layer.layerDefinition.extent.xmin, layer.layerDefinition.extent.ymin, layer.layerDefinition.extent.xmax, layer.layerDefinition.extent.ymax);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // Read minLOD if available\r\n if (json.minLOD !== undefined) {\r\n const minLod = parseInt(json.minLOD, 10);\r\n if (!Number.isNaN(minLod)) {\r\n this._minDepthFromLod = minLod;\r\n }\r\n }\r\n }\r\n }\r\n\r\n public override getLogo() {\r\n return IModelApp.makeLogoCard({ heading: \"ArcGIS\", notice: this._copyrightText });\r\n }\r\n\r\n // Translates the provided Cartographic into a EPSG:3857 point, and retrieve information.\r\n // tolerance is in pixels\r\n private async getIdentifyData(quadId: QuadId, carto: Cartographic, tolerance: number): Promise<any> {\r\n const bboxString = this.getEPSG3857ExtentString(quadId.row, quadId.column, quadId.level);\r\n const x = this.getEPSG3857X(carto.longitudeDegrees);\r\n const y = this.getEPSG3857Y(carto.latitudeDegrees);\r\n const tmpUrl = `${this._settings.url}/identify?f=json&tolerance=${tolerance}&returnGeometry=false&sr=3857&imageDisplay=${this.tileSize},${this.tileSize},96&layers=${this.getLayerString(\"visible\")}&geometry=${x},${y}&geometryType=esriGeometryPoint&mapExtent=${bboxString}`;\r\n const urlObj = new URL(tmpUrl);\r\n\r\n if (this._accessClient) {\r\n try {\r\n this._lastAccessToken = undefined; // reset any previous accessToken, and rely on access client's cache\r\n this._lastAccessToken = await ArcGisUtilities.appendSecurityToken(urlObj, this._accessClient, {mapLayerUrl: urlObj, userName: this._settings.userName, password: this._settings.password });\r\n } catch {\r\n }\r\n }\r\n\r\n let json = await getJson(urlObj.toString());\r\n if (json?.error?.code === ArcGisErrorCode.TokenRequired || json?.error?.code === ArcGisErrorCode.InvalidToken) {\r\n\r\n if (this._accessClient?.invalidateToken !== undefined && this._lastAccessToken !== undefined)\r\n this._accessClient.invalidateToken(this._lastAccessToken);\r\n\r\n // Token might have expired, make a second attempt by forcing new token.\r\n if (this._settings.userName && this._settings.userName.length > 0 && this._lastAccessToken ) {\r\n const urlObj2 = new URL(tmpUrl);\r\n if (this._accessClient) {\r\n try {\r\n await ArcGisUtilities.appendSecurityToken(urlObj, this._accessClient, {mapLayerUrl: urlObj, userName: this._settings.userName, password: this._settings.password });\r\n } catch {\r\n }\r\n }\r\n json = await getJson(urlObj2.toString());\r\n }\r\n\r\n // OK at this point, if response still contain a token error, we assume end-user will\r\n // have to provide credentials again. Change the layer status so we\r\n // don't make additional invalid requests..\r\n if (json?.error?.code === ArcGisErrorCode.TokenRequired || json?.error?.code === ArcGisErrorCode.InvalidToken) {\r\n // Check again layer status, it might have change during await.\r\n if (this.status === MapLayerImageryProviderStatus.Valid) {\r\n this.status = MapLayerImageryProviderStatus.RequireAuth;\r\n const msg = IModelApp.localization.getLocalizedString(\"iModelJs:MapLayers.Messages.FetchTooltipTokenError\", { layerName: this._settings.name });\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Warning, msg));\r\n }\r\n\r\n json = undefined;\r\n }\r\n }\r\n\r\n return json;\r\n }\r\n\r\n // Makes an identify request to ESRI MapService server, and return it as a list of formatted strings\r\n public override async getToolTip(strings: string[], quadId: QuadId, carto: Cartographic, tree: ImageryMapTileTree): Promise<void> {\r\n await super.getToolTip(strings, quadId, carto, tree);\r\n\r\n if (!this._querySupported)\r\n return;\r\n\r\n const stringSet = new Set<string>();\r\n const json = await this.getIdentifyData(quadId, carto, 1);\r\n\r\n if (json && Array.isArray(json.results)) {\r\n for (const result of json.results) {\r\n if (result.attributes !== undefined && result.attributes[result.displayFieldName] !== undefined) {\r\n const thisString = `${result.displayFieldName}: ${result.attributes[result.displayFieldName]}`;\r\n if (!stringSet.has(thisString)) {\r\n strings.push(thisString);\r\n stringSet.add(thisString);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Makes an identify request to ESRI MapService , and return it as a list MapLayerFeatureInfo object\r\n public override async getFeatureInfo(featureInfos: MapLayerFeatureInfo[], quadId: QuadId, carto: Cartographic, _tree: ImageryMapTileTree): Promise<void> {\r\n if (!this._querySupported)\r\n return;\r\n\r\n const json = await this.getIdentifyData(quadId, carto,5 );\r\n if (json && Array.isArray(json.results)) {\r\n const layerInfo: MapLayerFeatureInfo = {layerName: this._settings.name};\r\n\r\n for (const result of json.results) {\r\n\r\n const subLayerInfo: MapSubLayerFeatureInfo = {\r\n subLayerName: result.layerName ?? \"\",\r\n displayFieldName: result.displayFieldName,\r\n records : [],\r\n };\r\n for (const [key, value] of Object.entries(result.attributes)) {\r\n // Convert everything to string for now\r\n const strValue = String(value);\r\n subLayerInfo.records?.push(new MapFeatureInfoRecord (\r\n {valueFormat:PropertyValueFormat.Primitive, value:strValue, displayValue: strValue},\r\n {name: key, displayLabel: key, typename:StandardTypeNames.String}\r\n ));\r\n }\r\n\r\n if (layerInfo.info === undefined) {\r\n layerInfo.info = [];\r\n }\r\n\r\n if (!(layerInfo.info instanceof HTMLElement)) {\r\n layerInfo.info.push(subLayerInfo);\r\n }\r\n\r\n }\r\n\r\n featureInfos.push(layerInfo);\r\n }\r\n }\r\n\r\n protected getLayerString(prefix = \"show\"): string {\r\n const layers = new Array<string>();\r\n this._settings.subLayers.forEach((subLayer) => { if (this._settings.isSubLayerVisible(subLayer)) layers.push(subLayer.idString); });\r\n return `${prefix}: ${layers.join(\",\")} `;\r\n }\r\n\r\n // construct the Url from the desired Tile\r\n public async constructUrl(row: number, column: number, zoomLevel: number): Promise<string> {\r\n let tmpUrl;\r\n if (this._usesCachedTiles) {\r\n tmpUrl = `${this._settings.url}/tile/${zoomLevel}/${row}/${column} `;\r\n } else {\r\n const bboxString = `${this.getEPSG3857ExtentString(row, column, zoomLevel)}&bboxSR=3857`;\r\n tmpUrl = `${this._settings.url}/export?bbox=${bboxString}&size=${this.tileSize},${this.tileSize}&layers=${this.getLayerString()}&format=png&transparent=${this.transparentBackgroundString}&f=image&sr=3857&imagesr=3857`;\r\n }\r\n const urlObj = new URL(tmpUrl);\r\n try {\r\n if (this._accessClient) {\r\n this._lastAccessToken = undefined; // reset any previous accessToken, and rely on access client's cache\r\n this._lastAccessToken = await ArcGisUtilities.appendSecurityToken(urlObj, this._accessClient, {\r\n mapLayerUrl: new URL(this._settings.url),\r\n userName: this._settings.userName,\r\n password: this._settings.password });\r\n }\r\n\r\n } catch {\r\n }\r\n return urlObj.toString();\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"ArcGISMapLayerImageryProvider.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport { getJson, request, RequestOptions, Response } from \"../../../request/Request\";\r\nimport { Cartographic, ImageMapLayerSettings, ImageSource, IModelStatus, ServerError } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../../../IModelApp\";\r\nimport { NotifyMessageDetails, OutputMessagePriority } from \"../../../NotificationManager\";\r\nimport {\r\n ArcGisErrorCode, ArcGISTileMap, ArcGisUtilities,\r\n ImageryMapTile, ImageryMapTileTree, MapCartoRectangle, MapFeatureInfoRecord, MapLayerAccessClient, MapLayerAccessToken, MapLayerFeatureInfo,\r\n MapLayerImageryProvider, MapLayerImageryProviderStatus, MapSubLayerFeatureInfo, QuadId,\r\n} from \"../../internal\";\r\nimport { PropertyValueFormat, StandardTypeNames } from \"@itwin/appui-abstract\";\r\n\r\n/** @internal */\r\nexport class ArcGISMapLayerImageryProvider extends MapLayerImageryProvider {\r\n private _maxDepthFromLod = 0;\r\n private _minDepthFromLod = 0;\r\n private _copyrightText = \"Copyright\";\r\n private _querySupported = false;\r\n private _tileMapSupported = false;\r\n private _tileMap: ArcGISTileMap|undefined;\r\n private _accessClient: MapLayerAccessClient|undefined;\r\n private _lastAccessToken: MapLayerAccessToken|undefined;\r\n public serviceJson: any;\r\n constructor(settings: ImageMapLayerSettings) {\r\n super(settings, false);\r\n this._accessClient = IModelApp.mapLayerFormatRegistry.getAccessClient(settings.formatId);\r\n }\r\n\r\n protected override get _filterByCartoRange() { return false; } // Can't trust footprint ranges (USGS Hydro)\r\n\r\n public override get minimumZoomLevel() { return Math.max(super.minimumZoomLevel, this._minDepthFromLod); }\r\n public override get maximumZoomLevel() { return this._maxDepthFromLod > 0 ? this._maxDepthFromLod : super.maximumZoomLevel; }\r\n\r\n public uintToString(uintArray: any) {\r\n return Buffer.from(uintArray).toJSON();\r\n\r\n }\r\n\r\n private async fetchTile(row: number, column: number, zoomLevel: number): Promise<Response | undefined> {\r\n const tileRequestOptions: RequestOptions = { method: \"GET\", responseType: \"arraybuffer\" };\r\n tileRequestOptions.auth = this.getRequestAuthorization();\r\n const tileUrl: string = await this.constructUrl(row, column, zoomLevel);\r\n if (tileUrl.length === 0)\r\n return undefined;\r\n\r\n return request(tileUrl, tileRequestOptions);\r\n }\r\n\r\n public override async loadTile(row: number, column: number, zoomLevel: number): Promise<ImageSource | undefined> {\r\n\r\n if ((this.status === MapLayerImageryProviderStatus.RequireAuth)) {\r\n return undefined;\r\n }\r\n\r\n try {\r\n let tileResponse = await this.fetchTile(row, column, zoomLevel);\r\n if (tileResponse === undefined)\r\n return undefined;\r\n\r\n // Check the content type from the response, it might contain an authentication error that need to be reported.\r\n // Skip if the layer state was already invalid\r\n if (ArcGisUtilities.hasTokenError(tileResponse)) {\r\n\r\n if (this._accessClient?.invalidateToken !== undefined && this._lastAccessToken !== undefined)\r\n this._accessClient.invalidateToken(this._lastAccessToken);\r\n\r\n // Token might have expired, make a second attempt by forcing new token.\r\n if (this._settings.userName && this._settings.userName.length > 0 && this._lastAccessToken) {\r\n tileResponse = await this.fetchTile(row, column, zoomLevel);\r\n if (tileResponse === undefined)\r\n return undefined;\r\n }\r\n\r\n // OK at this point, if response still contain a token error, we assume end-user will\r\n // have to provide credentials again. Change the layer status so we\r\n // don't make additional invalid requests..\r\n if (tileResponse && ArcGisUtilities.hasTokenError(tileResponse)) {\r\n // Check again layer status, it might have change during await.\r\n if (this.status === MapLayerImageryProviderStatus.Valid) {\r\n this.status = MapLayerImageryProviderStatus.RequireAuth;\r\n this.onStatusChanged.raiseEvent(this);\r\n\r\n // Only report error to end-user if we were previously able to fetch tiles\r\n // and then encountered an error, otherwise I assume an error was already reported\r\n // through the source validation process.\r\n if (this._hasSuccessfullyFetchedTile) {\r\n const msg = IModelApp.localization.getLocalizedString(\"iModelJs:MapLayers.Messages.LoadTileTokenError\", { layerName: this._settings.name });\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Warning, msg));\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n }\r\n\r\n if (!this._hasSuccessfullyFetchedTile) {\r\n this._hasSuccessfullyFetchedTile = true;\r\n }\r\n return this.getImageFromTileResponse(tileResponse, zoomLevel);\r\n } catch (error) {\r\n return undefined;\r\n }\r\n }\r\n protected override _generateChildIds(tile: ImageryMapTile, resolveChildren: (childIds: QuadId[]) => void) {\r\n const childIds = this.getPotentialChildIds(tile);\r\n if (!this._tileMap || tile.quadId.level < Math.max(4, this.minimumZoomLevel-1)) {\r\n resolveChildren(childIds);\r\n return;\r\n }\r\n\r\n if (this._tileMap) {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this._tileMap.getChildrenAvailability(childIds).then((availability) => {\r\n const availableChildIds = new Array<QuadId>();\r\n for (let i = 0; i < availability.length; i++)\r\n if (availability[i])\r\n availableChildIds.push(childIds[i]);\r\n\r\n resolveChildren (availableChildIds);\r\n });\r\n }\r\n }\r\n\r\n private isEpsg3857Compatible(tileInfo: any) {\r\n if (tileInfo.spatialReference?.latestWkid !== 3857 || !Array.isArray(tileInfo.lods))\r\n return false;\r\n\r\n const zeroLod = tileInfo.lods[0];\r\n return zeroLod.level === 0 && Math.abs(zeroLod.resolution - 156543.03392800014) < .001;\r\n }\r\n\r\n public override async initialize(): Promise<void> {\r\n\r\n const json = await ArcGisUtilities.getServiceJson(this._settings.url, this.getRequestAuthorization());\r\n if (json === undefined)\r\n throw new ServerError(IModelStatus.ValidationFailed, \"\");\r\n\r\n if (json?.error?.code === ArcGisErrorCode.TokenRequired || json?.error?.code === ArcGisErrorCode.InvalidToken) {\r\n // Check again layer status, it might have change during await.\r\n if (this.status === MapLayerImageryProviderStatus.Valid) {\r\n this.status = MapLayerImageryProviderStatus.RequireAuth;\r\n this.onStatusChanged.raiseEvent(this);\r\n }\r\n }\r\n\r\n if (json !== undefined) {\r\n this.serviceJson = json;\r\n if (json.capabilities) {\r\n\r\n this._querySupported = json.capabilities.indexOf(\"Query\") >= 0;\r\n this._tileMapSupported = json.capabilities.indexOf(\"Tilemap\") >= 0;\r\n }\r\n if (json.copyrightText) this._copyrightText = json.copyrightText;\r\n if (false !== (this._usesCachedTiles = json.tileInfo !== undefined && this.isEpsg3857Compatible(json.tileInfo))) {\r\n if (json.maxScale !== undefined && json.maxScale !== 0 && Array.isArray(json.tileInfo.lods)) {\r\n for (; this._maxDepthFromLod < json.tileInfo.lods.length && json.tileInfo.lods[this._maxDepthFromLod].scale > json.maxScale; this._maxDepthFromLod++)\r\n ;\r\n }\r\n }\r\n\r\n // Create tile map object only if we are going to request tiles from this server and it support tilemap requests.\r\n if (this._usesCachedTiles && this._tileMapSupported) {\r\n this._tileMap = new ArcGISTileMap(this._settings.url, json.tileInfo?.lods?.length);\r\n }\r\n\r\n const footprintJson = await ArcGisUtilities.getFootprintJson(this._settings.url, this.getRequestAuthorization());\r\n if (undefined !== footprintJson && undefined !== footprintJson.featureCollection && Array.isArray(footprintJson.featureCollection.layers)) {\r\n for (const layer of footprintJson.featureCollection.layers) {\r\n if (layer.layerDefinition && layer.layerDefinition.extent) {\r\n this.cartoRange = MapCartoRectangle.createFromDegrees(layer.layerDefinition.extent.xmin, layer.layerDefinition.extent.ymin, layer.layerDefinition.extent.xmax, layer.layerDefinition.extent.ymax);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // Read minLOD if available\r\n if (json.minLOD !== undefined) {\r\n const minLod = parseInt(json.minLOD, 10);\r\n if (!Number.isNaN(minLod)) {\r\n this._minDepthFromLod = minLod;\r\n }\r\n }\r\n }\r\n }\r\n\r\n public override addLogoCards(cards: HTMLTableElement): void {\r\n if (!cards.dataset.arcGisLogoCard) {\r\n cards.dataset.arcGisLogoCard = \"true\";\r\n cards.appendChild(IModelApp.makeLogoCard({ heading: \"ArcGIS\", notice: this._copyrightText }));\r\n }\r\n }\r\n\r\n // Translates the provided Cartographic into a EPSG:3857 point, and retrieve information.\r\n // tolerance is in pixels\r\n private async getIdentifyData(quadId: QuadId, carto: Cartographic, tolerance: number): Promise<any> {\r\n const bboxString = this.getEPSG3857ExtentString(quadId.row, quadId.column, quadId.level);\r\n const x = this.getEPSG3857X(carto.longitudeDegrees);\r\n const y = this.getEPSG3857Y(carto.latitudeDegrees);\r\n const tmpUrl = `${this._settings.url}/identify?f=json&tolerance=${tolerance}&returnGeometry=false&sr=3857&imageDisplay=${this.tileSize},${this.tileSize},96&layers=${this.getLayerString(\"visible\")}&geometry=${x},${y}&geometryType=esriGeometryPoint&mapExtent=${bboxString}`;\r\n const urlObj = new URL(tmpUrl);\r\n\r\n if (this._accessClient) {\r\n try {\r\n this._lastAccessToken = undefined; // reset any previous accessToken, and rely on access client's cache\r\n this._lastAccessToken = await ArcGisUtilities.appendSecurityToken(urlObj, this._accessClient, {mapLayerUrl: urlObj, userName: this._settings.userName, password: this._settings.password });\r\n } catch {\r\n }\r\n }\r\n\r\n let json = await getJson(urlObj.toString());\r\n if (json?.error?.code === ArcGisErrorCode.TokenRequired || json?.error?.code === ArcGisErrorCode.InvalidToken) {\r\n\r\n if (this._accessClient?.invalidateToken !== undefined && this._lastAccessToken !== undefined)\r\n this._accessClient.invalidateToken(this._lastAccessToken);\r\n\r\n // Token might have expired, make a second attempt by forcing new token.\r\n if (this._settings.userName && this._settings.userName.length > 0 && this._lastAccessToken ) {\r\n const urlObj2 = new URL(tmpUrl);\r\n if (this._accessClient) {\r\n try {\r\n await ArcGisUtilities.appendSecurityToken(urlObj, this._accessClient, {mapLayerUrl: urlObj, userName: this._settings.userName, password: this._settings.password });\r\n } catch {\r\n }\r\n }\r\n json = await getJson(urlObj2.toString());\r\n }\r\n\r\n // OK at this point, if response still contain a token error, we assume end-user will\r\n // have to provide credentials again. Change the layer status so we\r\n // don't make additional invalid requests..\r\n if (json?.error?.code === ArcGisErrorCode.TokenRequired || json?.error?.code === ArcGisErrorCode.InvalidToken) {\r\n // Check again layer status, it might have change during await.\r\n if (this.status === MapLayerImageryProviderStatus.Valid) {\r\n this.status = MapLayerImageryProviderStatus.RequireAuth;\r\n const msg = IModelApp.localization.getLocalizedString(\"iModelJs:MapLayers.Messages.FetchTooltipTokenError\", { layerName: this._settings.name });\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Warning, msg));\r\n }\r\n\r\n json = undefined;\r\n }\r\n }\r\n\r\n return json;\r\n }\r\n\r\n // Makes an identify request to ESRI MapService server, and return it as a list of formatted strings\r\n public override async getToolTip(strings: string[], quadId: QuadId, carto: Cartographic, tree: ImageryMapTileTree): Promise<void> {\r\n await super.getToolTip(strings, quadId, carto, tree);\r\n\r\n if (!this._querySupported)\r\n return;\r\n\r\n const stringSet = new Set<string>();\r\n const json = await this.getIdentifyData(quadId, carto, 1);\r\n\r\n if (json && Array.isArray(json.results)) {\r\n for (const result of json.results) {\r\n if (result.attributes !== undefined && result.attributes[result.displayFieldName] !== undefined) {\r\n const thisString = `${result.displayFieldName}: ${result.attributes[result.displayFieldName]}`;\r\n if (!stringSet.has(thisString)) {\r\n strings.push(thisString);\r\n stringSet.add(thisString);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Makes an identify request to ESRI MapService , and return it as a list MapLayerFeatureInfo object\r\n public override async getFeatureInfo(featureInfos: MapLayerFeatureInfo[], quadId: QuadId, carto: Cartographic, _tree: ImageryMapTileTree): Promise<void> {\r\n if (!this._querySupported)\r\n return;\r\n\r\n const json = await this.getIdentifyData(quadId, carto,5 );\r\n if (json && Array.isArray(json.results)) {\r\n const layerInfo: MapLayerFeatureInfo = {layerName: this._settings.name};\r\n\r\n for (const result of json.results) {\r\n\r\n const subLayerInfo: MapSubLayerFeatureInfo = {\r\n subLayerName: result.layerName ?? \"\",\r\n displayFieldName: result.displayFieldName,\r\n records : [],\r\n };\r\n for (const [key, value] of Object.entries(result.attributes)) {\r\n // Convert everything to string for now\r\n const strValue = String(value);\r\n subLayerInfo.records?.push(new MapFeatureInfoRecord (\r\n {valueFormat:PropertyValueFormat.Primitive, value:strValue, displayValue: strValue},\r\n {name: key, displayLabel: key, typename:StandardTypeNames.String}\r\n ));\r\n }\r\n\r\n if (layerInfo.info === undefined) {\r\n layerInfo.info = [];\r\n }\r\n\r\n if (!(layerInfo.info instanceof HTMLElement)) {\r\n layerInfo.info.push(subLayerInfo);\r\n }\r\n\r\n }\r\n\r\n featureInfos.push(layerInfo);\r\n }\r\n }\r\n\r\n protected getLayerString(prefix = \"show\"): string {\r\n const layers = new Array<string>();\r\n this._settings.subLayers.forEach((subLayer) => { if (this._settings.isSubLayerVisible(subLayer)) layers.push(subLayer.idString); });\r\n return `${prefix}: ${layers.join(\",\")} `;\r\n }\r\n\r\n // construct the Url from the desired Tile\r\n public async constructUrl(row: number, column: number, zoomLevel: number): Promise<string> {\r\n let tmpUrl;\r\n if (this._usesCachedTiles) {\r\n tmpUrl = `${this._settings.url}/tile/${zoomLevel}/${row}/${column} `;\r\n } else {\r\n const bboxString = `${this.getEPSG3857ExtentString(row, column, zoomLevel)}&bboxSR=3857`;\r\n tmpUrl = `${this._settings.url}/export?bbox=${bboxString}&size=${this.tileSize},${this.tileSize}&layers=${this.getLayerString()}&format=png&transparent=${this.transparentBackgroundString}&f=image&sr=3857&imagesr=3857`;\r\n }\r\n const urlObj = new URL(tmpUrl);\r\n try {\r\n if (this._accessClient) {\r\n this._lastAccessToken = undefined; // reset any previous accessToken, and rely on access client's cache\r\n this._lastAccessToken = await ArcGisUtilities.appendSecurityToken(urlObj, this._accessClient, {\r\n mapLayerUrl: new URL(this._settings.url),\r\n userName: this._settings.userName,\r\n password: this._settings.password });\r\n }\r\n\r\n } catch {\r\n }\r\n return urlObj.toString();\r\n }\r\n}\r\n"]}
|
|
@@ -7,6 +7,6 @@ import { MapLayerImageryProvider } from "../../internal";
|
|
|
7
7
|
export declare class AzureMapsLayerImageryProvider extends MapLayerImageryProvider {
|
|
8
8
|
constructor(settings: ImageMapLayerSettings);
|
|
9
9
|
constructUrl(y: number, x: number, zoom: number): Promise<string>;
|
|
10
|
-
|
|
10
|
+
addLogoCards(cards: HTMLTableElement): void;
|
|
11
11
|
}
|
|
12
12
|
//# sourceMappingURL=AzureMapsLayerImageryProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AzureMapsLayerImageryProvider.d.ts","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,gBAAgB;AAChB,qBAAa,6BAA8B,SAAQ,uBAAuB;gBAC5D,QAAQ,EAAE,qBAAqB;IAG9B,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAM9D,
|
|
1
|
+
{"version":3,"file":"AzureMapsLayerImageryProvider.d.ts","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,gBAAgB;AAChB,qBAAa,6BAA8B,SAAQ,uBAAuB;gBAC5D,QAAQ,EAAE,qBAAqB;IAG9B,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAM9D,YAAY,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;CAM5D"}
|
|
@@ -19,8 +19,11 @@ class AzureMapsLayerImageryProvider extends internal_1.MapLayerImageryProvider {
|
|
|
19
19
|
return "";
|
|
20
20
|
return `${this._settings.url}&${this._settings.accessKey.key}=${this._settings.accessKey.value}&api-version=2.0&zoom=${zoom}&x=${x}&y=${y}`;
|
|
21
21
|
}
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
addLogoCards(cards) {
|
|
23
|
+
if (!cards.dataset.azureMapsLogoCard) {
|
|
24
|
+
cards.dataset.azureMapsLogoCard = "true";
|
|
25
|
+
cards.appendChild(IModelApp_1.IModelApp.makeLogoCard({ heading: "Azure Maps", notice: IModelApp_1.IModelApp.localization.getLocalizedString("iModelJs:BackgroundMap.AzureMapsCopyright") }));
|
|
26
|
+
}
|
|
24
27
|
}
|
|
25
28
|
}
|
|
26
29
|
exports.AzureMapsLayerImageryProvider = AzureMapsLayerImageryProvider;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AzureMapsLayerImageryProvider.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAGH,kDAA+C;AAC/C,6CAAyD;AAEzD,gBAAgB;AAChB,MAAa,6BAA8B,SAAQ,kCAAuB;IACxE,YAAY,QAA+B,IAAI,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAEvE,0CAA0C;IACnC,KAAK,CAAC,YAAY,CAAC,CAAS,EAAE,CAAS,EAAE,IAAY;QAC1D,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS;YAC3B,OAAO,EAAE,CAAC;QACZ,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,yBAAyB,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;IAC9I,CAAC;IAEe,OAAO;
|
|
1
|
+
{"version":3,"file":"AzureMapsLayerImageryProvider.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAGH,kDAA+C;AAC/C,6CAAyD;AAEzD,gBAAgB;AAChB,MAAa,6BAA8B,SAAQ,kCAAuB;IACxE,YAAY,QAA+B,IAAI,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAEvE,0CAA0C;IACnC,KAAK,CAAC,YAAY,CAAC,CAAS,EAAE,CAAS,EAAE,IAAY;QAC1D,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS;YAC3B,OAAO,EAAE,CAAC;QACZ,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,yBAAyB,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;IAC9I,CAAC;IAEe,YAAY,CAAC,KAAuB;QAClD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE;YACpC,KAAK,CAAC,OAAO,CAAC,iBAAiB,GAAG,MAAM,CAAC;YACzC,KAAK,CAAC,WAAW,CAAC,qBAAS,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,qBAAS,CAAC,YAAY,CAAC,kBAAkB,CAAC,2CAA2C,CAAC,EAAE,CAAC,CAAC,CAAC;SACtK;IACH,CAAC;CACF;AAhBD,sEAgBC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport { ImageMapLayerSettings } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../../../IModelApp\";\r\nimport { MapLayerImageryProvider } from \"../../internal\";\r\n\r\n/** @internal */\r\nexport class AzureMapsLayerImageryProvider extends MapLayerImageryProvider {\r\n constructor(settings: ImageMapLayerSettings) { super(settings, true); }\r\n\r\n // construct the Url from the desired Tile\r\n public async constructUrl(y: number, x: number, zoom: number): Promise<string> {\r\n if (!this._settings.accessKey)\r\n return \"\";\r\n return `${this._settings.url}&${this._settings.accessKey.key}=${this._settings.accessKey.value}&api-version=2.0&zoom=${zoom}&x=${x}&y=${y}`;\r\n }\r\n\r\n public override addLogoCards(cards: HTMLTableElement): void {\r\n if (!cards.dataset.azureMapsLogoCard) {\r\n cards.dataset.azureMapsLogoCard = \"true\";\r\n cards.appendChild(IModelApp.makeLogoCard({ heading: \"Azure Maps\", notice: IModelApp.localization.getLocalizedString(\"iModelJs:BackgroundMap.AzureMapsCopyright\") }));\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -20,7 +20,7 @@ export declare class BingMapsImageryLayerProvider extends MapLayerImageryProvide
|
|
|
20
20
|
private tileXYToQuadKey;
|
|
21
21
|
constructUrl(row: number, column: number, zoomLevel: number): Promise<string>;
|
|
22
22
|
private getMatchingAttributions;
|
|
23
|
-
|
|
23
|
+
addLogoCards(cards: HTMLTableElement, vp: ScreenViewport): void;
|
|
24
24
|
initialize(): Promise<void>;
|
|
25
25
|
private readAttributions;
|
|
26
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BingImageryProvider.d.ts","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/BingImageryProvider.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EAAE,qBAAqB,EAAe,MAAM,oBAAoB,CAAC;AAGxE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EACL,uBAAuB,EAExB,MAAM,gBAAgB,CAAC;AAsDxB,gBAAgB;AAChB,qBAAa,4BAA6B,SAAQ,uBAAuB;IACvE,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,cAAc,CAAC,CAAW;IAClC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,aAAa,CAAC,CAAoB;IAC1C,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,EAAE,qBAAqB;IAQ3C,IAAW,SAAS,IAAI,MAAM,CAA4B;IAC1D,IAAW,UAAU,IAAI,MAAM,CAA6B;IAE5D,OAAO,CAAC,eAAe;IAuBV,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAa1F,OAAO,CAAC,uBAAuB;IAoBf,
|
|
1
|
+
{"version":3,"file":"BingImageryProvider.d.ts","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/BingImageryProvider.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EAAE,qBAAqB,EAAe,MAAM,oBAAoB,CAAC;AAGxE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EACL,uBAAuB,EAExB,MAAM,gBAAgB,CAAC;AAsDxB,gBAAgB;AAChB,qBAAa,4BAA6B,SAAQ,uBAAuB;IACvE,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,cAAc,CAAC,CAAW;IAClC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,aAAa,CAAC,CAAoB;IAC1C,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,EAAE,qBAAqB;IAQ3C,IAAW,SAAS,IAAI,MAAM,CAA4B;IAC1D,IAAW,UAAU,IAAI,MAAM,CAA6B;IAE5D,OAAO,CAAC,eAAe;IAuBV,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAa1F,OAAO,CAAC,uBAAuB;IAoBf,YAAY,CAAC,KAAK,EAAE,gBAAgB,EAAE,EAAE,EAAE,cAAc,GAAG,IAAI;IAkBzD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAgCjD,OAAO,CAAC,gBAAgB;CAezB"}
|
|
@@ -122,7 +122,7 @@ class BingMapsImageryLayerProvider extends internal_1.MapLayerImageryProvider {
|
|
|
122
122
|
}
|
|
123
123
|
return matchingAttributions;
|
|
124
124
|
}
|
|
125
|
-
|
|
125
|
+
addLogoCards(cards, vp) {
|
|
126
126
|
var _a;
|
|
127
127
|
const tiles = (_a = IModelApp_1.IModelApp.tileAdmin.getTilesForUser(vp)) === null || _a === void 0 ? void 0 : _a.selected;
|
|
128
128
|
const matchingAttributions = this.getMatchingAttributions(tiles);
|
|
@@ -135,7 +135,7 @@ class BingMapsImageryLayerProvider extends internal_1.MapLayerImageryProvider {
|
|
|
135
135
|
copyrightMsg += "<br>";
|
|
136
136
|
copyrightMsg += copyrights[i];
|
|
137
137
|
}
|
|
138
|
-
|
|
138
|
+
cards.appendChild(IModelApp_1.IModelApp.makeLogoCard({ iconSrc: `${IModelApp_1.IModelApp.publicPath}images/bing.svg`, heading: "Microsoft Bing", notice: copyrightMsg }));
|
|
139
139
|
}
|
|
140
140
|
// initializes the BingImageryProvider by reading the templateUrl, logo image, and attribution list.
|
|
141
141
|
async initialize() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BingImageryProvider.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/BingImageryProvider.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport { assert, BentleyError, IModelStatus } from \"@itwin/core-bentley\";\r\nimport { Range2d } from \"@itwin/core-geometry\";\r\nimport { ImageMapLayerSettings, ImageSource } from \"@itwin/core-common\";\r\nimport { request, RequestOptions, Response } from \"../../../request/Request\";\r\nimport { IModelApp } from \"../../../IModelApp\";\r\nimport { ScreenViewport } from \"../../../Viewport\";\r\nimport {\r\n MapLayerImageryProvider, MapTile, MapTilingScheme, QuadId,\r\n Tile, WebMercatorTilingScheme,\r\n} from \"../../internal\";\r\n\r\n/** Represents one range of geography and tile zoom levels for a bing data provider\r\n * @internal\r\n */\r\nclass Coverage {\r\n constructor(private _lowerLeftLatitude: number,\r\n private _lowerLeftLongitude: number,\r\n private _upperRightLatitude: number,\r\n private _upperRightLongitude: number,\r\n private _minimumZoomLevel: number,\r\n private _maximumZoomLevel: number) { }\r\n\r\n public overlaps(quadId: QuadId, tilingScheme: MapTilingScheme): boolean {\r\n const range: Range2d = quadId.getLatLongRange(tilingScheme);\r\n if (quadId.level < this._minimumZoomLevel)\r\n return false;\r\n if (quadId.level > this._maximumZoomLevel)\r\n return false;\r\n if (range.low.x > this._upperRightLongitude)\r\n return false;\r\n if (range.low.y > this._upperRightLatitude)\r\n return false;\r\n if (range.high.x < this._lowerLeftLongitude)\r\n return false;\r\n if (range.high.y < this._lowerLeftLatitude)\r\n return false;\r\n\r\n return true;\r\n }\r\n}\r\n\r\n/** Represents the copyright message and an array of coverage data for one of bing's data providers (HERE for example).\r\n * @internal\r\n */\r\nclass BingAttribution {\r\n constructor(public copyrightMessage: string, private _coverages: Coverage[]) { }\r\n\r\n public matchesTile(tile: Tile, tilingScheme: MapTilingScheme): boolean {\r\n const quadId = QuadId.createFromContentId(tile.contentId);\r\n for (const coverage of this._coverages) {\r\n if (coverage.overlaps(quadId, tilingScheme))\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n\r\n// in deployed applications, we can only make https requests, but the Bing Maps metadata request returns templates with \"http:\".\r\n// This function fixes those.\r\nfunction replaceHttpWithHttps(originalUrl: string) {\r\n return originalUrl.startsWith(\"http:\") ? \"https:\".concat(originalUrl.slice(5)) : originalUrl;\r\n}\r\n\r\n/** @internal */\r\nexport class BingMapsImageryLayerProvider extends MapLayerImageryProvider {\r\n private _urlTemplate?: string;\r\n private _urlSubdomains?: string[];\r\n private _zoomMax: number;\r\n private _tileHeight: number;\r\n private _tileWidth: number;\r\n private _attributions?: BingAttribution[]; // array of Bing's data providers.\r\n private _mapTilingScheme: MapTilingScheme;\r\n private _urlBase: string;\r\n\r\n constructor(settings: ImageMapLayerSettings) {\r\n super(settings, true);\r\n this._urlBase = settings.url;\r\n this._zoomMax = 0;\r\n this._tileHeight = this._tileWidth = 0;\r\n this._mapTilingScheme = new WebMercatorTilingScheme();\r\n }\r\n\r\n public get tileWidth(): number { return this._tileWidth; }\r\n public get tileHeight(): number { return this._tileHeight; }\r\n\r\n private tileXYToQuadKey(tileX: number, tileY: number, zoomLevel: number) {\r\n // from C# example in bing documentation https://msdn.microsoft.com/en-us/library/bb259689.aspx\r\n let quadKey: string = \"\";\r\n\r\n // Root tile is not displayable. Returns 0 for _GetMaximumSize(). Should not end up here.\r\n assert(0 !== zoomLevel);\r\n\r\n for (let i: number = zoomLevel; i > 0; i--) {\r\n let digit: number = 0x30; // '0'\r\n const mask: number = 1 << (i - 1);\r\n if ((tileX & mask) !== 0) {\r\n digit++;\r\n }\r\n if ((tileY & mask) !== 0) {\r\n digit++;\r\n digit++;\r\n }\r\n quadKey = quadKey.concat(String.fromCharCode(digit));\r\n }\r\n return quadKey;\r\n }\r\n\r\n // construct the Url from the desired Tile\r\n public async constructUrl(row: number, column: number, zoomLevel: number): Promise<string> {\r\n // From the tile, get a \"quadKey\" the Microsoft way.\r\n const quadKey: string = this.tileXYToQuadKey(column, row, zoomLevel);\r\n const subdomain: string = this._urlSubdomains![(row + column) % this._urlSubdomains!.length];\r\n\r\n // from the template url, construct the tile url.\r\n let url: string = this._urlTemplate!.replace(\"{subdomain}\", subdomain);\r\n url = url.replace(\"{quadkey}\", quadKey);\r\n\r\n return url;\r\n }\r\n\r\n // gets the attributions that match the tile set.\r\n private getMatchingAttributions(tiles: Set<Tile> | undefined): BingAttribution[] {\r\n const matchingAttributions: BingAttribution[] = new Array<BingAttribution>();\r\n if (!this._attributions || !tiles)\r\n return matchingAttributions;\r\n\r\n const unmatchedSet: BingAttribution[] = this._attributions.slice();\r\n for (const tile of tiles) {\r\n if (tile instanceof MapTile)\r\n // compare to the set of Bing attributions that we have not yet matched.\r\n for (let iAttr = 0; iAttr < unmatchedSet.length; iAttr++) {\r\n const attribution = unmatchedSet[iAttr];\r\n if (attribution && attribution.matchesTile(tile, this._mapTilingScheme)) {\r\n matchingAttributions.push(attribution);\r\n delete unmatchedSet[iAttr];\r\n }\r\n }\r\n }\r\n return matchingAttributions;\r\n }\r\n\r\n public override getLogo(vp: ScreenViewport): HTMLTableRowElement | undefined {\r\n const tiles = IModelApp.tileAdmin.getTilesForUser(vp)?.selected;\r\n const matchingAttributions = this.getMatchingAttributions(tiles);\r\n const copyrights: string[] = [];\r\n for (const match of matchingAttributions)\r\n copyrights.push(match.copyrightMessage);\r\n\r\n let copyrightMsg = \"\";\r\n for (let i = 0; i < copyrights.length; ++i) {\r\n if (i > 0)\r\n copyrightMsg += \"<br>\";\r\n copyrightMsg += copyrights[i];\r\n }\r\n return IModelApp.makeLogoCard({ iconSrc: `${IModelApp.publicPath}images/bing.svg`, heading: \"Microsoft Bing\", notice: copyrightMsg });\r\n }\r\n\r\n // initializes the BingImageryProvider by reading the templateUrl, logo image, and attribution list.\r\n public override async initialize(): Promise<void> {\r\n // get the template url\r\n const bingRequestUrl = this._urlBase.replace(\"{bingKey}\", this._settings.accessKey ? this._settings.accessKey.value : \"\");\r\n const requestOptions: RequestOptions = { method: \"GET\" };\r\n\r\n try {\r\n const response: Response = await request(bingRequestUrl, requestOptions);\r\n const bingResponseProps: any = response.body;\r\n\r\n const thisResourceSetProps = bingResponseProps.resourceSets[0];\r\n const thisResourceProps = thisResourceSetProps.resources[0];\r\n this._zoomMax = thisResourceProps.zoomMax;\r\n this._tileHeight = thisResourceProps.imageHeight;\r\n this._tileWidth = thisResourceProps.imageWidth;\r\n this._urlTemplate = replaceHttpWithHttps(thisResourceProps.imageUrl.replace(\"{culture}\", \"en-US\")); // NEEDSWORK - get locale from somewhere.\r\n this._urlSubdomains = thisResourceProps.imageUrlSubdomains;\r\n // read the list of Bing's data suppliers and the range of data they provide. Used in calculation of copyright message.\r\n this.readAttributions(thisResourceProps.imageryProviders);\r\n\r\n // Bing sometimes provides tiles that have nothing but a camera icon in the middle of them when you ask\r\n // for tiles at zoom levels where they don't have data. Their application stops you from zooming in when that's the\r\n // case, but we can't stop - the user might want to look at design data a closer zoom. So we intentionally load such\r\n // a tile, and then compare other tiles to it, rejecting them if they match.\r\n this.loadTile(0, 0, this._zoomMax - 1).then((tileData: ImageSource | undefined) => { // eslint-disable-line @typescript-eslint/no-floating-promises\r\n if (tileData !== undefined) this._missingTileData = tileData.data as Uint8Array;\r\n });\r\n } catch (error) {\r\n throw new BentleyError(IModelStatus.BadModel, \"Error in Bing Server communications\");\r\n }\r\n }\r\n\r\n // reads the list of Bing data providers and the map range for which they each provide data.\r\n private readAttributions(attributionProps: any) {\r\n for (const thisAttributionProps of attributionProps) {\r\n const copyrightMessage: string = thisAttributionProps.attribution;\r\n const coverages: Coverage[] = new Array<Coverage>();\r\n for (const thisCoverageProps of thisAttributionProps.coverageAreas) {\r\n const thisCoverage = new Coverage(thisCoverageProps.bbox[0], thisCoverageProps.bbox[1], thisCoverageProps.bbox[2], thisCoverageProps.bbox[3],\r\n thisCoverageProps.zoomMin, thisCoverageProps.zoomMax);\r\n coverages.push(thisCoverage);\r\n }\r\n const thisAttribution: BingAttribution = new BingAttribution(copyrightMessage, coverages);\r\n if (!this._attributions)\r\n this._attributions = new Array<BingAttribution>();\r\n this._attributions.push(thisAttribution);\r\n }\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"BingImageryProvider.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/BingImageryProvider.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport { assert, BentleyError, IModelStatus } from \"@itwin/core-bentley\";\r\nimport { Range2d } from \"@itwin/core-geometry\";\r\nimport { ImageMapLayerSettings, ImageSource } from \"@itwin/core-common\";\r\nimport { request, RequestOptions, Response } from \"../../../request/Request\";\r\nimport { IModelApp } from \"../../../IModelApp\";\r\nimport { ScreenViewport } from \"../../../Viewport\";\r\nimport {\r\n MapLayerImageryProvider, MapTile, MapTilingScheme, QuadId,\r\n Tile, WebMercatorTilingScheme,\r\n} from \"../../internal\";\r\n\r\n/** Represents one range of geography and tile zoom levels for a bing data provider\r\n * @internal\r\n */\r\nclass Coverage {\r\n constructor(private _lowerLeftLatitude: number,\r\n private _lowerLeftLongitude: number,\r\n private _upperRightLatitude: number,\r\n private _upperRightLongitude: number,\r\n private _minimumZoomLevel: number,\r\n private _maximumZoomLevel: number) { }\r\n\r\n public overlaps(quadId: QuadId, tilingScheme: MapTilingScheme): boolean {\r\n const range: Range2d = quadId.getLatLongRange(tilingScheme);\r\n if (quadId.level < this._minimumZoomLevel)\r\n return false;\r\n if (quadId.level > this._maximumZoomLevel)\r\n return false;\r\n if (range.low.x > this._upperRightLongitude)\r\n return false;\r\n if (range.low.y > this._upperRightLatitude)\r\n return false;\r\n if (range.high.x < this._lowerLeftLongitude)\r\n return false;\r\n if (range.high.y < this._lowerLeftLatitude)\r\n return false;\r\n\r\n return true;\r\n }\r\n}\r\n\r\n/** Represents the copyright message and an array of coverage data for one of bing's data providers (HERE for example).\r\n * @internal\r\n */\r\nclass BingAttribution {\r\n constructor(public copyrightMessage: string, private _coverages: Coverage[]) { }\r\n\r\n public matchesTile(tile: Tile, tilingScheme: MapTilingScheme): boolean {\r\n const quadId = QuadId.createFromContentId(tile.contentId);\r\n for (const coverage of this._coverages) {\r\n if (coverage.overlaps(quadId, tilingScheme))\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n\r\n// in deployed applications, we can only make https requests, but the Bing Maps metadata request returns templates with \"http:\".\r\n// This function fixes those.\r\nfunction replaceHttpWithHttps(originalUrl: string) {\r\n return originalUrl.startsWith(\"http:\") ? \"https:\".concat(originalUrl.slice(5)) : originalUrl;\r\n}\r\n\r\n/** @internal */\r\nexport class BingMapsImageryLayerProvider extends MapLayerImageryProvider {\r\n private _urlTemplate?: string;\r\n private _urlSubdomains?: string[];\r\n private _zoomMax: number;\r\n private _tileHeight: number;\r\n private _tileWidth: number;\r\n private _attributions?: BingAttribution[]; // array of Bing's data providers.\r\n private _mapTilingScheme: MapTilingScheme;\r\n private _urlBase: string;\r\n\r\n constructor(settings: ImageMapLayerSettings) {\r\n super(settings, true);\r\n this._urlBase = settings.url;\r\n this._zoomMax = 0;\r\n this._tileHeight = this._tileWidth = 0;\r\n this._mapTilingScheme = new WebMercatorTilingScheme();\r\n }\r\n\r\n public get tileWidth(): number { return this._tileWidth; }\r\n public get tileHeight(): number { return this._tileHeight; }\r\n\r\n private tileXYToQuadKey(tileX: number, tileY: number, zoomLevel: number) {\r\n // from C# example in bing documentation https://msdn.microsoft.com/en-us/library/bb259689.aspx\r\n let quadKey: string = \"\";\r\n\r\n // Root tile is not displayable. Returns 0 for _GetMaximumSize(). Should not end up here.\r\n assert(0 !== zoomLevel);\r\n\r\n for (let i: number = zoomLevel; i > 0; i--) {\r\n let digit: number = 0x30; // '0'\r\n const mask: number = 1 << (i - 1);\r\n if ((tileX & mask) !== 0) {\r\n digit++;\r\n }\r\n if ((tileY & mask) !== 0) {\r\n digit++;\r\n digit++;\r\n }\r\n quadKey = quadKey.concat(String.fromCharCode(digit));\r\n }\r\n return quadKey;\r\n }\r\n\r\n // construct the Url from the desired Tile\r\n public async constructUrl(row: number, column: number, zoomLevel: number): Promise<string> {\r\n // From the tile, get a \"quadKey\" the Microsoft way.\r\n const quadKey: string = this.tileXYToQuadKey(column, row, zoomLevel);\r\n const subdomain: string = this._urlSubdomains![(row + column) % this._urlSubdomains!.length];\r\n\r\n // from the template url, construct the tile url.\r\n let url: string = this._urlTemplate!.replace(\"{subdomain}\", subdomain);\r\n url = url.replace(\"{quadkey}\", quadKey);\r\n\r\n return url;\r\n }\r\n\r\n // gets the attributions that match the tile set.\r\n private getMatchingAttributions(tiles: Set<Tile> | undefined): BingAttribution[] {\r\n const matchingAttributions: BingAttribution[] = new Array<BingAttribution>();\r\n if (!this._attributions || !tiles)\r\n return matchingAttributions;\r\n\r\n const unmatchedSet: BingAttribution[] = this._attributions.slice();\r\n for (const tile of tiles) {\r\n if (tile instanceof MapTile)\r\n // compare to the set of Bing attributions that we have not yet matched.\r\n for (let iAttr = 0; iAttr < unmatchedSet.length; iAttr++) {\r\n const attribution = unmatchedSet[iAttr];\r\n if (attribution && attribution.matchesTile(tile, this._mapTilingScheme)) {\r\n matchingAttributions.push(attribution);\r\n delete unmatchedSet[iAttr];\r\n }\r\n }\r\n }\r\n return matchingAttributions;\r\n }\r\n\r\n public override addLogoCards(cards: HTMLTableElement, vp: ScreenViewport): void {\r\n const tiles = IModelApp.tileAdmin.getTilesForUser(vp)?.selected;\r\n const matchingAttributions = this.getMatchingAttributions(tiles);\r\n const copyrights: string[] = [];\r\n for (const match of matchingAttributions)\r\n copyrights.push(match.copyrightMessage);\r\n\r\n let copyrightMsg = \"\";\r\n for (let i = 0; i < copyrights.length; ++i) {\r\n if (i > 0)\r\n copyrightMsg += \"<br>\";\r\n copyrightMsg += copyrights[i];\r\n }\r\n\r\n cards.appendChild(IModelApp.makeLogoCard({ iconSrc: `${IModelApp.publicPath}images/bing.svg`, heading: \"Microsoft Bing\", notice: copyrightMsg }));\r\n }\r\n\r\n // initializes the BingImageryProvider by reading the templateUrl, logo image, and attribution list.\r\n public override async initialize(): Promise<void> {\r\n // get the template url\r\n const bingRequestUrl = this._urlBase.replace(\"{bingKey}\", this._settings.accessKey ? this._settings.accessKey.value : \"\");\r\n const requestOptions: RequestOptions = { method: \"GET\" };\r\n\r\n try {\r\n const response: Response = await request(bingRequestUrl, requestOptions);\r\n const bingResponseProps: any = response.body;\r\n\r\n const thisResourceSetProps = bingResponseProps.resourceSets[0];\r\n const thisResourceProps = thisResourceSetProps.resources[0];\r\n this._zoomMax = thisResourceProps.zoomMax;\r\n this._tileHeight = thisResourceProps.imageHeight;\r\n this._tileWidth = thisResourceProps.imageWidth;\r\n this._urlTemplate = replaceHttpWithHttps(thisResourceProps.imageUrl.replace(\"{culture}\", \"en-US\")); // NEEDSWORK - get locale from somewhere.\r\n this._urlSubdomains = thisResourceProps.imageUrlSubdomains;\r\n // read the list of Bing's data suppliers and the range of data they provide. Used in calculation of copyright message.\r\n this.readAttributions(thisResourceProps.imageryProviders);\r\n\r\n // Bing sometimes provides tiles that have nothing but a camera icon in the middle of them when you ask\r\n // for tiles at zoom levels where they don't have data. Their application stops you from zooming in when that's the\r\n // case, but we can't stop - the user might want to look at design data a closer zoom. So we intentionally load such\r\n // a tile, and then compare other tiles to it, rejecting them if they match.\r\n this.loadTile(0, 0, this._zoomMax - 1).then((tileData: ImageSource | undefined) => { // eslint-disable-line @typescript-eslint/no-floating-promises\r\n if (tileData !== undefined) this._missingTileData = tileData.data as Uint8Array;\r\n });\r\n } catch (error) {\r\n throw new BentleyError(IModelStatus.BadModel, \"Error in Bing Server communications\");\r\n }\r\n }\r\n\r\n // reads the list of Bing data providers and the map range for which they each provide data.\r\n private readAttributions(attributionProps: any) {\r\n for (const thisAttributionProps of attributionProps) {\r\n const copyrightMessage: string = thisAttributionProps.attribution;\r\n const coverages: Coverage[] = new Array<Coverage>();\r\n for (const thisCoverageProps of thisAttributionProps.coverageAreas) {\r\n const thisCoverage = new Coverage(thisCoverageProps.bbox[0], thisCoverageProps.bbox[1], thisCoverageProps.bbox[2], thisCoverageProps.bbox[3],\r\n thisCoverageProps.zoomMin, thisCoverageProps.zoomMax);\r\n coverages.push(thisCoverage);\r\n }\r\n const thisAttribution: BingAttribution = new BingAttribution(copyrightMessage, coverages);\r\n if (!this._attributions)\r\n this._attributions = new Array<BingAttribution>();\r\n this._attributions.push(thisAttribution);\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -16,7 +16,7 @@ export declare class MapBoxLayerImageryProvider extends MapLayerImageryProvider
|
|
|
16
16
|
get minimumZoomLevel(): number;
|
|
17
17
|
get maximumZoomLevel(): number;
|
|
18
18
|
constructUrl(row: number, column: number, zoomLevel: number): Promise<string>;
|
|
19
|
-
|
|
19
|
+
addLogoCards(cards: HTMLTableElement): void;
|
|
20
20
|
initialize(): Promise<void>;
|
|
21
21
|
}
|
|
22
22
|
//# sourceMappingURL=MapBoxLayerImageryProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MapBoxLayerImageryProvider.d.ts","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/MapBoxLayerImageryProvider.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD;;GAEG;AACH,qBAAa,0BAA2B,SAAQ,uBAAuB;IACrE,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,EAAE,qBAAqB;IAM3C,IAAW,SAAS,IAAI,MAAM,CAAgB;IAC9C,IAAW,UAAU,IAAI,MAAM,CAAgB;IAC/C,IAAoB,gBAAgB,IAAI,MAAM,CAA0B;IACxE,IAAoB,gBAAgB,IAAI,MAAM,CAA0B;IAG3D,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAc1E,
|
|
1
|
+
{"version":3,"file":"MapBoxLayerImageryProvider.d.ts","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/MapBoxLayerImageryProvider.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD;;GAEG;AACH,qBAAa,0BAA2B,SAAQ,uBAAuB;IACrE,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,EAAE,qBAAqB;IAM3C,IAAW,SAAS,IAAI,MAAM,CAAgB;IAC9C,IAAW,UAAU,IAAI,MAAM,CAAgB;IAC/C,IAAoB,gBAAgB,IAAI,MAAM,CAA0B;IACxE,IAAoB,gBAAgB,IAAI,MAAM,CAA0B;IAG3D,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAc1E,YAAY,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAQrC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAClD"}
|
|
@@ -36,8 +36,11 @@ class MapBoxLayerImageryProvider extends internal_1.MapLayerImageryProvider {
|
|
|
36
36
|
url = url.concat(`?${this._settings.accessKey.key}=${this._settings.accessKey.value}`);
|
|
37
37
|
return url;
|
|
38
38
|
}
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
addLogoCards(cards) {
|
|
40
|
+
if (!cards.dataset.mapboxLogoCard) {
|
|
41
|
+
cards.dataset.mapboxLogoCard = "true";
|
|
42
|
+
cards.appendChild(IModelApp_1.IModelApp.makeLogoCard({ heading: "Mapbox", notice: IModelApp_1.IModelApp.localization.getLocalizedString("iModelJs:BackgroundMap.MapBoxCopyright") }));
|
|
43
|
+
}
|
|
41
44
|
}
|
|
42
45
|
// no initialization needed for MapBoxImageryProvider.
|
|
43
46
|
async initialize() { }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MapBoxLayerImageryProvider.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/MapBoxLayerImageryProvider.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAGH,kDAA+C;AAC/C,6CAAyD;AAEzD;;GAEG;AACH,MAAa,0BAA2B,SAAQ,kCAAuB;IAKrE,YAAY,QAA+B;QACzC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACxC,CAAC;IAED,IAAW,SAAS,KAAa,OAAO,GAAG,CAAC,CAAC,CAAC;IAC9C,IAAW,UAAU,KAAa,OAAO,GAAG,CAAC,CAAC,CAAC;IAC/C,IAAoB,gBAAgB,KAAa,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxE,IAAoB,gBAAgB,KAAa,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAExE,0CAA0C;IACnC,KAAK,CAAC,YAAY,CAAC,GAAW,EAAE,MAAc,EAAE,SAAiB;QACtE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;YAC7B,OAAO,EAAE,CAAC;SACX;QAED,iDAAiD;QACjD,2EAA2E;QAC3E,IAAI,GAAG,GAAW,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QAClE,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,QAAQ,EAAE,IAAI,MAAM,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACpF,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;QAEvF,OAAO,GAAG,CAAC;IACb,CAAC;IAEe,OAAO;
|
|
1
|
+
{"version":3,"file":"MapBoxLayerImageryProvider.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/MapBoxLayerImageryProvider.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAGH,kDAA+C;AAC/C,6CAAyD;AAEzD;;GAEG;AACH,MAAa,0BAA2B,SAAQ,kCAAuB;IAKrE,YAAY,QAA+B;QACzC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACxC,CAAC;IAED,IAAW,SAAS,KAAa,OAAO,GAAG,CAAC,CAAC,CAAC;IAC9C,IAAW,UAAU,KAAa,OAAO,GAAG,CAAC,CAAC,CAAC;IAC/C,IAAoB,gBAAgB,KAAa,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxE,IAAoB,gBAAgB,KAAa,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAExE,0CAA0C;IACnC,KAAK,CAAC,YAAY,CAAC,GAAW,EAAE,MAAc,EAAE,SAAiB;QACtE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;YAC7B,OAAO,EAAE,CAAC;SACX;QAED,iDAAiD;QACjD,2EAA2E;QAC3E,IAAI,GAAG,GAAW,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QAClE,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,QAAQ,EAAE,IAAI,MAAM,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACpF,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;QAEvF,OAAO,GAAG,CAAC;IACb,CAAC;IAEe,YAAY,CAAC,KAAuB;QAClD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE;YACjC,KAAK,CAAC,OAAO,CAAC,cAAc,GAAG,MAAM,CAAC;YACtC,KAAK,CAAC,WAAW,CAAC,qBAAS,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,qBAAS,CAAC,YAAY,CAAC,kBAAkB,CAAC,wCAAwC,CAAC,EAAE,CAAC,CAAC,CAAC;SAC/J;IACH,CAAC;IAED,sDAAsD;IACtC,KAAK,CAAC,UAAU,KAAoB,CAAC;CACtD;AAxCD,gEAwCC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport { ImageMapLayerSettings } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../../../IModelApp\";\r\nimport { MapLayerImageryProvider } from \"../../internal\";\r\n\r\n/** Base class imagery map layer formats. Subclasses should override formatId and [[MapLayerFormat.createImageryProvider]].\r\n * @internal\r\n */\r\nexport class MapBoxLayerImageryProvider extends MapLayerImageryProvider {\r\n private _zoomMin: number;\r\n private _zoomMax: number;\r\n private _baseUrl: string;\r\n\r\n constructor(settings: ImageMapLayerSettings) {\r\n super(settings, true);\r\n this._baseUrl = settings.url;\r\n this._zoomMin = 1; this._zoomMax = 20;\r\n }\r\n\r\n public get tileWidth(): number { return 256; }\r\n public get tileHeight(): number { return 256; }\r\n public override get minimumZoomLevel(): number { return this._zoomMin; }\r\n public override get maximumZoomLevel(): number { return this._zoomMax; }\r\n\r\n // construct the Url from the desired Tile\r\n public async constructUrl(row: number, column: number, zoomLevel: number): Promise<string> {\r\n if (!this._settings.accessKey) {\r\n return \"\";\r\n }\r\n\r\n // from the template url, construct the tile url.\r\n // format: {baseUrl}/{tileSize}/{level}/{column}/{row}?access_token={token}\r\n let url: string = this._baseUrl.concat(this.tileWidth.toString());\r\n url = url.concat(`/${zoomLevel.toString()}/${column.toString()}/${row.toString()}`);\r\n url = url.concat(`?${this._settings.accessKey.key}=${this._settings.accessKey.value}`);\r\n\r\n return url;\r\n }\r\n\r\n public override addLogoCards(cards: HTMLTableElement): void {\r\n if (!cards.dataset.mapboxLogoCard) {\r\n cards.dataset.mapboxLogoCard = \"true\";\r\n cards.appendChild(IModelApp.makeLogoCard({ heading: \"Mapbox\", notice: IModelApp.localization.getLocalizedString(\"iModelJs:BackgroundMap.MapBoxCopyright\") }));\r\n }\r\n }\r\n\r\n // no initialization needed for MapBoxImageryProvider.\r\n public override async initialize(): Promise<void> { }\r\n}\r\n"]}
|
|
@@ -40,7 +40,7 @@ export declare class ImageryMapTileTree extends RealityTileTree {
|
|
|
40
40
|
private _imageryLoader;
|
|
41
41
|
constructor(params: RealityTileTreeParams, _imageryLoader: ImageryTileLoader);
|
|
42
42
|
get tilingScheme(): MapTilingScheme;
|
|
43
|
-
|
|
43
|
+
addLogoCards(cards: HTMLTableElement, vp: ScreenViewport): void;
|
|
44
44
|
getTileRectangle(quadId: QuadId): MapCartoRectangle;
|
|
45
45
|
get imageryLoader(): ImageryTileLoader;
|
|
46
46
|
get is3d(): boolean;
|
|
@@ -61,7 +61,7 @@ declare class ImageryTileLoader extends RealityTileLoader {
|
|
|
61
61
|
get maxDepth(): number;
|
|
62
62
|
get minDepth(): number;
|
|
63
63
|
get priority(): TileLoadPriority;
|
|
64
|
-
|
|
64
|
+
addLogoCards(cards: HTMLTableElement, vp: ScreenViewport): void;
|
|
65
65
|
get maximumScreenSize(): number;
|
|
66
66
|
get imageryProvider(): MapLayerImageryProvider;
|
|
67
67
|
getToolTip(strings: string[], quadId: QuadId, carto: Cartographic, tree: ImageryMapTileTree): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImageryTileTree.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/ImageryTileTree.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EAAE,YAAY,EAAsC,gBAAgB,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE1I,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EACL,iBAAiB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,eAAe,EAC7K,qBAAqB,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,WAAW,EAAY,kBAAkB,EAAE,aAAa,EAE/I,MAAM,aAAa,CAAC;AAErB,gBAAgB;AAChB,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,cAAc,CAAC,EAAE,aAAa,CAAC;CAChC;AAED,gBAAgB;AAChB,qBAAa,cAAe,SAAQ,WAAW;IAGN,WAAW,EAAE,kBAAkB;IAAS,MAAM,EAAE,MAAM;IAAS,SAAS,EAAE,iBAAiB;IAFlI,OAAO,CAAC,QAAQ,CAAC,CAAgB;IACjC,OAAO,CAAC,kBAAkB,CAAK;gBACnB,MAAM,EAAE,UAAU,EAAS,WAAW,EAAE,kBAAkB,EAAS,MAAM,EAAE,MAAM,EAAS,SAAS,EAAE,iBAAiB;IAGlI,IAAW,OAAO,8BAA4B;IAC9C,IAAW,YAAY,oBAA4C;IACnE,IAAoB,aAAa,YAAsD;IAEvE,UAAU,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAQtD,qBAAqB,CAAC,UAAU,EAAE,cAAc,EAAE,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,kBAAkB;IAwBxJ,gBAAgB;IAGhB,mBAAmB;IAM1B,gBAAgB;IACA,OAAO,IAAI,IAAI;cAOZ,aAAa,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,SAAS,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI;cAwBrG,kBAAkB,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,GAAG,IAAI;IAM3D,UAAU,IAAI,IAAI;IAIlB,eAAe;IAO/B,OAAO,CAAC,cAAc;IAGN,OAAO;CAIxB;AAED,gBAAgB;AAChB,qBAAa,kBAAmB,SAAQ,eAAe;IACV,OAAO,CAAC,cAAc;gBAArD,MAAM,EAAE,qBAAqB,EAAU,cAAc,EAAE,iBAAiB;IAKpF,IAAW,YAAY,IAAI,eAAe,CAA6D;IAChG,
|
|
1
|
+
{"version":3,"file":"ImageryTileTree.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/ImageryTileTree.ts"],"names":[],"mappings":"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"}
|
|
@@ -121,7 +121,9 @@ class ImageryMapTileTree extends internal_1.RealityTileTree {
|
|
|
121
121
|
this._rootTile = new ImageryMapTile(params.rootTile, this, rootQuadId, this.getTileRectangle(rootQuadId));
|
|
122
122
|
}
|
|
123
123
|
get tilingScheme() { return this._imageryLoader.imageryProvider.tilingScheme; }
|
|
124
|
-
|
|
124
|
+
addLogoCards(cards, vp) {
|
|
125
|
+
this._imageryLoader.addLogoCards(cards, vp);
|
|
126
|
+
}
|
|
125
127
|
getTileRectangle(quadId) {
|
|
126
128
|
return this.tilingScheme.tileXYToRectangle(quadId.column, quadId.row, quadId.level);
|
|
127
129
|
}
|
|
@@ -155,7 +157,9 @@ class ImageryTileLoader extends internal_1.RealityTileLoader {
|
|
|
155
157
|
get maxDepth() { return this._imageryProvider.maximumZoomLevel; }
|
|
156
158
|
get minDepth() { return this._imageryProvider.minimumZoomLevel; }
|
|
157
159
|
get priority() { return internal_1.TileLoadPriority.Map; }
|
|
158
|
-
|
|
160
|
+
addLogoCards(cards, vp) {
|
|
161
|
+
this._imageryProvider.addLogoCards(cards, vp);
|
|
162
|
+
}
|
|
159
163
|
get maximumScreenSize() { return this._imageryProvider.maximumScreenSize; }
|
|
160
164
|
get imageryProvider() { return this._imageryProvider; }
|
|
161
165
|
async getToolTip(strings, quadId, carto, tree) { await this._imageryProvider.getToolTip(strings, quadId, carto, tree); }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImageryTileTree.js","sourceRoot":"","sources":["../../../../src/tile/map/ImageryTileTree.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport { assert, compareBooleans, compareNumbers, compareStrings, compareStringsOrUndefined, dispose } from \"@itwin/core-bentley\";\r\nimport { Angle, Range3d, Transform } from \"@itwin/core-geometry\";\r\nimport { Cartographic, ImageMapLayerSettings, ImageSource, MapLayerSettings, RenderTexture, ViewFlagOverrides } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../../IModelApp\";\r\nimport { IModelConnection } from \"../../IModelConnection\";\r\nimport { RenderMemory } from \"../../render/RenderMemory\";\r\nimport { RenderSystem } from \"../../render/RenderSystem\";\r\nimport { ScreenViewport } from \"../../Viewport\";\r\nimport {\r\n MapCartoRectangle, MapLayerFeatureInfo, MapLayerImageryProvider, MapLayerTileTreeReference, MapTile, MapTilingScheme, QuadId, RealityTile, RealityTileLoader, RealityTileTree,\r\n RealityTileTreeParams, Tile, TileContent, TileDrawArgs, TileLoadPriority, TileParams, TileRequest, TileTree, TileTreeLoadStatus, TileTreeOwner,\r\n TileTreeSupplier,\r\n} from \"../internal\";\r\n\r\n/** @internal */\r\nexport interface ImageryTileContent extends TileContent {\r\n imageryTexture?: RenderTexture;\r\n}\r\n\r\n/** @internal */\r\nexport class ImageryMapTile extends RealityTile {\r\n private _texture?: RenderTexture;\r\n private _mapTileUsageCount = 0;\r\n constructor(params: TileParams, public imageryTree: ImageryMapTileTree, public quadId: QuadId, public rectangle: MapCartoRectangle) {\r\n super(params, imageryTree);\r\n }\r\n public get texture() { return this._texture; }\r\n public get tilingScheme() { return this.imageryTree.tilingScheme; }\r\n public override get isDisplayable() { return (this.depth > 1) && super.isDisplayable; }\r\n\r\n public override setContent(content: ImageryTileContent): void {\r\n this._texture = content.imageryTexture; // No dispose - textures may be shared by terrain tiles so let garbage collector dispose them.\r\n if (undefined === content.imageryTexture)\r\n (this.parent! as ImageryMapTile).setLeaf(); // Avoid traversing bing branches after no graphics is found.\r\n\r\n this.setIsReady();\r\n }\r\n\r\n public selectCartoDrapeTiles(drapeTiles: ImageryMapTile[], rectangleToDrape: MapCartoRectangle, drapePixelSize: number, args: TileDrawArgs): TileTreeLoadStatus {\r\n // Base draping overlap on width rather than height so that tiling schemes with multiple root nodes overlay correctly.\r\n if (this.isLeaf || (this.rectangle.xLength() / this.maximumSize) < drapePixelSize || this._anyChildNotFound) {\r\n if (this.isDisplayable && !this.isNotFound)\r\n drapeTiles.push(this);\r\n return TileTreeLoadStatus.Loaded;\r\n }\r\n\r\n let status = this.loadChildren();\r\n if (TileTreeLoadStatus.Loading === status) {\r\n args.markChildrenLoading();\r\n } else if (TileTreeLoadStatus.Loaded === status) {\r\n if (undefined !== this.children) {\r\n for (const child of this.children) {\r\n const mapChild = child as ImageryMapTile;\r\n if (mapChild.rectangle.intersectsRange(rectangleToDrape))\r\n status = mapChild.selectCartoDrapeTiles(drapeTiles, rectangleToDrape, drapePixelSize, args);\r\n if (TileTreeLoadStatus.Loaded !== status)\r\n break;\r\n }\r\n }\r\n }\r\n return status;\r\n }\r\n public markMapTileUsage() {\r\n this._mapTileUsageCount++;\r\n }\r\n public releaseMapTileUsage() {\r\n assert(!this._texture || this._mapTileUsageCount > 0);\r\n if (this._mapTileUsageCount)\r\n this._mapTileUsageCount--;\r\n }\r\n\r\n /** @internal */\r\n public override setLeaf(): void {\r\n // Don't potentially re-request the children later.\r\n this.disposeChildren();\r\n this._isLeaf = true;\r\n this._childrenLoadStatus = TileTreeLoadStatus.Loaded;\r\n }\r\n\r\n protected override _loadChildren(resolve: (children: Tile[] | undefined) => void, _reject: (error: Error) => void): void {\r\n\r\n const imageryTree = this.imageryTree;\r\n const resolveChildren = (childIds: QuadId[]) => {\r\n const children = new Array<Tile>();\r\n const childrenAreLeaves = (this.depth + 1) === imageryTree.maxDepth;\r\n // If children depth is lower than min LOD, mark them as disabled.\r\n // This is important: if those tiles are requested and the server refuse to serve them,\r\n // they will be marked as not found and their descendant will never be displayed.\r\n const childrenAreDisabled = (this.depth + 1) < imageryTree.minDepth;\r\n\r\n childIds.forEach((quadId) => {\r\n const rectangle = imageryTree.tilingScheme.tileXYToRectangle(quadId.column, quadId.row, quadId.level);\r\n const range = Range3d.createXYZXYZ(rectangle.low.x, rectangle.low.x, 0, rectangle.high.x, rectangle.high.y, 0);\r\n const maximumSize = (childrenAreDisabled ? 0 : imageryTree.imageryLoader.maximumScreenSize);\r\n children.push(new ImageryMapTile({ parent: this, isLeaf: childrenAreLeaves, contentId: quadId.contentId, range, maximumSize }, imageryTree, quadId, rectangle));\r\n });\r\n\r\n resolve(children);\r\n };\r\n\r\n imageryTree.imageryLoader.generateChildIds(this, resolveChildren);\r\n }\r\n\r\n protected override _collectStatistics(stats: RenderMemory.Statistics): void {\r\n super._collectStatistics(stats);\r\n if (this._texture)\r\n stats.addTexture(this._texture.bytesUsed);\r\n }\r\n\r\n public override freeMemory(): void {\r\n // ###TODO MapTiles and ImageryMapTiles share resources and don't currently interact well with TileAdmin.freeMemory(). Opt out for now.\r\n }\r\n\r\n public override disposeContents() {\r\n if (0 === this._mapTileUsageCount) {\r\n super.disposeContents();\r\n this.disposeTexture();\r\n }\r\n }\r\n\r\n private disposeTexture(): void {\r\n this._texture = dispose(this._texture);\r\n }\r\n public override dispose() {\r\n this._mapTileUsageCount = 0;\r\n super.dispose();\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ImageryMapTileTree extends RealityTileTree {\r\n constructor(params: RealityTileTreeParams, private _imageryLoader: ImageryTileLoader) {\r\n super(params);\r\n const rootQuadId = new QuadId(_imageryLoader.imageryProvider.tilingScheme.rootLevel, 0, 0);\r\n this._rootTile = new ImageryMapTile(params.rootTile, this, rootQuadId, this.getTileRectangle(rootQuadId));\r\n }\r\n public get tilingScheme(): MapTilingScheme { return this._imageryLoader.imageryProvider.tilingScheme; }\r\n public getLogo(vp: ScreenViewport): HTMLTableRowElement | undefined { return this._imageryLoader.getLogo(vp); }\r\n public getTileRectangle(quadId: QuadId): MapCartoRectangle {\r\n return this.tilingScheme.tileXYToRectangle(quadId.column, quadId.row, quadId.level);\r\n }\r\n public get imageryLoader(): ImageryTileLoader { return this._imageryLoader; }\r\n public override get is3d(): boolean { assert(false); return false; }\r\n public override get viewFlagOverrides(): ViewFlagOverrides { assert(false); return {}; }\r\n public override get isContentUnbounded(): boolean { assert(false); return true; }\r\n protected override _selectTiles(_args: TileDrawArgs): Tile[] { assert(false); return []; }\r\n public override draw(_args: TileDrawArgs): void { assert(false); }\r\n\r\n private static _scratchDrapeRectangle = new MapCartoRectangle();\r\n private static _drapeIntersectionScale = 1.0 - 1.0E-5;\r\n\r\n public selectCartoDrapeTiles(drapeTiles: ImageryMapTile[], tileToDrape: MapTile, args: TileDrawArgs): TileTreeLoadStatus {\r\n const drapeRectangle = tileToDrape.rectangle.clone(ImageryMapTileTree._scratchDrapeRectangle);\r\n // Base draping overlap on width rather than height so that tiling schemes with multiple root nodes overlay correctly.\r\n const drapePixelSize = 1.05 * tileToDrape.rectangle.xLength() / tileToDrape.maximumSize;\r\n drapeRectangle.scaleAboutCenterInPlace(ImageryMapTileTree._drapeIntersectionScale); // Contract slightly to avoid draping adjacent or slivers.\r\n return (this.rootTile as ImageryMapTile).selectCartoDrapeTiles(drapeTiles, drapeRectangle, drapePixelSize, args);\r\n }\r\n public cartoRectangleFromQuadId(quadId: QuadId): MapCartoRectangle { return this.tilingScheme.tileXYToRectangle(quadId.column, quadId.row, quadId.level); }\r\n}\r\n\r\nclass ImageryTileLoader extends RealityTileLoader {\r\n constructor(private _imageryProvider: MapLayerImageryProvider, private _iModel: IModelConnection) {\r\n super();\r\n }\r\n public override computeTilePriority(tile: Tile): number {\r\n return 25 * (this._imageryProvider.usesCachedTiles ? 2 : 1) - tile.depth; // Always cached first then descending by depth (high resolution/front first)\r\n } // Prioritized fast, cached tiles first.\r\n\r\n public get maxDepth(): number { return this._imageryProvider.maximumZoomLevel; }\r\n public get minDepth(): number { return this._imageryProvider.minimumZoomLevel; }\r\n public get priority(): TileLoadPriority { return TileLoadPriority.Map; }\r\n public getLogo(vp: ScreenViewport): HTMLTableRowElement | undefined { return this._imageryProvider.getLogo(vp); }\r\n public get maximumScreenSize(): number { return this._imageryProvider.maximumScreenSize; }\r\n public get imageryProvider(): MapLayerImageryProvider { return this._imageryProvider; }\r\n public async getToolTip(strings: string[], quadId: QuadId, carto: Cartographic, tree: ImageryMapTileTree): Promise<void> { await this._imageryProvider.getToolTip(strings, quadId, carto, tree); }\r\n\r\n public async getMapFeatureInfo(featureInfos: MapLayerFeatureInfo[], quadId: QuadId, carto: Cartographic, tree: ImageryMapTileTree): Promise<void> {\r\n await this._imageryProvider.getFeatureInfo(featureInfos, quadId, carto, tree);\r\n }\r\n\r\n public generateChildIds(tile: ImageryMapTile, resolveChildren: (childIds: QuadId[]) => void) { return this._imageryProvider.generateChildIds(tile, resolveChildren); }\r\n\r\n /** Load this tile's children, possibly asynchronously. Pass them to `resolve`, or an error to `reject`. */\r\n public async loadChildren(_tile: RealityTile): Promise<Tile[] | undefined> { assert(false); return undefined; }\r\n public async requestTileContent(tile: Tile, _isCanceled: () => boolean): Promise<TileRequest.Response> {\r\n const quadId = QuadId.createFromContentId(tile.contentId);\r\n return this._imageryProvider.loadTile(quadId.row, quadId.column, quadId.level);\r\n }\r\n\r\n public getRequestChannel(_tile: Tile) {\r\n // ###TODO use hostname from url - but so many layers to go through to get that...\r\n return IModelApp.tileAdmin.channels.getForHttp(\"itwinjs-imagery\");\r\n }\r\n\r\n public override async loadTileContent(tile: Tile, data: TileRequest.ResponseData, system: RenderSystem): Promise<ImageryTileContent> {\r\n assert(data instanceof ImageSource);\r\n assert(tile instanceof ImageryMapTile);\r\n const content: ImageryTileContent = {};\r\n const texture = await this.loadTextureImage(data, system);\r\n if (undefined === texture)\r\n return content;\r\n\r\n content.imageryTexture = texture;\r\n return content;\r\n }\r\n\r\n private async loadTextureImage(source: ImageSource, system: RenderSystem): Promise<RenderTexture | undefined> {\r\n try {\r\n return await system.createTextureFromSource({\r\n type: RenderTexture.Type.FilteredTileSection,\r\n source,\r\n });\r\n } catch {\r\n return undefined;\r\n }\r\n }\r\n}\r\n\r\ninterface ImageryMapLayerTreeId {\r\n settings: ImageMapLayerSettings;\r\n}\r\n\r\n/** Supplies a TileTree that can load and draw tiles based on our imagery provider.\r\n * The TileTree is uniquely identified by its imagery type.\r\n */\r\nclass ImageryMapLayerTreeSupplier implements TileTreeSupplier {\r\n /** Return a numeric value indicating how two tree IDs are ordered relative to one another.\r\n * This allows the ID to serve as a lookup key to find the corresponding TileTree.\r\n */\r\n public compareTileTreeIds(lhs: ImageryMapLayerTreeId, rhs: ImageryMapLayerTreeId): number {\r\n let cmp = compareStrings(lhs.settings.url, rhs.settings.url);\r\n if (0 === cmp) {\r\n cmp = compareStringsOrUndefined(lhs.settings.userName, rhs.settings.userName);\r\n if (0 === cmp) {\r\n cmp = compareStringsOrUndefined(lhs.settings.password, rhs.settings.password);\r\n if (0 === cmp) {\r\n cmp = compareBooleans(lhs.settings.transparentBackground, rhs.settings.transparentBackground);\r\n if (0 === cmp) {\r\n cmp = compareNumbers(lhs.settings.subLayers.length, rhs.settings.subLayers.length);\r\n if (0 === cmp) {\r\n for (let i = 0; i < lhs.settings.subLayers.length && 0 === cmp; i++)\r\n cmp = compareBooleans(lhs.settings.subLayers[i].visible, rhs.settings.subLayers[i].visible);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n /** The first time a tree of a particular imagery type is requested, this function creates it. */\r\n public async createTileTree(id: ImageryMapLayerTreeId, iModel: IModelConnection): Promise<TileTree | undefined> {\r\n const imageryProvider = IModelApp.mapLayerFormatRegistry.createImageryProvider(id.settings);\r\n if (undefined === imageryProvider)\r\n return undefined;\r\n\r\n await imageryProvider.initialize();\r\n const modelId = iModel.transientIds.next;\r\n const tilingScheme = imageryProvider.tilingScheme;\r\n const rootLevel = (1 === tilingScheme.numberOfLevelZeroTilesX && 1 === tilingScheme.numberOfLevelZeroTilesY) ? 0 : -1;\r\n const rootTileId = new QuadId(rootLevel, 0, 0).contentId;\r\n const rootRange = Range3d.createXYZXYZ(-Angle.piRadians, -Angle.piOver2Radians, 0, Angle.piRadians, Angle.piOver2Radians, 0);\r\n const rootTileProps = { contentId: rootTileId, range: rootRange, maximumSize: 0 };\r\n const loader = new ImageryTileLoader(imageryProvider, iModel);\r\n const treeProps = { rootTile: rootTileProps, id: modelId, modelId, iModel, location: Transform.createIdentity(), priority: TileLoadPriority.Map, loader, gcsConverterAvailable: false };\r\n return new ImageryMapTileTree(treeProps, loader);\r\n }\r\n}\r\n\r\nconst imageryTreeSupplier = new ImageryMapLayerTreeSupplier();\r\n\r\n/** A reference to one of our tile trees. The specific TileTree drawn may change when the desired imagery type or target iModel changes.\r\n * @internal\r\n */\r\nexport class ImageryMapLayerTreeReference extends MapLayerTileTreeReference {\r\n public constructor(layerSettings: MapLayerSettings, layerIndex: number, iModel: IModelConnection) {\r\n super(layerSettings, layerIndex, iModel);\r\n }\r\n\r\n public override get castsShadows() { return false; }\r\n\r\n /** Return the owner of the TileTree to draw. */\r\n public get treeOwner(): TileTreeOwner {\r\n return this.iModel.tiles.getTileTreeOwner({ settings: this._layerSettings }, imageryTreeSupplier);\r\n }\r\n public override get imageryProvider(): MapLayerImageryProvider | undefined {\r\n const tree = this.treeOwner.load();\r\n if (!tree || !(tree instanceof ImageryMapTileTree))\r\n return undefined;\r\n\r\n return tree.imageryLoader.imageryProvider;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"ImageryTileTree.js","sourceRoot":"","sources":["../../../../src/tile/map/ImageryTileTree.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport { assert, compareBooleans, compareNumbers, compareStrings, compareStringsOrUndefined, dispose } from \"@itwin/core-bentley\";\r\nimport { Angle, Range3d, Transform } from \"@itwin/core-geometry\";\r\nimport { Cartographic, ImageMapLayerSettings, ImageSource, MapLayerSettings, RenderTexture, ViewFlagOverrides } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../../IModelApp\";\r\nimport { IModelConnection } from \"../../IModelConnection\";\r\nimport { RenderMemory } from \"../../render/RenderMemory\";\r\nimport { RenderSystem } from \"../../render/RenderSystem\";\r\nimport { ScreenViewport } from \"../../Viewport\";\r\nimport {\r\n MapCartoRectangle, MapLayerFeatureInfo, MapLayerImageryProvider, MapLayerTileTreeReference, MapTile, MapTilingScheme, QuadId, RealityTile, RealityTileLoader, RealityTileTree,\r\n RealityTileTreeParams, Tile, TileContent, TileDrawArgs, TileLoadPriority, TileParams, TileRequest, TileTree, TileTreeLoadStatus, TileTreeOwner,\r\n TileTreeSupplier,\r\n} from \"../internal\";\r\n\r\n/** @internal */\r\nexport interface ImageryTileContent extends TileContent {\r\n imageryTexture?: RenderTexture;\r\n}\r\n\r\n/** @internal */\r\nexport class ImageryMapTile extends RealityTile {\r\n private _texture?: RenderTexture;\r\n private _mapTileUsageCount = 0;\r\n constructor(params: TileParams, public imageryTree: ImageryMapTileTree, public quadId: QuadId, public rectangle: MapCartoRectangle) {\r\n super(params, imageryTree);\r\n }\r\n public get texture() { return this._texture; }\r\n public get tilingScheme() { return this.imageryTree.tilingScheme; }\r\n public override get isDisplayable() { return (this.depth > 1) && super.isDisplayable; }\r\n\r\n public override setContent(content: ImageryTileContent): void {\r\n this._texture = content.imageryTexture; // No dispose - textures may be shared by terrain tiles so let garbage collector dispose them.\r\n if (undefined === content.imageryTexture)\r\n (this.parent! as ImageryMapTile).setLeaf(); // Avoid traversing bing branches after no graphics is found.\r\n\r\n this.setIsReady();\r\n }\r\n\r\n public selectCartoDrapeTiles(drapeTiles: ImageryMapTile[], rectangleToDrape: MapCartoRectangle, drapePixelSize: number, args: TileDrawArgs): TileTreeLoadStatus {\r\n // Base draping overlap on width rather than height so that tiling schemes with multiple root nodes overlay correctly.\r\n if (this.isLeaf || (this.rectangle.xLength() / this.maximumSize) < drapePixelSize || this._anyChildNotFound) {\r\n if (this.isDisplayable && !this.isNotFound)\r\n drapeTiles.push(this);\r\n return TileTreeLoadStatus.Loaded;\r\n }\r\n\r\n let status = this.loadChildren();\r\n if (TileTreeLoadStatus.Loading === status) {\r\n args.markChildrenLoading();\r\n } else if (TileTreeLoadStatus.Loaded === status) {\r\n if (undefined !== this.children) {\r\n for (const child of this.children) {\r\n const mapChild = child as ImageryMapTile;\r\n if (mapChild.rectangle.intersectsRange(rectangleToDrape))\r\n status = mapChild.selectCartoDrapeTiles(drapeTiles, rectangleToDrape, drapePixelSize, args);\r\n if (TileTreeLoadStatus.Loaded !== status)\r\n break;\r\n }\r\n }\r\n }\r\n return status;\r\n }\r\n public markMapTileUsage() {\r\n this._mapTileUsageCount++;\r\n }\r\n public releaseMapTileUsage() {\r\n assert(!this._texture || this._mapTileUsageCount > 0);\r\n if (this._mapTileUsageCount)\r\n this._mapTileUsageCount--;\r\n }\r\n\r\n /** @internal */\r\n public override setLeaf(): void {\r\n // Don't potentially re-request the children later.\r\n this.disposeChildren();\r\n this._isLeaf = true;\r\n this._childrenLoadStatus = TileTreeLoadStatus.Loaded;\r\n }\r\n\r\n protected override _loadChildren(resolve: (children: Tile[] | undefined) => void, _reject: (error: Error) => void): void {\r\n\r\n const imageryTree = this.imageryTree;\r\n const resolveChildren = (childIds: QuadId[]) => {\r\n const children = new Array<Tile>();\r\n const childrenAreLeaves = (this.depth + 1) === imageryTree.maxDepth;\r\n // If children depth is lower than min LOD, mark them as disabled.\r\n // This is important: if those tiles are requested and the server refuse to serve them,\r\n // they will be marked as not found and their descendant will never be displayed.\r\n const childrenAreDisabled = (this.depth + 1) < imageryTree.minDepth;\r\n\r\n childIds.forEach((quadId) => {\r\n const rectangle = imageryTree.tilingScheme.tileXYToRectangle(quadId.column, quadId.row, quadId.level);\r\n const range = Range3d.createXYZXYZ(rectangle.low.x, rectangle.low.x, 0, rectangle.high.x, rectangle.high.y, 0);\r\n const maximumSize = (childrenAreDisabled ? 0 : imageryTree.imageryLoader.maximumScreenSize);\r\n children.push(new ImageryMapTile({ parent: this, isLeaf: childrenAreLeaves, contentId: quadId.contentId, range, maximumSize }, imageryTree, quadId, rectangle));\r\n });\r\n\r\n resolve(children);\r\n };\r\n\r\n imageryTree.imageryLoader.generateChildIds(this, resolveChildren);\r\n }\r\n\r\n protected override _collectStatistics(stats: RenderMemory.Statistics): void {\r\n super._collectStatistics(stats);\r\n if (this._texture)\r\n stats.addTexture(this._texture.bytesUsed);\r\n }\r\n\r\n public override freeMemory(): void {\r\n // ###TODO MapTiles and ImageryMapTiles share resources and don't currently interact well with TileAdmin.freeMemory(). Opt out for now.\r\n }\r\n\r\n public override disposeContents() {\r\n if (0 === this._mapTileUsageCount) {\r\n super.disposeContents();\r\n this.disposeTexture();\r\n }\r\n }\r\n\r\n private disposeTexture(): void {\r\n this._texture = dispose(this._texture);\r\n }\r\n public override dispose() {\r\n this._mapTileUsageCount = 0;\r\n super.dispose();\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ImageryMapTileTree extends RealityTileTree {\r\n constructor(params: RealityTileTreeParams, private _imageryLoader: ImageryTileLoader) {\r\n super(params);\r\n const rootQuadId = new QuadId(_imageryLoader.imageryProvider.tilingScheme.rootLevel, 0, 0);\r\n this._rootTile = new ImageryMapTile(params.rootTile, this, rootQuadId, this.getTileRectangle(rootQuadId));\r\n }\r\n public get tilingScheme(): MapTilingScheme { return this._imageryLoader.imageryProvider.tilingScheme; }\r\n public addLogoCards(cards: HTMLTableElement, vp: ScreenViewport): void {\r\n this._imageryLoader.addLogoCards(cards, vp);\r\n }\r\n\r\n public getTileRectangle(quadId: QuadId): MapCartoRectangle {\r\n return this.tilingScheme.tileXYToRectangle(quadId.column, quadId.row, quadId.level);\r\n }\r\n public get imageryLoader(): ImageryTileLoader { return this._imageryLoader; }\r\n public override get is3d(): boolean { assert(false); return false; }\r\n public override get viewFlagOverrides(): ViewFlagOverrides { assert(false); return {}; }\r\n public override get isContentUnbounded(): boolean { assert(false); return true; }\r\n protected override _selectTiles(_args: TileDrawArgs): Tile[] { assert(false); return []; }\r\n public override draw(_args: TileDrawArgs): void { assert(false); }\r\n\r\n private static _scratchDrapeRectangle = new MapCartoRectangle();\r\n private static _drapeIntersectionScale = 1.0 - 1.0E-5;\r\n\r\n public selectCartoDrapeTiles(drapeTiles: ImageryMapTile[], tileToDrape: MapTile, args: TileDrawArgs): TileTreeLoadStatus {\r\n const drapeRectangle = tileToDrape.rectangle.clone(ImageryMapTileTree._scratchDrapeRectangle);\r\n // Base draping overlap on width rather than height so that tiling schemes with multiple root nodes overlay correctly.\r\n const drapePixelSize = 1.05 * tileToDrape.rectangle.xLength() / tileToDrape.maximumSize;\r\n drapeRectangle.scaleAboutCenterInPlace(ImageryMapTileTree._drapeIntersectionScale); // Contract slightly to avoid draping adjacent or slivers.\r\n return (this.rootTile as ImageryMapTile).selectCartoDrapeTiles(drapeTiles, drapeRectangle, drapePixelSize, args);\r\n }\r\n public cartoRectangleFromQuadId(quadId: QuadId): MapCartoRectangle { return this.tilingScheme.tileXYToRectangle(quadId.column, quadId.row, quadId.level); }\r\n}\r\n\r\nclass ImageryTileLoader extends RealityTileLoader {\r\n constructor(private _imageryProvider: MapLayerImageryProvider, private _iModel: IModelConnection) {\r\n super();\r\n }\r\n public override computeTilePriority(tile: Tile): number {\r\n return 25 * (this._imageryProvider.usesCachedTiles ? 2 : 1) - tile.depth; // Always cached first then descending by depth (high resolution/front first)\r\n } // Prioritized fast, cached tiles first.\r\n\r\n public get maxDepth(): number { return this._imageryProvider.maximumZoomLevel; }\r\n public get minDepth(): number { return this._imageryProvider.minimumZoomLevel; }\r\n public get priority(): TileLoadPriority { return TileLoadPriority.Map; }\r\n public addLogoCards(cards: HTMLTableElement, vp: ScreenViewport): void {\r\n this._imageryProvider.addLogoCards(cards, vp);\r\n }\r\n\r\n public get maximumScreenSize(): number { return this._imageryProvider.maximumScreenSize; }\r\n public get imageryProvider(): MapLayerImageryProvider { return this._imageryProvider; }\r\n public async getToolTip(strings: string[], quadId: QuadId, carto: Cartographic, tree: ImageryMapTileTree): Promise<void> { await this._imageryProvider.getToolTip(strings, quadId, carto, tree); }\r\n\r\n public async getMapFeatureInfo(featureInfos: MapLayerFeatureInfo[], quadId: QuadId, carto: Cartographic, tree: ImageryMapTileTree): Promise<void> {\r\n await this._imageryProvider.getFeatureInfo(featureInfos, quadId, carto, tree);\r\n }\r\n\r\n public generateChildIds(tile: ImageryMapTile, resolveChildren: (childIds: QuadId[]) => void) { return this._imageryProvider.generateChildIds(tile, resolveChildren); }\r\n\r\n /** Load this tile's children, possibly asynchronously. Pass them to `resolve`, or an error to `reject`. */\r\n public async loadChildren(_tile: RealityTile): Promise<Tile[] | undefined> { assert(false); return undefined; }\r\n public async requestTileContent(tile: Tile, _isCanceled: () => boolean): Promise<TileRequest.Response> {\r\n const quadId = QuadId.createFromContentId(tile.contentId);\r\n return this._imageryProvider.loadTile(quadId.row, quadId.column, quadId.level);\r\n }\r\n\r\n public getRequestChannel(_tile: Tile) {\r\n // ###TODO use hostname from url - but so many layers to go through to get that...\r\n return IModelApp.tileAdmin.channels.getForHttp(\"itwinjs-imagery\");\r\n }\r\n\r\n public override async loadTileContent(tile: Tile, data: TileRequest.ResponseData, system: RenderSystem): Promise<ImageryTileContent> {\r\n assert(data instanceof ImageSource);\r\n assert(tile instanceof ImageryMapTile);\r\n const content: ImageryTileContent = {};\r\n const texture = await this.loadTextureImage(data, system);\r\n if (undefined === texture)\r\n return content;\r\n\r\n content.imageryTexture = texture;\r\n return content;\r\n }\r\n\r\n private async loadTextureImage(source: ImageSource, system: RenderSystem): Promise<RenderTexture | undefined> {\r\n try {\r\n return await system.createTextureFromSource({\r\n type: RenderTexture.Type.FilteredTileSection,\r\n source,\r\n });\r\n } catch {\r\n return undefined;\r\n }\r\n }\r\n}\r\n\r\ninterface ImageryMapLayerTreeId {\r\n settings: ImageMapLayerSettings;\r\n}\r\n\r\n/** Supplies a TileTree that can load and draw tiles based on our imagery provider.\r\n * The TileTree is uniquely identified by its imagery type.\r\n */\r\nclass ImageryMapLayerTreeSupplier implements TileTreeSupplier {\r\n /** Return a numeric value indicating how two tree IDs are ordered relative to one another.\r\n * This allows the ID to serve as a lookup key to find the corresponding TileTree.\r\n */\r\n public compareTileTreeIds(lhs: ImageryMapLayerTreeId, rhs: ImageryMapLayerTreeId): number {\r\n let cmp = compareStrings(lhs.settings.url, rhs.settings.url);\r\n if (0 === cmp) {\r\n cmp = compareStringsOrUndefined(lhs.settings.userName, rhs.settings.userName);\r\n if (0 === cmp) {\r\n cmp = compareStringsOrUndefined(lhs.settings.password, rhs.settings.password);\r\n if (0 === cmp) {\r\n cmp = compareBooleans(lhs.settings.transparentBackground, rhs.settings.transparentBackground);\r\n if (0 === cmp) {\r\n cmp = compareNumbers(lhs.settings.subLayers.length, rhs.settings.subLayers.length);\r\n if (0 === cmp) {\r\n for (let i = 0; i < lhs.settings.subLayers.length && 0 === cmp; i++)\r\n cmp = compareBooleans(lhs.settings.subLayers[i].visible, rhs.settings.subLayers[i].visible);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n /** The first time a tree of a particular imagery type is requested, this function creates it. */\r\n public async createTileTree(id: ImageryMapLayerTreeId, iModel: IModelConnection): Promise<TileTree | undefined> {\r\n const imageryProvider = IModelApp.mapLayerFormatRegistry.createImageryProvider(id.settings);\r\n if (undefined === imageryProvider)\r\n return undefined;\r\n\r\n await imageryProvider.initialize();\r\n const modelId = iModel.transientIds.next;\r\n const tilingScheme = imageryProvider.tilingScheme;\r\n const rootLevel = (1 === tilingScheme.numberOfLevelZeroTilesX && 1 === tilingScheme.numberOfLevelZeroTilesY) ? 0 : -1;\r\n const rootTileId = new QuadId(rootLevel, 0, 0).contentId;\r\n const rootRange = Range3d.createXYZXYZ(-Angle.piRadians, -Angle.piOver2Radians, 0, Angle.piRadians, Angle.piOver2Radians, 0);\r\n const rootTileProps = { contentId: rootTileId, range: rootRange, maximumSize: 0 };\r\n const loader = new ImageryTileLoader(imageryProvider, iModel);\r\n const treeProps = { rootTile: rootTileProps, id: modelId, modelId, iModel, location: Transform.createIdentity(), priority: TileLoadPriority.Map, loader, gcsConverterAvailable: false };\r\n return new ImageryMapTileTree(treeProps, loader);\r\n }\r\n}\r\n\r\nconst imageryTreeSupplier = new ImageryMapLayerTreeSupplier();\r\n\r\n/** A reference to one of our tile trees. The specific TileTree drawn may change when the desired imagery type or target iModel changes.\r\n * @internal\r\n */\r\nexport class ImageryMapLayerTreeReference extends MapLayerTileTreeReference {\r\n public constructor(layerSettings: MapLayerSettings, layerIndex: number, iModel: IModelConnection) {\r\n super(layerSettings, layerIndex, iModel);\r\n }\r\n\r\n public override get castsShadows() { return false; }\r\n\r\n /** Return the owner of the TileTree to draw. */\r\n public get treeOwner(): TileTreeOwner {\r\n return this.iModel.tiles.getTileTreeOwner({ settings: this._layerSettings }, imageryTreeSupplier);\r\n }\r\n public override get imageryProvider(): MapLayerImageryProvider | undefined {\r\n const tree = this.treeOwner.load();\r\n if (!tree || !(tree instanceof ImageryMapTileTree))\r\n return undefined;\r\n\r\n return tree.imageryLoader.imageryProvider;\r\n }\r\n}\r\n"]}
|
|
@@ -35,7 +35,7 @@ export declare abstract class MapLayerImageryProvider {
|
|
|
35
35
|
initialize(): Promise<void>;
|
|
36
36
|
abstract constructUrl(row: number, column: number, zoomLevel: number): Promise<string>;
|
|
37
37
|
get tilingScheme(): MapTilingScheme;
|
|
38
|
-
|
|
38
|
+
addLogoCards(_cards: HTMLTableElement, _viewport: ScreenViewport): void;
|
|
39
39
|
protected _missingTileData?: Uint8Array;
|
|
40
40
|
get transparentBackgroundString(): string;
|
|
41
41
|
protected _areChildrenAvailable(_tile: ImageryMapTile): Promise<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MapLayerImageryProvider.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerImageryProvider.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,WAAW,EAAqB,MAAM,oBAAoB,CAAC;AAGzG,OAAO,EAAoB,uBAAuB,EAAkB,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5G,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAA0B,cAAc,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,EAA2B,MAAM,aAAa,CAAC;AAMnL,gBAAgB;AAChB,oBAAY,6BAA6B;IACvC,KAAK,IAAA;IACL,WAAW,IAAA;CACZ;AAED;;GAEG;AACH,8BAAsB,uBAAuB;IAgB/B,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,qBAAqB;IAAE,SAAS,CAAC,gBAAgB,EAAE,OAAO;IAfpG,SAAS,CAAC,2BAA2B,UAAS;IACvC,MAAM,EAAE,6BAA6B,CAAuC;IACnF,SAAgB,eAAe,qBAA0B,uBAAuB,KAAK,IAAI,EAAI;IAC7F,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAiC;IACvE,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAgC;IAExE,IAAW,QAAQ,IAAI,MAAM,CAAqE;IAClG,IAAW,iBAAiB,WAAgC;IAC5D,IAAW,gBAAgB,IAAI,MAAM,CAAc;IACnD,IAAW,gBAAgB,IAAI,MAAM,CAAe;IACpD,IAAW,eAAe,YAAoC;IAC9D,IAAW,uBAAuB,IAAI,OAAO,CAAkB;IAC/D,IAAW,yBAAyB,YAAmB;IAChD,UAAU,CAAC,EAAE,iBAAiB,CAAC;IACtC,SAAS,KAAK,mBAAmB,YAAmB;gBACrB,SAAS,EAAE,qBAAqB,EAAY,gBAAgB,EAAE,OAAO;IAKvF,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;aAKxB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC7F,IAAW,YAAY,IAAI,eAAe,CAAwG;IAC3I,
|
|
1
|
+
{"version":3,"file":"MapLayerImageryProvider.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerImageryProvider.ts"],"names":[],"mappings":"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"}
|