@itwin/core-frontend 3.1.0-dev.33 → 3.1.0-dev.34
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/lib/cjs/CategorySelectorState.js +1 -1
- package/lib/cjs/CategorySelectorState.js.map +1 -1
- package/lib/cjs/Viewport.d.ts +3 -1
- package/lib/cjs/Viewport.d.ts.map +1 -1
- package/lib/cjs/Viewport.js +23 -1
- package/lib/cjs/Viewport.js.map +1 -1
- package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
- package/lib/cjs/quantity-formatting/QuantityFormatter.js +11 -2
- package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
- package/lib/cjs/tile/TileTreeReference.d.ts +5 -1
- package/lib/cjs/tile/TileTreeReference.d.ts.map +1 -1
- package/lib/cjs/tile/TileTreeReference.js +4 -0
- package/lib/cjs/tile/TileTreeReference.js.map +1 -1
- package/lib/cjs/tile/internal.d.ts +1 -0
- package/lib/cjs/tile/internal.d.ts.map +1 -1
- package/lib/cjs/tile/internal.js +1 -0
- package/lib/cjs/tile/internal.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +3 -1
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +44 -11
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryTileTree.d.ts +2 -1
- package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryTileTree.js +3 -0
- package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
- package/lib/cjs/tile/map/MapFeatureInfo.d.ts +26 -0
- package/lib/cjs/tile/map/MapFeatureInfo.d.ts.map +1 -0
- package/lib/cjs/tile/map/MapFeatureInfo.js +19 -0
- package/lib/cjs/tile/map/MapFeatureInfo.js.map +1 -0
- package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +2 -1
- package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryProvider.js +4 -0
- package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/MapTileTree.d.ts +3 -1
- package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapTileTree.js +67 -10
- package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
- package/lib/esm/CategorySelectorState.js +1 -1
- package/lib/esm/CategorySelectorState.js.map +1 -1
- package/lib/esm/Viewport.d.ts +3 -1
- package/lib/esm/Viewport.d.ts.map +1 -1
- package/lib/esm/Viewport.js +23 -1
- package/lib/esm/Viewport.js.map +1 -1
- package/lib/esm/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
- package/lib/esm/quantity-formatting/QuantityFormatter.js +12 -3
- package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
- package/lib/esm/tile/TileTreeReference.d.ts +5 -1
- package/lib/esm/tile/TileTreeReference.d.ts.map +1 -1
- package/lib/esm/tile/TileTreeReference.js +4 -0
- package/lib/esm/tile/TileTreeReference.js.map +1 -1
- package/lib/esm/tile/internal.d.ts +1 -0
- package/lib/esm/tile/internal.d.ts.map +1 -1
- package/lib/esm/tile/internal.js +1 -0
- package/lib/esm/tile/internal.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +3 -1
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +45 -12
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryTileTree.d.ts +2 -1
- package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryTileTree.js +3 -0
- package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
- package/lib/esm/tile/map/MapFeatureInfo.d.ts +26 -0
- package/lib/esm/tile/map/MapFeatureInfo.d.ts.map +1 -0
- package/lib/esm/tile/map/MapFeatureInfo.js +15 -0
- package/lib/esm/tile/map/MapFeatureInfo.js.map +1 -0
- package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +2 -1
- package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryProvider.js +4 -0
- package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/MapTileTree.d.ts +3 -1
- package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
- package/lib/esm/tile/map/MapTileTree.js +67 -10
- package/lib/esm/tile/map/MapTileTree.js.map +1 -1
- package/package.json +20 -20
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/** @packageDocumentation
|
|
2
|
+
* @module MapLayers
|
|
3
|
+
*/
|
|
4
|
+
import { PropertyDescription, PropertyRecord, PropertyValue } from "@itwin/appui-abstract";
|
|
5
|
+
import { Cartographic } from "@itwin/core-common";
|
|
6
|
+
/** @alpha */
|
|
7
|
+
export declare class MapFeatureInfoRecord extends PropertyRecord {
|
|
8
|
+
constructor(value: PropertyValue, property: PropertyDescription);
|
|
9
|
+
}
|
|
10
|
+
/** @alpha */
|
|
11
|
+
export interface MapFeatureInfo {
|
|
12
|
+
layerInfo?: MapLayerFeatureInfo[];
|
|
13
|
+
hitPoint?: Cartographic;
|
|
14
|
+
}
|
|
15
|
+
/** @alpha */
|
|
16
|
+
export interface MapLayerFeatureInfo {
|
|
17
|
+
layerName: string;
|
|
18
|
+
info?: MapSubLayerFeatureInfo[] | HTMLElement;
|
|
19
|
+
}
|
|
20
|
+
/** @alpha */
|
|
21
|
+
export interface MapSubLayerFeatureInfo {
|
|
22
|
+
subLayerName: string;
|
|
23
|
+
displayFieldName?: string;
|
|
24
|
+
records?: MapFeatureInfoRecord[];
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=MapFeatureInfo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MapFeatureInfo.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/MapFeatureInfo.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3F,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,aAAa;AACb,qBAAa,oBAAqB,SAAQ,cAAc;gBACnC,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,mBAAmB;CAGvE;AAED,aAAa;AACb,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAClC,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAED,aAAa;AACb,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,sBAAsB,EAAE,GAAG,WAAW,CAAC;CAC/C;AAED,aAAa;AACb,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,oBAAoB,EAAE,CAAC;CAClC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
/** @packageDocumentation
|
|
6
|
+
* @module MapLayers
|
|
7
|
+
*/
|
|
8
|
+
import { PropertyRecord } from "@itwin/appui-abstract";
|
|
9
|
+
/** @alpha */
|
|
10
|
+
export class MapFeatureInfoRecord extends PropertyRecord {
|
|
11
|
+
constructor(value, property) {
|
|
12
|
+
super(value, property);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=MapFeatureInfo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MapFeatureInfo.js","sourceRoot":"","sources":["../../../../src/tile/map/MapFeatureInfo.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAuB,cAAc,EAAiB,MAAM,uBAAuB,CAAC;AAE3F,aAAa;AACb,MAAM,OAAO,oBAAqB,SAAQ,cAAc;IACtD,YAAmB,KAAoB,EAAE,QAA6B;QACpE,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACzB,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module MapLayers\r\n */\r\n\r\nimport { PropertyDescription, PropertyRecord, PropertyValue } from \"@itwin/appui-abstract\";\r\nimport { Cartographic } from \"@itwin/core-common\";\r\n/** @alpha */\r\nexport class MapFeatureInfoRecord extends PropertyRecord {\r\n public constructor(value: PropertyValue, property: PropertyDescription) {\r\n super(value, property);\r\n }\r\n}\r\n\r\n/** @alpha */\r\nexport interface MapFeatureInfo {\r\n layerInfo?: MapLayerFeatureInfo[];\r\n hitPoint?: Cartographic;\r\n}\r\n\r\n/** @alpha */\r\nexport interface MapLayerFeatureInfo {\r\n layerName: string;\r\n info?: MapSubLayerFeatureInfo[] | HTMLElement;\r\n}\r\n\r\n/** @alpha */\r\nexport interface MapSubLayerFeatureInfo {\r\n subLayerName: string;\r\n displayFieldName?: string;\r\n records?: MapFeatureInfoRecord[];\r\n}\r\n"]}
|
|
@@ -5,7 +5,7 @@ import { BeEvent } from "@itwin/core-bentley";
|
|
|
5
5
|
import { Cartographic, ImageMapLayerSettings, ImageSource } from "@itwin/core-common";
|
|
6
6
|
import { RequestBasicCredentials, Response } from "../../request/Request";
|
|
7
7
|
import { ScreenViewport } from "../../Viewport";
|
|
8
|
-
import { ImageryMapTile, ImageryMapTileTree, MapCartoRectangle, MapTilingScheme, QuadId } from "../internal";
|
|
8
|
+
import { ImageryMapTile, ImageryMapTileTree, MapCartoRectangle, MapLayerFeatureInfo, MapTilingScheme, QuadId } from "../internal";
|
|
9
9
|
/** @internal */
|
|
10
10
|
export declare enum MapLayerImageryProviderStatus {
|
|
11
11
|
Valid = 0,
|
|
@@ -43,6 +43,7 @@ export declare abstract class MapLayerImageryProvider {
|
|
|
43
43
|
protected _generateChildIds(tile: ImageryMapTile, resolveChildren: (childIds: QuadId[]) => void): void;
|
|
44
44
|
generateChildIds(tile: ImageryMapTile, resolveChildren: (childIds: QuadId[]) => void): void;
|
|
45
45
|
getToolTip(strings: string[], quadId: QuadId, _carto: Cartographic, tree: ImageryMapTileTree): Promise<void>;
|
|
46
|
+
getFeatureInfo(featureInfos: MapLayerFeatureInfo[], _quadId: QuadId, _carto: Cartographic, _tree: ImageryMapTileTree): Promise<void>;
|
|
46
47
|
protected getRequestAuthorization(): RequestBasicCredentials | undefined;
|
|
47
48
|
protected getImageFromTileResponse(tileResponse: Response, zoomLevel: number): ImageSource | undefined;
|
|
48
49
|
setStatus(status: MapLayerImageryProviderStatus): void;
|
|
@@ -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,eAAe,EAAE,MAAM,EAA2B,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"MapLayerImageryProvider.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerImageryProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -72,6 +72,10 @@ export class MapLayerImageryProvider {
|
|
|
72
72
|
strings.push(`QuadId: ${quadId.debugString}, Lat: ${range.low.x} - ${range.high.x} Long: ${range.low.y} - ${range.high.y}`);
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
|
+
async getFeatureInfo(featureInfos, _quadId, _carto, _tree) {
|
|
76
|
+
// default implementation; simply return an empty feature info
|
|
77
|
+
featureInfos.push({ layerName: this._settings.name });
|
|
78
|
+
}
|
|
75
79
|
getRequestAuthorization() {
|
|
76
80
|
return (this._settings.userName && this._settings.password) ? { user: this._settings.userName, password: this._settings.password } : undefined;
|
|
77
81
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MapLayerImageryProvider.js","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerImageryProvider.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module MapLayers\r\n */\r\n\r\nimport { BeEvent } from \"@itwin/core-bentley\";\r\nimport { Cartographic, ImageMapLayerSettings, ImageSource, ImageSourceFormat } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../../IModelApp\";\r\nimport { NotifyMessageDetails, OutputMessagePriority } from \"../../NotificationManager\";\r\nimport { getJson, request, RequestBasicCredentials, RequestOptions, Response } from \"../../request/Request\";\r\nimport { ScreenViewport } from \"../../Viewport\";\r\nimport { GeographicTilingScheme, ImageryMapTile, ImageryMapTileTree, MapCartoRectangle, MapTilingScheme, QuadId, WebMercatorTilingScheme } from \"../internal\";\r\n\r\nconst tileImageSize = 256, untiledImageSize = 256;\r\n\r\nconst doDebugToolTips = false;\r\n\r\n/** @internal */\r\nexport enum MapLayerImageryProviderStatus {\r\n Valid,\r\n RequireAuth,\r\n}\r\n\r\n/** Base class for map layer imagery providers.\r\n * @internal\r\n */\r\nexport abstract class MapLayerImageryProvider {\r\n protected _hasSuccessfullyFetchedTile = false;\r\n public status: MapLayerImageryProviderStatus = MapLayerImageryProviderStatus.Valid;\r\n public readonly onStatusChanged = new BeEvent<(provider: MapLayerImageryProvider) => void>();\r\n private readonly _mercatorTilingScheme = new WebMercatorTilingScheme();\r\n private readonly _geographicTilingScheme = new GeographicTilingScheme();\r\n\r\n public get tileSize(): number { return this._usesCachedTiles ? tileImageSize : untiledImageSize; }\r\n public get maximumScreenSize() { return 2 * this.tileSize; }\r\n public get minimumZoomLevel(): number { return 0; }\r\n public get maximumZoomLevel(): number { return 22; }\r\n public get usesCachedTiles() { return this._usesCachedTiles; }\r\n public get mutualExclusiveSubLayer(): boolean { return false; }\r\n public get useGeographicTilingScheme() { return false;}\r\n public cartoRange?: MapCartoRectangle;\r\n protected get _filterByCartoRange() { return true; }\r\n constructor(protected readonly _settings: ImageMapLayerSettings, protected _usesCachedTiles: boolean) {\r\n this._mercatorTilingScheme = new WebMercatorTilingScheme();\r\n this._geographicTilingScheme = new GeographicTilingScheme(2, 1, true);\r\n }\r\n\r\n public async initialize(): Promise<void> {\r\n this.loadTile(0, 0, 22).then((tileData: ImageSource | undefined) => { // eslint-disable-line @typescript-eslint/no-floating-promises\r\n if (tileData !== undefined) this._missingTileData = tileData.data as Uint8Array;\r\n });\r\n }\r\n public abstract constructUrl(row: number, column: number, zoomLevel: number): Promise<string>;\r\n public get tilingScheme(): MapTilingScheme { return this.useGeographicTilingScheme ? this._geographicTilingScheme : this._mercatorTilingScheme; }\r\n public getLogo(_viewport: ScreenViewport): HTMLTableRowElement | undefined { return undefined; }\r\n protected _missingTileData?: Uint8Array;\r\n public get transparentBackgroundString(): string { return this._settings.transparentBackground ? \"true\" : \"false\"; }\r\n\r\n protected async _areChildrenAvailable(_tile: ImageryMapTile): Promise<boolean> { return true; }\r\n public getPotentialChildIds(tile: ImageryMapTile): QuadId[] {\r\n const childLevel = tile.quadId.level + 1;\r\n return tile.quadId.getChildIds(this.tilingScheme.getNumberOfXChildrenAtLevel(childLevel), this.tilingScheme.getNumberOfYChildrenAtLevel(childLevel));\r\n\r\n }\r\n\r\n protected _generateChildIds(tile: ImageryMapTile, resolveChildren: (childIds: QuadId[]) => void) {\r\n resolveChildren(this.getPotentialChildIds(tile));\r\n }\r\n\r\n public generateChildIds(tile: ImageryMapTile, resolveChildren: (childIds: QuadId[]) => void) {\r\n if (tile.depth >= this.maximumZoomLevel || (undefined !== this.cartoRange && this._filterByCartoRange && !this.cartoRange.intersectsRange(tile.rectangle))) {\r\n tile.setLeaf();\r\n return;\r\n }\r\n this._generateChildIds(tile, resolveChildren);\r\n }\r\n\r\n public async getToolTip(strings: string[], quadId: QuadId, _carto: Cartographic, tree: ImageryMapTileTree): Promise<void> {\r\n if (doDebugToolTips) {\r\n const range = quadId.getLatLongRange(tree.tilingScheme);\r\n strings.push(`QuadId: ${quadId.debugString}, Lat: ${range.low.x} - ${range.high.x} Long: ${range.low.y} - ${range.high.y}`);\r\n }\r\n }\r\n\r\n protected getRequestAuthorization(): RequestBasicCredentials | undefined {\r\n return (this._settings.userName && this._settings.password) ? { user: this._settings.userName, password: this._settings.password } : undefined;\r\n }\r\n\r\n protected getImageFromTileResponse(tileResponse: Response, zoomLevel: number) {\r\n const byteArray: Uint8Array = new Uint8Array(tileResponse.body);\r\n if (!byteArray || (byteArray.length === 0))\r\n return undefined;\r\n if (this.matchesMissingTile(byteArray) && zoomLevel > 8)\r\n return undefined;\r\n let imageFormat: ImageSourceFormat;\r\n switch (tileResponse.header[\"content-type\"]) {\r\n case \"image/jpeg\":\r\n imageFormat = ImageSourceFormat.Jpeg;\r\n break;\r\n case \"image/png\":\r\n imageFormat = ImageSourceFormat.Png;\r\n break;\r\n default:\r\n return undefined;\r\n }\r\n\r\n return new ImageSource(byteArray, imageFormat);\r\n }\r\n\r\n public setStatus(status: MapLayerImageryProviderStatus) {\r\n if (this.status !== status) {\r\n this.status = status;\r\n this.onStatusChanged.raiseEvent(this);\r\n }\r\n }\r\n\r\n public async makeTileRequest(url: string) {\r\n const tileRequestOptions: RequestOptions = { method: \"GET\", responseType: \"arraybuffer\" };\r\n tileRequestOptions.auth = this.getRequestAuthorization();\r\n return request(url, tileRequestOptions);\r\n }\r\n\r\n public async loadTile(row: number, column: number, zoomLevel: number): Promise<ImageSource | undefined> {\r\n\r\n try {\r\n const tileUrl: string = await this.constructUrl(row, column, zoomLevel);\r\n if (tileUrl.length === 0)\r\n return undefined;\r\n\r\n const tileResponse: Response = await this.makeTileRequest(tileUrl);\r\n\r\n if (!this._hasSuccessfullyFetchedTile) {\r\n this._hasSuccessfullyFetchedTile = true;\r\n }\r\n\r\n return this.getImageFromTileResponse(tileResponse, zoomLevel);\r\n } catch (error: any) {\r\n if (error?.status === 401) {\r\n this.setStatus(MapLayerImageryProviderStatus.RequireAuth);\r\n\r\n // Only report error to end-user if we were previously able to fetch tiles\r\n // and then encountered an error, otherwise I assume an error was already reported\r\n // through the source validation process.\r\n if (this._hasSuccessfullyFetchedTile) {\r\n const msg = IModelApp.localization.getLocalizedString(\"iModelJs:MapLayers.Messages.LoadTileTokenError\", { layerName: this._settings.name });\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Warning, msg));\r\n }\r\n\r\n }\r\n return undefined;\r\n }\r\n }\r\n\r\n protected async toolTipFromUrl(strings: string[], url: string): Promise<void> {\r\n\r\n const requestOptions: RequestOptions = {\r\n method: \"GET\",\r\n responseType: \"text\",\r\n auth: this.getRequestAuthorization(),\r\n }; // spell-checker: disable-line\r\n\r\n try {\r\n const response: Response = await request(url, requestOptions);\r\n if (undefined !== response.text) {\r\n strings.push(response.text);\r\n }\r\n } catch {\r\n }\r\n }\r\n protected async toolTipFromJsonUrl(_strings: string[], url: string): Promise<void> {\r\n try {\r\n const json = await getJson(url);\r\n if (undefined !== json) {\r\n\r\n }\r\n } catch { }\r\n }\r\n\r\n public matchesMissingTile(tileData: Uint8Array): boolean {\r\n if (!this._missingTileData)\r\n return false;\r\n if (tileData.length !== this._missingTileData.length)\r\n return false;\r\n for (let i: number = 0; i < tileData.length; i += 10) {\r\n if (this._missingTileData[i] !== tileData[i]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n // calculates the projected x cartesian coordinate in EPSG:3857from the longitude in EPSG:4326 (WGS84)\r\n public getEPSG3857X(longitude: number): number {\r\n return longitude * 20037508.34 / 180.0;\r\n }\r\n\r\n // calculates the projected y cartesian coordinate in EPSG:3857from the latitude in EPSG:4326 (WGS84)\r\n public getEPSG3857Y(latitude: number): number {\r\n const y = Math.log(Math.tan((90.0 + latitude) * Math.PI / 360.0)) / (Math.PI / 180.0);\r\n return y * 20037508.34 / 180.0;\r\n }\r\n\r\n // Map tile providers like Bing and Mapbox allow the URL to be constructed directory from the zoom level and tile coordinates.\r\n // However, WMS-based servers take a bounding box instead. This method can help get that bounding box from a tile.\r\n\r\n public getEPSG4326Extent(row: number, column: number, zoomLevel: number): { longitudeLeft: number, longitudeRight: number, latitudeTop: number, latitudeBottom: number } {\r\n const mapSize = 256 << zoomLevel;\r\n const leftGrid = 256 * column;\r\n const topGrid = 256 * row;\r\n\r\n const longitudeLeft = 360 * ((leftGrid / mapSize) - 0.5);\r\n const y0 = 0.5 - ((topGrid + 256) / mapSize);\r\n const latitudeBottom = 90.0 - 360.0 * Math.atan(Math.exp(-y0 * 2 * Math.PI)) / Math.PI;\r\n\r\n const longitudeRight = 360 * (((leftGrid + 256) / mapSize) - 0.5);\r\n const y1 = 0.5 - (topGrid / mapSize);\r\n const latitudeTop = 90.0 - 360.0 * Math.atan(Math.exp(-y1 * 2 * Math.PI)) / Math.PI;\r\n\r\n return { longitudeLeft, longitudeRight, latitudeTop, latitudeBottom };\r\n }\r\n\r\n public getEPSG3857Extent(row: number, column: number, zoomLevel: number): { left: number, right: number, top: number, bottom: number } {\r\n const epsg4326Extent = this.getEPSG4326Extent(row, column, zoomLevel);\r\n\r\n const left = this.getEPSG3857X(epsg4326Extent.longitudeLeft);\r\n const right = this.getEPSG3857X(epsg4326Extent.longitudeRight);\r\n const bottom = this.getEPSG3857Y(epsg4326Extent.latitudeBottom);\r\n const top = this.getEPSG3857Y(epsg4326Extent.latitudeTop);\r\n\r\n return { left, right, bottom, top };\r\n }\r\n\r\n public getEPSG3857ExtentString(row: number, column: number, zoomLevel: number) {\r\n const tileExtent = this.getEPSG3857Extent(row, column, zoomLevel);\r\n return `${tileExtent.left.toFixed(2)},${tileExtent.bottom.toFixed(2)},${tileExtent.right.toFixed(2)},${tileExtent.top.toFixed(2)}`;\r\n }\r\n\r\n public getEPSG4326ExtentString(row: number, column: number, zoomLevel: number, latLongAxisOrdering: boolean) {\r\n const tileExtent = this.getEPSG4326Extent(row, column, zoomLevel);\r\n if (latLongAxisOrdering) {\r\n return `${tileExtent.latitudeBottom.toFixed(8)},${tileExtent.longitudeLeft.toFixed(8)},\r\n ${tileExtent.latitudeTop.toFixed(8)},${tileExtent.longitudeRight.toFixed(8)}`;\r\n } else {\r\n return `${tileExtent.longitudeLeft.toFixed(8)},${tileExtent.latitudeBottom.toFixed(8)},\r\n ${tileExtent.longitudeRight.toFixed(8)},${tileExtent.latitudeTop.toFixed(8)}`;\r\n }\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"MapLayerImageryProvider.js","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerImageryProvider.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module MapLayers\r\n */\r\n\r\nimport { BeEvent } from \"@itwin/core-bentley\";\r\nimport { Cartographic, ImageMapLayerSettings, ImageSource, ImageSourceFormat } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../../IModelApp\";\r\nimport { NotifyMessageDetails, OutputMessagePriority } from \"../../NotificationManager\";\r\nimport { getJson, request, RequestBasicCredentials, RequestOptions, Response } from \"../../request/Request\";\r\nimport { ScreenViewport } from \"../../Viewport\";\r\nimport { GeographicTilingScheme, ImageryMapTile, ImageryMapTileTree, MapCartoRectangle, MapLayerFeatureInfo, MapTilingScheme, QuadId, WebMercatorTilingScheme } from \"../internal\";\r\n\r\nconst tileImageSize = 256, untiledImageSize = 256;\r\n\r\nconst doDebugToolTips = false;\r\n\r\n/** @internal */\r\nexport enum MapLayerImageryProviderStatus {\r\n Valid,\r\n RequireAuth,\r\n}\r\n\r\n/** Base class for map layer imagery providers.\r\n * @internal\r\n */\r\nexport abstract class MapLayerImageryProvider {\r\n protected _hasSuccessfullyFetchedTile = false;\r\n public status: MapLayerImageryProviderStatus = MapLayerImageryProviderStatus.Valid;\r\n public readonly onStatusChanged = new BeEvent<(provider: MapLayerImageryProvider) => void>();\r\n private readonly _mercatorTilingScheme = new WebMercatorTilingScheme();\r\n private readonly _geographicTilingScheme = new GeographicTilingScheme();\r\n\r\n public get tileSize(): number { return this._usesCachedTiles ? tileImageSize : untiledImageSize; }\r\n public get maximumScreenSize() { return 2 * this.tileSize; }\r\n public get minimumZoomLevel(): number { return 0; }\r\n public get maximumZoomLevel(): number { return 22; }\r\n public get usesCachedTiles() { return this._usesCachedTiles; }\r\n public get mutualExclusiveSubLayer(): boolean { return false; }\r\n public get useGeographicTilingScheme() { return false;}\r\n public cartoRange?: MapCartoRectangle;\r\n protected get _filterByCartoRange() { return true; }\r\n constructor(protected readonly _settings: ImageMapLayerSettings, protected _usesCachedTiles: boolean) {\r\n this._mercatorTilingScheme = new WebMercatorTilingScheme();\r\n this._geographicTilingScheme = new GeographicTilingScheme(2, 1, true);\r\n }\r\n\r\n public async initialize(): Promise<void> {\r\n this.loadTile(0, 0, 22).then((tileData: ImageSource | undefined) => { // eslint-disable-line @typescript-eslint/no-floating-promises\r\n if (tileData !== undefined) this._missingTileData = tileData.data as Uint8Array;\r\n });\r\n }\r\n public abstract constructUrl(row: number, column: number, zoomLevel: number): Promise<string>;\r\n public get tilingScheme(): MapTilingScheme { return this.useGeographicTilingScheme ? this._geographicTilingScheme : this._mercatorTilingScheme; }\r\n public getLogo(_viewport: ScreenViewport): HTMLTableRowElement | undefined { return undefined; }\r\n protected _missingTileData?: Uint8Array;\r\n public get transparentBackgroundString(): string { return this._settings.transparentBackground ? \"true\" : \"false\"; }\r\n\r\n protected async _areChildrenAvailable(_tile: ImageryMapTile): Promise<boolean> { return true; }\r\n public getPotentialChildIds(tile: ImageryMapTile): QuadId[] {\r\n const childLevel = tile.quadId.level + 1;\r\n return tile.quadId.getChildIds(this.tilingScheme.getNumberOfXChildrenAtLevel(childLevel), this.tilingScheme.getNumberOfYChildrenAtLevel(childLevel));\r\n\r\n }\r\n\r\n protected _generateChildIds(tile: ImageryMapTile, resolveChildren: (childIds: QuadId[]) => void) {\r\n resolveChildren(this.getPotentialChildIds(tile));\r\n }\r\n\r\n public generateChildIds(tile: ImageryMapTile, resolveChildren: (childIds: QuadId[]) => void) {\r\n if (tile.depth >= this.maximumZoomLevel || (undefined !== this.cartoRange && this._filterByCartoRange && !this.cartoRange.intersectsRange(tile.rectangle))) {\r\n tile.setLeaf();\r\n return;\r\n }\r\n this._generateChildIds(tile, resolveChildren);\r\n }\r\n\r\n public async getToolTip(strings: string[], quadId: QuadId, _carto: Cartographic, tree: ImageryMapTileTree): Promise<void> {\r\n if (doDebugToolTips) {\r\n const range = quadId.getLatLongRange(tree.tilingScheme);\r\n strings.push(`QuadId: ${quadId.debugString}, Lat: ${range.low.x} - ${range.high.x} Long: ${range.low.y} - ${range.high.y}`);\r\n }\r\n }\r\n\r\n public async getFeatureInfo(featureInfos: MapLayerFeatureInfo[], _quadId: QuadId, _carto: Cartographic, _tree: ImageryMapTileTree): Promise<void> {\r\n // default implementation; simply return an empty feature info\r\n featureInfos.push({layerName: this._settings.name});\r\n }\r\n\r\n protected getRequestAuthorization(): RequestBasicCredentials | undefined {\r\n return (this._settings.userName && this._settings.password) ? { user: this._settings.userName, password: this._settings.password } : undefined;\r\n }\r\n\r\n protected getImageFromTileResponse(tileResponse: Response, zoomLevel: number) {\r\n const byteArray: Uint8Array = new Uint8Array(tileResponse.body);\r\n if (!byteArray || (byteArray.length === 0))\r\n return undefined;\r\n if (this.matchesMissingTile(byteArray) && zoomLevel > 8)\r\n return undefined;\r\n let imageFormat: ImageSourceFormat;\r\n switch (tileResponse.header[\"content-type\"]) {\r\n case \"image/jpeg\":\r\n imageFormat = ImageSourceFormat.Jpeg;\r\n break;\r\n case \"image/png\":\r\n imageFormat = ImageSourceFormat.Png;\r\n break;\r\n default:\r\n return undefined;\r\n }\r\n\r\n return new ImageSource(byteArray, imageFormat);\r\n }\r\n\r\n public setStatus(status: MapLayerImageryProviderStatus) {\r\n if (this.status !== status) {\r\n this.status = status;\r\n this.onStatusChanged.raiseEvent(this);\r\n }\r\n }\r\n\r\n public async makeTileRequest(url: string) {\r\n const tileRequestOptions: RequestOptions = { method: \"GET\", responseType: \"arraybuffer\" };\r\n tileRequestOptions.auth = this.getRequestAuthorization();\r\n return request(url, tileRequestOptions);\r\n }\r\n\r\n public async loadTile(row: number, column: number, zoomLevel: number): Promise<ImageSource | undefined> {\r\n\r\n try {\r\n const tileUrl: string = await this.constructUrl(row, column, zoomLevel);\r\n if (tileUrl.length === 0)\r\n return undefined;\r\n\r\n const tileResponse: Response = await this.makeTileRequest(tileUrl);\r\n\r\n if (!this._hasSuccessfullyFetchedTile) {\r\n this._hasSuccessfullyFetchedTile = true;\r\n }\r\n\r\n return this.getImageFromTileResponse(tileResponse, zoomLevel);\r\n } catch (error: any) {\r\n if (error?.status === 401) {\r\n this.setStatus(MapLayerImageryProviderStatus.RequireAuth);\r\n\r\n // Only report error to end-user if we were previously able to fetch tiles\r\n // and then encountered an error, otherwise I assume an error was already reported\r\n // through the source validation process.\r\n if (this._hasSuccessfullyFetchedTile) {\r\n const msg = IModelApp.localization.getLocalizedString(\"iModelJs:MapLayers.Messages.LoadTileTokenError\", { layerName: this._settings.name });\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Warning, msg));\r\n }\r\n\r\n }\r\n return undefined;\r\n }\r\n }\r\n\r\n protected async toolTipFromUrl(strings: string[], url: string): Promise<void> {\r\n\r\n const requestOptions: RequestOptions = {\r\n method: \"GET\",\r\n responseType: \"text\",\r\n auth: this.getRequestAuthorization(),\r\n }; // spell-checker: disable-line\r\n\r\n try {\r\n const response: Response = await request(url, requestOptions);\r\n if (undefined !== response.text) {\r\n strings.push(response.text);\r\n }\r\n } catch {\r\n }\r\n }\r\n protected async toolTipFromJsonUrl(_strings: string[], url: string): Promise<void> {\r\n try {\r\n const json = await getJson(url);\r\n if (undefined !== json) {\r\n\r\n }\r\n } catch { }\r\n }\r\n\r\n public matchesMissingTile(tileData: Uint8Array): boolean {\r\n if (!this._missingTileData)\r\n return false;\r\n if (tileData.length !== this._missingTileData.length)\r\n return false;\r\n for (let i: number = 0; i < tileData.length; i += 10) {\r\n if (this._missingTileData[i] !== tileData[i]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n // calculates the projected x cartesian coordinate in EPSG:3857from the longitude in EPSG:4326 (WGS84)\r\n public getEPSG3857X(longitude: number): number {\r\n return longitude * 20037508.34 / 180.0;\r\n }\r\n\r\n // calculates the projected y cartesian coordinate in EPSG:3857from the latitude in EPSG:4326 (WGS84)\r\n public getEPSG3857Y(latitude: number): number {\r\n const y = Math.log(Math.tan((90.0 + latitude) * Math.PI / 360.0)) / (Math.PI / 180.0);\r\n return y * 20037508.34 / 180.0;\r\n }\r\n\r\n // Map tile providers like Bing and Mapbox allow the URL to be constructed directory from the zoom level and tile coordinates.\r\n // However, WMS-based servers take a bounding box instead. This method can help get that bounding box from a tile.\r\n\r\n public getEPSG4326Extent(row: number, column: number, zoomLevel: number): { longitudeLeft: number, longitudeRight: number, latitudeTop: number, latitudeBottom: number } {\r\n const mapSize = 256 << zoomLevel;\r\n const leftGrid = 256 * column;\r\n const topGrid = 256 * row;\r\n\r\n const longitudeLeft = 360 * ((leftGrid / mapSize) - 0.5);\r\n const y0 = 0.5 - ((topGrid + 256) / mapSize);\r\n const latitudeBottom = 90.0 - 360.0 * Math.atan(Math.exp(-y0 * 2 * Math.PI)) / Math.PI;\r\n\r\n const longitudeRight = 360 * (((leftGrid + 256) / mapSize) - 0.5);\r\n const y1 = 0.5 - (topGrid / mapSize);\r\n const latitudeTop = 90.0 - 360.0 * Math.atan(Math.exp(-y1 * 2 * Math.PI)) / Math.PI;\r\n\r\n return { longitudeLeft, longitudeRight, latitudeTop, latitudeBottom };\r\n }\r\n\r\n public getEPSG3857Extent(row: number, column: number, zoomLevel: number): { left: number, right: number, top: number, bottom: number } {\r\n const epsg4326Extent = this.getEPSG4326Extent(row, column, zoomLevel);\r\n\r\n const left = this.getEPSG3857X(epsg4326Extent.longitudeLeft);\r\n const right = this.getEPSG3857X(epsg4326Extent.longitudeRight);\r\n const bottom = this.getEPSG3857Y(epsg4326Extent.latitudeBottom);\r\n const top = this.getEPSG3857Y(epsg4326Extent.latitudeTop);\r\n\r\n return { left, right, bottom, top };\r\n }\r\n\r\n public getEPSG3857ExtentString(row: number, column: number, zoomLevel: number) {\r\n const tileExtent = this.getEPSG3857Extent(row, column, zoomLevel);\r\n return `${tileExtent.left.toFixed(2)},${tileExtent.bottom.toFixed(2)},${tileExtent.right.toFixed(2)},${tileExtent.top.toFixed(2)}`;\r\n }\r\n\r\n public getEPSG4326ExtentString(row: number, column: number, zoomLevel: number, latLongAxisOrdering: boolean) {\r\n const tileExtent = this.getEPSG4326Extent(row, column, zoomLevel);\r\n if (latLongAxisOrdering) {\r\n return `${tileExtent.latitudeBottom.toFixed(8)},${tileExtent.longitudeLeft.toFixed(8)},\r\n ${tileExtent.latitudeTop.toFixed(8)},${tileExtent.longitudeRight.toFixed(8)}`;\r\n } else {\r\n return `${tileExtent.longitudeLeft.toFixed(8)},${tileExtent.latitudeBottom.toFixed(8)},\r\n ${tileExtent.longitudeRight.toFixed(8)},${tileExtent.latitudeTop.toFixed(8)}`;\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -11,7 +11,7 @@ import { FeatureSymbology } from "../../render/FeatureSymbology";
|
|
|
11
11
|
import { RenderPlanarClassifier } from "../../render/RenderPlanarClassifier";
|
|
12
12
|
import { SceneContext } from "../../ViewContext";
|
|
13
13
|
import { ScreenViewport } from "../../Viewport";
|
|
14
|
-
import { DisclosedTileTreeSet, GeometryTileTreeReference, ImageryMapLayerTreeReference, ImageryMapTileTree, MapCartoRectangle, MapLayerTileTreeReference, MapTile, MapTileLoader, MapTilingScheme, ModelMapLayerTileTreeReference, QuadId, RealityTile, RealityTileTree, RealityTileTreeParams, Tile, TileDrawArgs, TileParams, TileTree, TileTreeOwner, TileTreeReference } from "../internal";
|
|
14
|
+
import { DisclosedTileTreeSet, GeometryTileTreeReference, ImageryMapLayerTreeReference, ImageryMapTileTree, MapCartoRectangle, MapLayerFeatureInfo, MapLayerTileTreeReference, MapTile, MapTileLoader, MapTilingScheme, ModelMapLayerTileTreeReference, QuadId, RealityTile, RealityTileTree, RealityTileTreeParams, Tile, TileDrawArgs, TileParams, TileTree, TileTreeOwner, TileTreeReference } from "../internal";
|
|
15
15
|
/** @internal */
|
|
16
16
|
export declare class MapTileTree extends RealityTileTree {
|
|
17
17
|
ecefToDb: Transform;
|
|
@@ -135,7 +135,9 @@ export declare class MapTileTreeReference extends TileTreeReference {
|
|
|
135
135
|
discloseTileTrees(trees: DisclosedTileTreeSet): void;
|
|
136
136
|
imageryTreeFromTreeModelIds(mapTreeModelId: Id64String, layerTreeModelId: Id64String): ImageryMapLayerTreeReference | undefined;
|
|
137
137
|
layerFromTreeModelIds(mapTreeModelId: Id64String, layerTreeModelId: Id64String): MapLayerSettings | undefined;
|
|
138
|
+
private forEachImageryTileHit;
|
|
138
139
|
getToolTip(hit: HitDetail): Promise<HTMLElement | string | undefined>;
|
|
140
|
+
getMapFeatureInfo(hit: HitDetail): Promise<MapLayerFeatureInfo[] | undefined>;
|
|
139
141
|
/** Add logo cards to logo div. */
|
|
140
142
|
addLogoCards(cards: HTMLTableElement, vp: ScreenViewport): void;
|
|
141
143
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MapTileTree.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/MapTileTree.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"MapTileTree.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/MapTileTree.ts"],"names":[],"mappings":"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"}
|
|
@@ -650,16 +650,24 @@ export class MapTileTreeReference extends TileTreeReference {
|
|
|
650
650
|
const imageryTree = this.imageryTreeFromTreeModelIds(mapTreeModelId, layerTreeModelId);
|
|
651
651
|
return imageryTree === undefined ? imageryTree : imageryTree.layerSettings;
|
|
652
652
|
}
|
|
653
|
-
|
|
653
|
+
// Utility method that execute the provided function for every *imagery* tiles under a given HotDetail object.
|
|
654
|
+
async forEachImageryTileHit(hit, func) {
|
|
654
655
|
const tree = this.treeOwner.tileTree;
|
|
655
|
-
// eslint-disable-next-line @typescript-eslint/unbound-method
|
|
656
656
|
if (undefined === tree || hit.iModel !== tree.iModel || tree.modelId !== hit.modelId || !hit.viewport || !hit.viewport.view.is3d)
|
|
657
657
|
return undefined;
|
|
658
658
|
const backgroundMapGeometry = hit.viewport.displayStyle.getBackgroundMapGeometry();
|
|
659
659
|
if (undefined === backgroundMapGeometry)
|
|
660
660
|
return undefined;
|
|
661
661
|
const worldPoint = hit.hitPoint.clone();
|
|
662
|
-
|
|
662
|
+
let cartoGraphic;
|
|
663
|
+
try {
|
|
664
|
+
cartoGraphic = await backgroundMapGeometry.dbToCartographicFromGcs(worldPoint);
|
|
665
|
+
}
|
|
666
|
+
catch {
|
|
667
|
+
}
|
|
668
|
+
if (!cartoGraphic) {
|
|
669
|
+
return undefined;
|
|
670
|
+
}
|
|
663
671
|
const strings = [];
|
|
664
672
|
const imageryTreeRef = this.imageryTreeFromTreeModelIds(hit.modelId, hit.sourceId);
|
|
665
673
|
if (imageryTreeRef !== undefined) {
|
|
@@ -671,23 +679,72 @@ export class MapTileTreeReference extends TileTreeReference {
|
|
|
671
679
|
const imageryTree = imageryTreeRef.treeOwner.tileTree;
|
|
672
680
|
if (imageryTree) {
|
|
673
681
|
for (const imageryTile of terrainTile.imageryTiles) {
|
|
674
|
-
if (imageryTree === imageryTile.imageryTree && imageryTile.rectangle.containsCartographic(cartoGraphic))
|
|
675
|
-
|
|
682
|
+
if (imageryTree === imageryTile.imageryTree && imageryTile.rectangle.containsCartographic(cartoGraphic)) {
|
|
683
|
+
try {
|
|
684
|
+
await func(imageryTreeRef, imageryTile.quadId, cartoGraphic, imageryTree);
|
|
685
|
+
}
|
|
686
|
+
catch {
|
|
687
|
+
// continue iterating even though we got a failure.
|
|
688
|
+
}
|
|
689
|
+
}
|
|
676
690
|
}
|
|
677
691
|
}
|
|
678
692
|
}
|
|
679
693
|
}
|
|
680
694
|
}
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
695
|
+
}
|
|
696
|
+
async getToolTip(hit) {
|
|
697
|
+
const tree = this.treeOwner.tileTree;
|
|
698
|
+
if (tree.modelId !== hit.modelId)
|
|
699
|
+
return undefined;
|
|
700
|
+
let carto;
|
|
701
|
+
const strings = [];
|
|
702
|
+
const getTooltipFunc = async (imageryTreeRef, quadId, cartoGraphic, imageryTree) => {
|
|
703
|
+
strings.push(`Imagery Layer: ${imageryTreeRef.layerSettings.name}`);
|
|
704
|
+
carto = cartoGraphic;
|
|
705
|
+
await imageryTree.imageryLoader.getToolTip(strings, quadId, cartoGraphic, imageryTree);
|
|
706
|
+
};
|
|
707
|
+
try {
|
|
708
|
+
await this.forEachImageryTileHit(hit, getTooltipFunc);
|
|
709
|
+
}
|
|
710
|
+
catch {
|
|
711
|
+
// No results added
|
|
712
|
+
}
|
|
713
|
+
if (carto) {
|
|
714
|
+
strings.push(`Latitude: ${carto.latitudeDegrees.toFixed(4)}`);
|
|
715
|
+
strings.push(`Longitude: ${carto.longitudeDegrees.toFixed(4)}`);
|
|
716
|
+
if (this.settings.applyTerrain && tree.terrainExaggeration !== 0.0) {
|
|
717
|
+
const geodeticHeight = (carto.height - tree.bimElevationBias) / tree.terrainExaggeration;
|
|
718
|
+
strings.push(`Height (Meters) Geodetic: ${geodeticHeight.toFixed(1)} Sea Level: ${(geodeticHeight - tree.geodeticOffset).toFixed(1)}`);
|
|
719
|
+
}
|
|
686
720
|
}
|
|
687
721
|
const div = document.createElement("div");
|
|
688
722
|
div.innerHTML = strings.join("<br>");
|
|
689
723
|
return div;
|
|
690
724
|
}
|
|
725
|
+
async getMapFeatureInfo(hit) {
|
|
726
|
+
const tree = this.treeOwner.tileTree;
|
|
727
|
+
if (undefined === tree || hit.iModel !== tree.iModel || tree.modelId !== hit.modelId || !hit.viewport || !hit.viewport.view.is3d)
|
|
728
|
+
return undefined;
|
|
729
|
+
const info = [];
|
|
730
|
+
const imageryTreeRef = this.imageryTreeFromTreeModelIds(hit.modelId, hit.sourceId);
|
|
731
|
+
if (imageryTreeRef !== undefined) {
|
|
732
|
+
const getFeatureInfoFunc = async (_imageryTreeRef, quadId, cartoGraphic, imageryTree) => {
|
|
733
|
+
try {
|
|
734
|
+
await imageryTree.imageryLoader.getMapFeatureInfo(info, quadId, cartoGraphic, imageryTree);
|
|
735
|
+
}
|
|
736
|
+
catch {
|
|
737
|
+
}
|
|
738
|
+
};
|
|
739
|
+
try {
|
|
740
|
+
await this.forEachImageryTileHit(hit, getFeatureInfoFunc);
|
|
741
|
+
}
|
|
742
|
+
catch {
|
|
743
|
+
// No results added
|
|
744
|
+
}
|
|
745
|
+
}
|
|
746
|
+
return info;
|
|
747
|
+
}
|
|
691
748
|
/** Add logo cards to logo div. */
|
|
692
749
|
addLogoCards(cards, vp) {
|
|
693
750
|
const tree = this.treeOwner.tileTree;
|