@itwin/core-frontend 4.6.0-dev.18 → 4.6.0-dev.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/lib/cjs/DrawingViewState.d.ts +0 -1
  2. package/lib/cjs/DrawingViewState.d.ts.map +1 -1
  3. package/lib/cjs/DrawingViewState.js +17 -7
  4. package/lib/cjs/DrawingViewState.js.map +1 -1
  5. package/lib/cjs/ViewState.d.ts +1 -2
  6. package/lib/cjs/ViewState.d.ts.map +1 -1
  7. package/lib/cjs/ViewState.js +1 -2
  8. package/lib/cjs/ViewState.js.map +1 -1
  9. package/lib/cjs/tile/internal.d.ts +6 -3
  10. package/lib/cjs/tile/internal.d.ts.map +1 -1
  11. package/lib/cjs/tile/internal.js +6 -3
  12. package/lib/cjs/tile/internal.js.map +1 -1
  13. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  14. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +1 -1
  15. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  16. package/lib/cjs/tile/map/ImageryProviders/ArcGisGeometryReaderJSON.d.ts +2 -3
  17. package/lib/cjs/tile/map/ImageryProviders/ArcGisGeometryReaderJSON.d.ts.map +1 -1
  18. package/lib/cjs/tile/map/ImageryProviders/ArcGisGeometryReaderJSON.js +7 -13
  19. package/lib/cjs/tile/map/ImageryProviders/ArcGisGeometryReaderJSON.js.map +1 -1
  20. package/lib/cjs/tile/map/ImageryProviders/CoordinatesUtils.d.ts +7 -0
  21. package/lib/cjs/tile/map/ImageryProviders/CoordinatesUtils.d.ts.map +1 -0
  22. package/lib/cjs/tile/map/ImageryProviders/CoordinatesUtils.js +22 -0
  23. package/lib/cjs/tile/map/ImageryProviders/CoordinatesUtils.js.map +1 -0
  24. package/lib/cjs/tile/map/ImageryProviders/{ArcGisAttributeDrivenSymbology.d.ts → FeatureAttributeDrivenSymbology.d.ts} +2 -2
  25. package/lib/cjs/tile/map/ImageryProviders/FeatureAttributeDrivenSymbology.d.ts.map +1 -0
  26. package/lib/cjs/tile/map/ImageryProviders/{ArcGisAttributeDrivenSymbology.js → FeatureAttributeDrivenSymbology.js} +1 -1
  27. package/lib/cjs/tile/map/ImageryProviders/FeatureAttributeDrivenSymbology.js.map +1 -0
  28. package/lib/cjs/tile/map/ImageryProviders/{ArcGisGeometryRenderer.d.ts → FeatureGeometryRenderer.d.ts} +7 -7
  29. package/lib/cjs/tile/map/ImageryProviders/FeatureGeometryRenderer.d.ts.map +1 -0
  30. package/lib/cjs/tile/map/ImageryProviders/{ArcGisGeometryRenderer.js → FeatureGeometryRenderer.js} +5 -5
  31. package/lib/cjs/tile/map/ImageryProviders/FeatureGeometryRenderer.js.map +1 -0
  32. package/lib/cjs/tile/map/ImageryProviders/{ArcGisGraphicsRenderer.d.ts → FeatureGraphicsRenderer.d.ts} +17 -9
  33. package/lib/cjs/tile/map/ImageryProviders/FeatureGraphicsRenderer.d.ts.map +1 -0
  34. package/lib/cjs/tile/map/ImageryProviders/{ArcGisGraphicsRenderer.js → FeatureGraphicsRenderer.js} +14 -10
  35. package/lib/cjs/tile/map/ImageryProviders/FeatureGraphicsRenderer.js.map +1 -0
  36. package/lib/cjs/tile/map/ImageryProviders/FeatureSymbologyRenderer.d.ts +15 -0
  37. package/lib/cjs/tile/map/ImageryProviders/FeatureSymbologyRenderer.d.ts.map +1 -0
  38. package/lib/cjs/tile/map/ImageryProviders/FeatureSymbologyRenderer.js +7 -0
  39. package/lib/cjs/tile/map/ImageryProviders/FeatureSymbologyRenderer.js.map +1 -0
  40. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +1 -1
  41. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  42. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +14 -9
  43. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  44. package/lib/cjs/tile/map/MapLayerImageryProvider.js +45 -62
  45. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  46. package/lib/cjs/tile/map/UrlUtils.d.ts +8 -0
  47. package/lib/cjs/tile/map/UrlUtils.d.ts.map +1 -0
  48. package/lib/cjs/tile/map/UrlUtils.js +49 -0
  49. package/lib/cjs/tile/map/UrlUtils.js.map +1 -0
  50. package/lib/esm/DrawingViewState.d.ts +0 -1
  51. package/lib/esm/DrawingViewState.d.ts.map +1 -1
  52. package/lib/esm/DrawingViewState.js +17 -7
  53. package/lib/esm/DrawingViewState.js.map +1 -1
  54. package/lib/esm/ViewState.d.ts +1 -2
  55. package/lib/esm/ViewState.d.ts.map +1 -1
  56. package/lib/esm/ViewState.js +1 -2
  57. package/lib/esm/ViewState.js.map +1 -1
  58. package/lib/esm/tile/internal.d.ts +6 -3
  59. package/lib/esm/tile/internal.d.ts.map +1 -1
  60. package/lib/esm/tile/internal.js +6 -3
  61. package/lib/esm/tile/internal.js.map +1 -1
  62. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  63. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +2 -2
  64. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  65. package/lib/esm/tile/map/ImageryProviders/ArcGisGeometryReaderJSON.d.ts +2 -3
  66. package/lib/esm/tile/map/ImageryProviders/ArcGisGeometryReaderJSON.d.ts.map +1 -1
  67. package/lib/esm/tile/map/ImageryProviders/ArcGisGeometryReaderJSON.js +7 -13
  68. package/lib/esm/tile/map/ImageryProviders/ArcGisGeometryReaderJSON.js.map +1 -1
  69. package/lib/esm/tile/map/ImageryProviders/CoordinatesUtils.d.ts +7 -0
  70. package/lib/esm/tile/map/ImageryProviders/CoordinatesUtils.d.ts.map +1 -0
  71. package/lib/esm/tile/map/ImageryProviders/CoordinatesUtils.js +18 -0
  72. package/lib/esm/tile/map/ImageryProviders/CoordinatesUtils.js.map +1 -0
  73. package/lib/esm/tile/map/ImageryProviders/{ArcGisAttributeDrivenSymbology.d.ts → FeatureAttributeDrivenSymbology.d.ts} +2 -2
  74. package/lib/esm/tile/map/ImageryProviders/FeatureAttributeDrivenSymbology.d.ts.map +1 -0
  75. package/lib/esm/tile/map/ImageryProviders/{ArcGisAttributeDrivenSymbology.js → FeatureAttributeDrivenSymbology.js} +1 -1
  76. package/lib/esm/tile/map/ImageryProviders/FeatureAttributeDrivenSymbology.js.map +1 -0
  77. package/lib/esm/tile/map/ImageryProviders/{ArcGisGeometryRenderer.d.ts → FeatureGeometryRenderer.d.ts} +7 -7
  78. package/lib/esm/tile/map/ImageryProviders/FeatureGeometryRenderer.d.ts.map +1 -0
  79. package/lib/esm/tile/map/ImageryProviders/{ArcGisGeometryRenderer.js → FeatureGeometryRenderer.js} +3 -3
  80. package/lib/esm/tile/map/ImageryProviders/FeatureGeometryRenderer.js.map +1 -0
  81. package/lib/esm/tile/map/ImageryProviders/{ArcGisGraphicsRenderer.d.ts → FeatureGraphicsRenderer.d.ts} +17 -9
  82. package/lib/esm/tile/map/ImageryProviders/FeatureGraphicsRenderer.d.ts.map +1 -0
  83. package/lib/esm/tile/map/ImageryProviders/{ArcGisGraphicsRenderer.js → FeatureGraphicsRenderer.js} +13 -9
  84. package/lib/esm/tile/map/ImageryProviders/FeatureGraphicsRenderer.js.map +1 -0
  85. package/lib/esm/tile/map/ImageryProviders/FeatureSymbologyRenderer.d.ts +15 -0
  86. package/lib/esm/tile/map/ImageryProviders/FeatureSymbologyRenderer.d.ts.map +1 -0
  87. package/lib/esm/tile/map/ImageryProviders/FeatureSymbologyRenderer.js +6 -0
  88. package/lib/esm/tile/map/ImageryProviders/FeatureSymbologyRenderer.js.map +1 -0
  89. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +1 -1
  90. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  91. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +14 -9
  92. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  93. package/lib/esm/tile/map/MapLayerImageryProvider.js +47 -64
  94. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  95. package/lib/esm/tile/map/UrlUtils.d.ts +8 -0
  96. package/lib/esm/tile/map/UrlUtils.d.ts.map +1 -0
  97. package/lib/esm/tile/map/UrlUtils.js +45 -0
  98. package/lib/esm/tile/map/UrlUtils.js.map +1 -0
  99. package/package.json +18 -18
  100. package/lib/cjs/tile/map/ImageryProviders/ArcGisAttributeDrivenSymbology.d.ts.map +0 -1
  101. package/lib/cjs/tile/map/ImageryProviders/ArcGisAttributeDrivenSymbology.js.map +0 -1
  102. package/lib/cjs/tile/map/ImageryProviders/ArcGisGeometryRenderer.d.ts.map +0 -1
  103. package/lib/cjs/tile/map/ImageryProviders/ArcGisGeometryRenderer.js.map +0 -1
  104. package/lib/cjs/tile/map/ImageryProviders/ArcGisGraphicsRenderer.d.ts.map +0 -1
  105. package/lib/cjs/tile/map/ImageryProviders/ArcGisGraphicsRenderer.js.map +0 -1
  106. package/lib/esm/tile/map/ImageryProviders/ArcGisAttributeDrivenSymbology.d.ts.map +0 -1
  107. package/lib/esm/tile/map/ImageryProviders/ArcGisAttributeDrivenSymbology.js.map +0 -1
  108. package/lib/esm/tile/map/ImageryProviders/ArcGisGeometryRenderer.d.ts.map +0 -1
  109. package/lib/esm/tile/map/ImageryProviders/ArcGisGeometryRenderer.js.map +0 -1
  110. package/lib/esm/tile/map/ImageryProviders/ArcGisGraphicsRenderer.d.ts.map +0 -1
  111. package/lib/esm/tile/map/ImageryProviders/ArcGisGraphicsRenderer.js.map +0 -1
@@ -1,26 +1,34 @@
1
- import { ArcGisAttributeDrivenSymbology, ArcGisGeometryBaseRenderer } from "../../internal";
1
+ import { FeatureGeometryBaseRenderer, FeatureGeometryRenderer, FeatureSymbolizedRenderer } from "../../internal";
2
2
  import { GraphicPrimitive } from "../../../render/GraphicPrimitive";
3
3
  import { Viewport } from "../../../Viewport";
4
4
  /**
5
- * Properties of [[ArcGisGraphicsRenderer]]
5
+ * Properties of [[GraphicsGeometryRenderer]]
6
6
  * @internal
7
7
  */
8
- export interface ArcGisGraphicsRendererProps {
8
+ export interface FeatureGraphicsRendererProps {
9
9
  /** The viewport in which the resultant [GraphicPrimitive]($frontend) is to be drawn. */
10
10
  viewport: Viewport;
11
+ /** Coordinate reference system of input data */
12
+ crs: "webMercator" | "wgs84";
11
13
  }
12
- /** ArcGIS geometry renderer implementation that will "render" a list of [GraphicPrimitive]($frontend)
14
+ /**
15
+ * @internal
16
+ */
17
+ export interface GraphicsGeometryRenderer extends FeatureGeometryRenderer {
18
+ moveGraphics(): GraphicPrimitive[];
19
+ }
20
+ /** Feature geometry renderer implementation that will "render" a list of [GraphicPrimitive]($frontend)
13
21
  * This renderer initial objective is to read geometries when a call to [[MapLayerImageryProvider.getFeatureInfo]] is performed.
14
22
  * @internal
15
23
  */
16
- export declare class ArcGisGraphicsRenderer extends ArcGisGeometryBaseRenderer {
24
+ export declare class FeatureGraphicsRenderer extends FeatureGeometryBaseRenderer implements GraphicsGeometryRenderer {
25
+ hasSymbologyRenderer(): this is FeatureSymbolizedRenderer;
17
26
  private _scratchPointsArray;
18
27
  private _scratchPaths;
19
28
  private _graphics;
20
- private _iModel;
21
29
  private _viewport;
22
- get attributeSymbology(): ArcGisAttributeDrivenSymbology | undefined;
23
- constructor(props: ArcGisGraphicsRendererProps);
30
+ private _crs;
31
+ constructor(props: FeatureGraphicsRendererProps);
24
32
  moveGraphics(): GraphicPrimitive[];
25
33
  protected beginPath(): void;
26
34
  protected closePath(): void;
@@ -32,4 +40,4 @@ export declare class ArcGisGraphicsRenderer extends ArcGisGeometryBaseRenderer {
32
40
  protected finishPoints(): Promise<void>;
33
41
  private toSpatial;
34
42
  }
35
- //# sourceMappingURL=ArcGisGraphicsRenderer.d.ts.map
43
+ //# sourceMappingURL=FeatureGraphicsRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeatureGraphicsRenderer.d.ts","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/FeatureGraphicsRenderer.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,yBAAyB,EAAe,MAAM,gBAAgB,CAAC;AAC9H,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAI7C;;;GAGG;AACH,MAAM,WAAW,4BAA4B;IAC3C,wFAAwF;IACxF,QAAQ,EAAE,QAAQ,CAAC;IACnB,gDAAgD;IAChD,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,wBAAyB,SAAQ,uBAAuB;IACvE,YAAY,IAAI,gBAAgB,EAAE,CAAC;CACpC;AAED;;;GAGG;AACH,qBAAa,uBAAwB,SAAQ,2BAA4B,YAAW,wBAAwB;IAE1F,oBAAoB,IAAI,IAAI,IAAI,yBAAyB;IAEzE,OAAO,CAAC,mBAAmB,CAA0B;IACrD,OAAO,CAAC,aAAa,CAAmB;IACxC,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,SAAS,CAAW;IAC5B,OAAO,CAAC,IAAI,CAA0B;gBAE1B,KAAK,EAAE,4BAA4B;IAMxC,YAAY;IAMnB,SAAS,CAAC,SAAS;IAKnB,SAAS,CAAC,SAAS;cAOH,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;cAI3B,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;cAU3B,IAAI;cAyBJ,MAAM;cAmBH,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;cAI/B,YAAY;YAgBvB,SAAS;CAaxB"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ArcGisGraphicsRenderer = void 0;
3
+ exports.FeatureGraphicsRenderer = void 0;
4
4
  /*---------------------------------------------------------------------------------------------
5
5
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
6
6
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -9,20 +9,20 @@ const core_bentley_1 = require("@itwin/core-bentley");
9
9
  const core_common_1 = require("@itwin/core-common");
10
10
  const core_geometry_1 = require("@itwin/core-geometry");
11
11
  const internal_1 = require("../../internal");
12
- const loggerCategory = "MapLayerImageryProvider.ArcGisGraphicsRenderer";
13
- /** ArcGIS geometry renderer implementation that will "render" a list of [GraphicPrimitive]($frontend)
12
+ const loggerCategory = "MapLayerImageryProvider.FeatureGraphicsRenderer";
13
+ /** Feature geometry renderer implementation that will "render" a list of [GraphicPrimitive]($frontend)
14
14
  * This renderer initial objective is to read geometries when a call to [[MapLayerImageryProvider.getFeatureInfo]] is performed.
15
15
  * @internal
16
16
  */
17
- class ArcGisGraphicsRenderer extends internal_1.ArcGisGeometryBaseRenderer {
18
- get attributeSymbology() { return undefined; } // No symbology is applied in this renderer
17
+ class FeatureGraphicsRenderer extends internal_1.FeatureGeometryBaseRenderer {
18
+ hasSymbologyRenderer() { return false; }
19
19
  constructor(props) {
20
20
  super();
21
21
  this._scratchPointsArray = new core_geometry_1.GrowableXYZArray();
22
22
  this._scratchPaths = [];
23
23
  this._graphics = [];
24
24
  this._viewport = props.viewport;
25
- this._iModel = props.viewport.iModel;
25
+ this._crs = props.crs;
26
26
  }
27
27
  moveGraphics() {
28
28
  const graphics = this._graphics;
@@ -96,7 +96,7 @@ class ArcGisGraphicsRenderer extends internal_1.ArcGisGeometryBaseRenderer {
96
96
  this._graphics.push({ type: "pointstring", points: spatialPoints });
97
97
  }
98
98
  catch (error) {
99
- core_bentley_1.Logger.logError(loggerCategory, "ArcGisFeatureGraphicsRenderer: Could not reproject points");
99
+ core_bentley_1.Logger.logError(loggerCategory, "FeatureGraphicsRenderer: Could not reproject points");
100
100
  }
101
101
  this._scratchPointsArray.clear();
102
102
  }
@@ -104,11 +104,15 @@ class ArcGisGraphicsRenderer extends internal_1.ArcGisGeometryBaseRenderer {
104
104
  async toSpatial(geoPoints) {
105
105
  const bgMapGeom = this._viewport.displayStyle.getBackgroundMapGeometry();
106
106
  if (bgMapGeom) {
107
- const cartoPts = geoPoints.map((pt) => core_common_1.Cartographic.fromDegrees({ longitude: internal_1.WebMercator.getEPSG4326Lon(pt.x), latitude: internal_1.WebMercator.getEPSG4326Lat(pt.y), height: pt.z }));
107
+ const cartoPts = geoPoints.map((pt) => core_common_1.Cartographic.fromDegrees({
108
+ longitude: this._crs === "webMercator" ? internal_1.WebMercator.getEPSG4326Lon(pt.x) : pt.x,
109
+ latitude: this._crs === "webMercator" ? internal_1.WebMercator.getEPSG4326Lat(pt.y) : pt.y,
110
+ height: pt.z,
111
+ }));
108
112
  return bgMapGeom.cartographicToDbFromWgs84Gcs(cartoPts);
109
113
  }
110
114
  return [];
111
115
  }
112
116
  }
113
- exports.ArcGisGraphicsRenderer = ArcGisGraphicsRenderer;
114
- //# sourceMappingURL=ArcGisGraphicsRenderer.js.map
117
+ exports.FeatureGraphicsRenderer = FeatureGraphicsRenderer;
118
+ //# sourceMappingURL=FeatureGraphicsRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeatureGraphicsRenderer.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/FeatureGraphicsRenderer.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport { Logger } from \"@itwin/core-bentley\";\r\nimport { Cartographic } from \"@itwin/core-common\";\r\nimport { GrowableXYZArray, LineString3d, Loop, Point3d, Point3dArray, RegionOps } from \"@itwin/core-geometry\";\r\nimport { FeatureGeometryBaseRenderer, FeatureGeometryRenderer, FeatureSymbolizedRenderer, WebMercator } from \"../../internal\";\r\nimport { GraphicPrimitive } from \"../../../render/GraphicPrimitive\";\r\nimport { Viewport } from \"../../../Viewport\";\r\n\r\nconst loggerCategory = \"MapLayerImageryProvider.FeatureGraphicsRenderer\";\r\n\r\n/**\r\n * Properties of [[GraphicsGeometryRenderer]]\r\n * @internal\r\n */\r\nexport interface FeatureGraphicsRendererProps {\r\n /** The viewport in which the resultant [GraphicPrimitive]($frontend) is to be drawn. */\r\n viewport: Viewport;\r\n /** Coordinate reference system of input data */\r\n crs: \"webMercator\" | \"wgs84\";\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport interface GraphicsGeometryRenderer extends FeatureGeometryRenderer {\r\n moveGraphics(): GraphicPrimitive[];\r\n}\r\n\r\n/** Feature geometry renderer implementation that will \"render\" a list of [GraphicPrimitive]($frontend)\r\n * This renderer initial objective is to read geometries when a call to [[MapLayerImageryProvider.getFeatureInfo]] is performed.\r\n * @internal\r\n */\r\nexport class FeatureGraphicsRenderer extends FeatureGeometryBaseRenderer implements GraphicsGeometryRenderer {\r\n\r\n public override hasSymbologyRenderer(): this is FeatureSymbolizedRenderer {return false;}\r\n\r\n private _scratchPointsArray = new GrowableXYZArray();\r\n private _scratchPaths: Point3d[][] = [];\r\n private _graphics: GraphicPrimitive[] = [];\r\n private _viewport: Viewport;\r\n private _crs: \"webMercator\" | \"wgs84\";\r\n\r\n constructor(props: FeatureGraphicsRendererProps) {\r\n super();\r\n this._viewport = props.viewport;\r\n this._crs = props.crs;\r\n }\r\n\r\n public moveGraphics() {\r\n const graphics = this._graphics;\r\n this._graphics = [];\r\n return graphics;\r\n }\r\n\r\n protected beginPath() {\r\n this._scratchPointsArray.clear();\r\n this._scratchPaths = [];\r\n }\r\n\r\n protected closePath() {\r\n if (this._scratchPointsArray.length > 0) {\r\n this._scratchPaths.push(this._scratchPointsArray.getArray());\r\n this._scratchPointsArray.clear();\r\n }\r\n }\r\n\r\n protected async lineTo(x: number, y: number) {\r\n this._scratchPointsArray.push({ x, y, z: 0 });\r\n }\r\n\r\n protected async moveTo(x: number, y: number) {\r\n\r\n if (this._scratchPointsArray.length > 0) {\r\n this._scratchPaths.push(this._scratchPointsArray.getArray());\r\n this._scratchPointsArray.clear();\r\n }\r\n\r\n this._scratchPointsArray.push({ x, y, z: 0 });\r\n }\r\n\r\n protected async fill() {\r\n if (this._scratchPaths.length > 0) {\r\n const loops = [];\r\n\r\n const pathPromises = [];\r\n for (const points of this._scratchPaths) {\r\n pathPromises.push(this.toSpatial(points));\r\n }\r\n\r\n const pathsArray = await Promise.all(pathPromises);\r\n for (const pointsArray of pathsArray) {\r\n loops.push(Loop.create(LineString3d.create(pointsArray)));\r\n }\r\n\r\n const mergedLoops = RegionOps.constructAllXYRegionLoops(loops);\r\n for (const loop of mergedLoops) {\r\n for (const negativeLoop of loop.negativeAreaLoops) {\r\n this._graphics.push({ type: \"loop\", loop: negativeLoop });\r\n }\r\n }\r\n\r\n this._scratchPaths = [];\r\n }\r\n }\r\n\r\n protected async stroke() {\r\n if (this._scratchPointsArray.length > 0) {\r\n this._scratchPaths.push(this._scratchPointsArray.getArray());\r\n this._scratchPointsArray.clear();\r\n }\r\n\r\n const pathPromises = [];\r\n for (const geoPt of this._scratchPaths) {\r\n pathPromises.push(this.toSpatial(geoPt));\r\n }\r\n\r\n const reprojectedPaths = await Promise.all(pathPromises);\r\n for (const path of reprojectedPaths) {\r\n this._graphics.push({ type: \"linestring\", points: Point3dArray.clonePoint3dArray(path) });\r\n }\r\n\r\n this._scratchPaths = [];\r\n }\r\n\r\n protected override drawPoint(x: number, y: number): void {\r\n this._scratchPointsArray.push({ x, y, z: 0 });\r\n }\r\n\r\n protected override async finishPoints() {\r\n if (this._scratchPointsArray.length > 0) {\r\n\r\n // Backend reprojection\r\n const pointsArray = this._scratchPointsArray.getArray();\r\n try {\r\n const spatialPoints = await this.toSpatial(pointsArray);\r\n this._graphics.push({ type: \"pointstring\", points: spatialPoints });\r\n } catch (error) {\r\n Logger.logError(loggerCategory, \"FeatureGraphicsRenderer: Could not reproject points\");\r\n }\r\n\r\n this._scratchPointsArray.clear();\r\n }\r\n }\r\n\r\n private async toSpatial(geoPoints: Point3d[]) {\r\n const bgMapGeom = this._viewport.displayStyle.getBackgroundMapGeometry();\r\n if (bgMapGeom) {\r\n const cartoPts = geoPoints.map((pt) => Cartographic.fromDegrees({\r\n longitude: this._crs === \"webMercator\" ? WebMercator.getEPSG4326Lon(pt.x) : pt.x,\r\n latitude: this._crs === \"webMercator\" ? WebMercator.getEPSG4326Lat(pt.y) : pt.y,\r\n height: pt.z,\r\n }));\r\n return bgMapGeom.cartographicToDbFromWgs84Gcs(cartoPts);\r\n }\r\n\r\n return [];\r\n }\r\n}\r\n"]}
@@ -0,0 +1,15 @@
1
+ import { FeatureAttributeDrivenSymbology } from "../../internal";
2
+ /** Renderer responsible of applying the feature symbology
3
+ * @internal
4
+ */
5
+ export interface FeatureSymbologyRenderer {
6
+ isAttributeDriven(): this is FeatureAttributeDrivenSymbology;
7
+ activeGeometryType: string;
8
+ }
9
+ /** Enables symbology rendering on a Feature renderer
10
+ * @internal
11
+ */
12
+ export interface FeatureSymbolizedRenderer {
13
+ symbolRenderer: FeatureSymbologyRenderer;
14
+ }
15
+ //# sourceMappingURL=FeatureSymbologyRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeatureSymbologyRenderer.d.ts","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/FeatureSymbologyRenderer.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,+BAA+B,EAAE,MAAM,gBAAgB,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,iBAAiB,IAAI,IAAI,IAAI,+BAA+B,CAAC;IAC7D,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,cAAc,EAAE,wBAAwB,CAAC;CAC1C"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ //# sourceMappingURL=FeatureSymbologyRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeatureSymbologyRenderer.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/FeatureSymbologyRenderer.ts"],"names":[],"mappings":";AAAA;;;+FAG+F","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\r\nimport { FeatureAttributeDrivenSymbology } from \"../../internal\";\r\n\r\n/** Renderer responsible of applying the feature symbology\r\n * @internal\r\n */\r\nexport interface FeatureSymbologyRenderer {\r\n isAttributeDriven(): this is FeatureAttributeDrivenSymbology;\r\n activeGeometryType: string;\r\n}\r\n\r\n/** Enables symbology rendering on a Feature renderer\r\n * @internal\r\n */\r\nexport interface FeatureSymbolizedRenderer {\r\n symbolRenderer: FeatureSymbologyRenderer;\r\n}\r\n\r\n"]}
@@ -136,7 +136,7 @@ class WmsMapLayerImageryProvider extends internal_1.MapLayerImageryProvider {
136
136
  // For instance, for EPSG:4326 the axis ordering is latitude/longitude, or north/east.
137
137
  // WMS 1.1.0 always requires the axis ordering to be longitude/latitude. *sigh*
138
138
  if (this._capabilities !== undefined) {
139
- bboxString = this.getEPSG4326ExtentString(row, column, zoomLevel, this._capabilities?.isVersion13); // lat/long ordering
139
+ bboxString = this.getEPSG4326TileExtentString(row, column, zoomLevel, this._capabilities?.isVersion13); // lat/long ordering
140
140
  crsString = "EPSG%3A4326";
141
141
  }
142
142
  }
@@ -1 +1 @@
1
- {"version":3,"file":"WmsMapLayerImageryProvider.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/WmsMapLayerImageryProvider.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\nimport { IModelStatus } from \"@itwin/core-bentley\";\r\nimport { Cartographic, ImageMapLayerSettings, MapSubLayerSettings, ServerError } from \"@itwin/core-common\";\r\nimport { Point2d } from \"@itwin/core-geometry\";\r\nimport {\r\n ImageryMapTileTree, MapCartoRectangle, MapLayerImageryProvider, MapLayerImageryProviderStatus, QuadId, WmsCapabilities,\r\n WmsCapability, WmsUtilities,\r\n} from \"../../internal\";\r\n\r\n// eslint-disable-next-line prefer-const\r\nlet doToolTips = true;\r\n\r\nconst scratchPoint2d = Point2d.createZero();\r\n\r\n/** @internal */\r\nexport interface WmsCrsSupport {\r\n support3857: boolean;\r\n support4326: boolean;\r\n}\r\n\r\n/** @internal */\r\nexport class WmsMapLayerImageryProvider extends MapLayerImageryProvider {\r\n private _capabilities?: WmsCapabilities;\r\n private _allLayersRange?: MapCartoRectangle;\r\n private _subLayerRanges = new Map<string, MapCartoRectangle>();\r\n private _baseUrl: string;\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private _crsSupport: WmsCrsSupport|undefined;\r\n\r\n constructor(settings: ImageMapLayerSettings) {\r\n super(settings, false);\r\n this._baseUrl = WmsUtilities.getBaseUrl(this._settings.url);\r\n }\r\n\r\n public override async initialize(): Promise<void> {\r\n try {\r\n const credentials = (this._settings.userName && this._settings.password ? {user: this._settings.userName, password: this._settings.password} : undefined);\r\n this._capabilities = await WmsCapabilities.create(this._baseUrl, credentials);\r\n if (undefined !== this._capabilities) {\r\n this._allLayersRange = this._capabilities.cartoRange;\r\n if (this._capabilities.layer && Array.isArray(this._capabilities.layer.subLayers)) {\r\n const mapCartoRanges = ((subLayer: WmsCapability.SubLayer) => {\r\n if (Array.isArray(subLayer.children))\r\n subLayer.children.forEach((child) => mapCartoRanges(child));\r\n else if (subLayer.cartoRange)\r\n this._subLayerRanges.set(subLayer.name, subLayer.cartoRange);\r\n });\r\n this._capabilities.layer.subLayers.forEach((subLayer) => mapCartoRanges(subLayer));\r\n this._settings.subLayers.forEach((subLayer) => {\r\n if (subLayer.isNamed && this._settings.isSubLayerVisible(subLayer)) {\r\n const subLayerRange = this._subLayerRanges.get(subLayer.name);\r\n if (subLayerRange)\r\n if (this.cartoRange)\r\n this.cartoRange.extendRange(subLayerRange);\r\n else\r\n this.cartoRange = subLayerRange.clone();\r\n }\r\n });\r\n }\r\n\r\n if (!this.cartoRange)\r\n this.cartoRange = this._allLayersRange;\r\n\r\n this._crsSupport = this.getCrsSupport();\r\n }\r\n } catch (error: any) {\r\n // Don't throw error if unauthorized status:\r\n // We want the tile tree to be created, so that end-user can get feedback on which layer is missing credentials.\r\n // When credentials will be provided, a new provider will be created, and initialization should be fine.\r\n if (error?.status === 401) {\r\n this.setStatus(MapLayerImageryProviderStatus.RequireAuth);\r\n } else {\r\n throw new ServerError(IModelStatus.ValidationFailed, \"\");\r\n }\r\n }\r\n }\r\n\r\n private getVisibleLayerString() {\r\n const layerNames = this.getVisibleLayers().map((layer)=>layer.name);\r\n return layerNames.join(\"%2C\");\r\n }\r\n\r\n private getVisibleLayers(): MapSubLayerSettings[] {\r\n return this._settings.subLayers.filter((subLayer) => this._settings.isSubLayerVisible(subLayer) && subLayer.isNamed);\r\n }\r\n\r\n private getVisibleLayersSrs() {\r\n const visibleLayers = this.getVisibleLayers();\r\n const visibleLayerNames = visibleLayers.map((layer) => layer.name);\r\n return this._capabilities?.getSubLayersCrs(visibleLayerNames);\r\n }\r\n\r\n private getQueryableLayers(): string[] {\r\n const layerNames = new Array<string>();\r\n const getQueryableSubLayers = ((subLayer: WmsCapability.SubLayer) => {\r\n if (!subLayer)\r\n return;\r\n\r\n if (subLayer.queryable)\r\n layerNames.push(subLayer.name);\r\n\r\n subLayer.children?.forEach((childSubLayer) => getQueryableSubLayers(childSubLayer));\r\n });\r\n\r\n this._capabilities?.layer?.subLayers?.forEach((subLayer) => getQueryableSubLayers(subLayer));\r\n return layerNames;\r\n }\r\n\r\n private getVisibleQueryableLayersString(): string {\r\n const layers = new Array<string>();\r\n const queryable = this.getQueryableLayers();\r\n const visibleLayerNames = this.getVisibleLayers().map((layer) => layer.name);\r\n queryable.forEach((layer: string) => {\r\n if (visibleLayerNames.includes(layer))\r\n layers.push(layer);\r\n });\r\n\r\n return layers.join(\"%2C\");\r\n }\r\n\r\n public getCrsSupport(): WmsCrsSupport {\r\n const layersCrs = this.getVisibleLayersSrs();\r\n\r\n let support3857: boolean|undefined;\r\n let support4326: boolean|undefined;\r\n if (layersCrs) {\r\n for (const [_layerName, crs] of layersCrs) {\r\n if (crs.find((layerCrs) => layerCrs.includes(\"3857\")) === undefined ) {\r\n support3857 = false;\r\n } else if (support3857 === undefined) {\r\n support3857 = true;\r\n }\r\n\r\n if (crs.find((layerCrs) => layerCrs.includes(\"4326\")) === undefined ) {\r\n support4326 = false;\r\n } else if (support4326 === undefined) {\r\n support4326 = true;\r\n }\r\n }\r\n }\r\n\r\n return {support3857: support3857 ?? false, support4326: support4326 ?? false};\r\n }\r\n\r\n // WMS standard requires 'TRUE' or 'FALSE' (case sensitive) values.\r\n public override get transparentBackgroundString(): string { return this._settings.transparentBackground ? \"TRUE\" : \"FALSE\"; }\r\n\r\n // construct the Url from the desired Tile\r\n public async constructUrl(row: number, column: number, zoomLevel: number): Promise<string> {\r\n\r\n let bboxString =\"\";\r\n let crsString =\"\";\r\n\r\n // We support 2 SRS: EPSG:3857 and EPSG:4326, we prefer EPSG:3857.\r\n if (this._crsSupport?.support3857) {\r\n bboxString = this.getEPSG3857ExtentString(row, column, zoomLevel);\r\n crsString= \"EPSG%3A3857\";\r\n } else if (this._crsSupport?.support4326) {\r\n // The WMS 1.3.0 specification mandates using the axis ordering as defined in the EPSG database.\r\n // For instance, for EPSG:4326 the axis ordering is latitude/longitude, or north/east.\r\n // WMS 1.1.0 always requires the axis ordering to be longitude/latitude. *sigh*\r\n if (this._capabilities !== undefined) {\r\n bboxString = this.getEPSG4326ExtentString(row, column, zoomLevel, this._capabilities?.isVersion13); // lat/long ordering\r\n crsString= \"EPSG%3A4326\";\r\n }\r\n\r\n }\r\n\r\n const layerString = this.getVisibleLayerString();\r\n\r\n if (bboxString.length === 0 || crsString.length === 0 ||layerString.length === 0)\r\n return \"\";\r\n\r\n const crsParamName = this._capabilities?.isVersion13 ? \"CRS\" : \"SRS\";\r\n\r\n const tmpUrl = `${this._baseUrl}?SERVICE=WMS&VERSION=${this._capabilities?.version}&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=${this.transparentBackgroundString}&LAYERS=${layerString}&WIDTH=${this.tileSize}&HEIGHT=${this.tileSize}&${crsParamName}=${crsString}&STYLES=&BBOX=${bboxString}`;\r\n return this.appendCustomParams(tmpUrl);\r\n }\r\n\r\n public override async getToolTip(strings: string[], quadId: QuadId, carto: Cartographic, tree: ImageryMapTileTree): Promise<void> {\r\n await super.getToolTip(strings, quadId, carto, tree);\r\n const infoFormats = this._capabilities?.featureInfoFormats;\r\n if (!doToolTips || undefined === infoFormats)\r\n return;\r\n let formatString = infoFormats.find((format) => format === \"text/html\");\r\n if (!formatString)\r\n formatString = infoFormats[0];\r\n\r\n const bboxString = this.getEPSG3857ExtentString(quadId.row, quadId.column, quadId.level);\r\n const layerString = this.getVisibleQueryableLayersString();\r\n if (layerString.length === 0)\r\n return;\r\n const rectangle = tree.getTileRectangle(quadId);\r\n const fraction = rectangle.worldToLocal(Point2d.create(carto.longitude, carto.latitude, scratchPoint2d))!;\r\n const x = Math.floor(.5 + fraction.x * this.tileSize);\r\n const y = Math.floor(.5 + (1.0 - fraction.y) * this.tileSize);\r\n const coordinateString = this._capabilities?.isVersion13 ? `&i=${x}&j=${y}` : `&x=${x}&y=${y}`;\r\n const crsParamName = this._capabilities?.isVersion13 ? \"CRS\" : \"SRS\";\r\n let getFeatureUrl = `${this._baseUrl}?SERVICE=WMS&VERSION=${this._capabilities?.version}&REQUEST=GetFeatureInfo&LAYERS=${layerString}&WIDTH=${this.tileSize}&HEIGHT=${this.tileSize}&${crsParamName}=EPSG%3A3857&BBOX=${bboxString}&QUERY_LAYERS=${layerString}${coordinateString}&info_format=${formatString}`;\r\n getFeatureUrl = this.appendCustomParams(getFeatureUrl);\r\n return this.toolTipFromUrl(strings, getFeatureUrl);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"WmsMapLayerImageryProvider.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/WmsMapLayerImageryProvider.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\nimport { IModelStatus } from \"@itwin/core-bentley\";\r\nimport { Cartographic, ImageMapLayerSettings, MapSubLayerSettings, ServerError } from \"@itwin/core-common\";\r\nimport { Point2d } from \"@itwin/core-geometry\";\r\nimport {\r\n ImageryMapTileTree, MapCartoRectangle, MapLayerImageryProvider, MapLayerImageryProviderStatus, QuadId, WmsCapabilities,\r\n WmsCapability, WmsUtilities,\r\n} from \"../../internal\";\r\n\r\n// eslint-disable-next-line prefer-const\r\nlet doToolTips = true;\r\n\r\nconst scratchPoint2d = Point2d.createZero();\r\n\r\n/** @internal */\r\nexport interface WmsCrsSupport {\r\n support3857: boolean;\r\n support4326: boolean;\r\n}\r\n\r\n/** @internal */\r\nexport class WmsMapLayerImageryProvider extends MapLayerImageryProvider {\r\n private _capabilities?: WmsCapabilities;\r\n private _allLayersRange?: MapCartoRectangle;\r\n private _subLayerRanges = new Map<string, MapCartoRectangle>();\r\n private _baseUrl: string;\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private _crsSupport: WmsCrsSupport|undefined;\r\n\r\n constructor(settings: ImageMapLayerSettings) {\r\n super(settings, false);\r\n this._baseUrl = WmsUtilities.getBaseUrl(this._settings.url);\r\n }\r\n\r\n public override async initialize(): Promise<void> {\r\n try {\r\n const credentials = (this._settings.userName && this._settings.password ? {user: this._settings.userName, password: this._settings.password} : undefined);\r\n this._capabilities = await WmsCapabilities.create(this._baseUrl, credentials);\r\n if (undefined !== this._capabilities) {\r\n this._allLayersRange = this._capabilities.cartoRange;\r\n if (this._capabilities.layer && Array.isArray(this._capabilities.layer.subLayers)) {\r\n const mapCartoRanges = ((subLayer: WmsCapability.SubLayer) => {\r\n if (Array.isArray(subLayer.children))\r\n subLayer.children.forEach((child) => mapCartoRanges(child));\r\n else if (subLayer.cartoRange)\r\n this._subLayerRanges.set(subLayer.name, subLayer.cartoRange);\r\n });\r\n this._capabilities.layer.subLayers.forEach((subLayer) => mapCartoRanges(subLayer));\r\n this._settings.subLayers.forEach((subLayer) => {\r\n if (subLayer.isNamed && this._settings.isSubLayerVisible(subLayer)) {\r\n const subLayerRange = this._subLayerRanges.get(subLayer.name);\r\n if (subLayerRange)\r\n if (this.cartoRange)\r\n this.cartoRange.extendRange(subLayerRange);\r\n else\r\n this.cartoRange = subLayerRange.clone();\r\n }\r\n });\r\n }\r\n\r\n if (!this.cartoRange)\r\n this.cartoRange = this._allLayersRange;\r\n\r\n this._crsSupport = this.getCrsSupport();\r\n }\r\n } catch (error: any) {\r\n // Don't throw error if unauthorized status:\r\n // We want the tile tree to be created, so that end-user can get feedback on which layer is missing credentials.\r\n // When credentials will be provided, a new provider will be created, and initialization should be fine.\r\n if (error?.status === 401) {\r\n this.setStatus(MapLayerImageryProviderStatus.RequireAuth);\r\n } else {\r\n throw new ServerError(IModelStatus.ValidationFailed, \"\");\r\n }\r\n }\r\n }\r\n\r\n private getVisibleLayerString() {\r\n const layerNames = this.getVisibleLayers().map((layer)=>layer.name);\r\n return layerNames.join(\"%2C\");\r\n }\r\n\r\n private getVisibleLayers(): MapSubLayerSettings[] {\r\n return this._settings.subLayers.filter((subLayer) => this._settings.isSubLayerVisible(subLayer) && subLayer.isNamed);\r\n }\r\n\r\n private getVisibleLayersSrs() {\r\n const visibleLayers = this.getVisibleLayers();\r\n const visibleLayerNames = visibleLayers.map((layer) => layer.name);\r\n return this._capabilities?.getSubLayersCrs(visibleLayerNames);\r\n }\r\n\r\n private getQueryableLayers(): string[] {\r\n const layerNames = new Array<string>();\r\n const getQueryableSubLayers = ((subLayer: WmsCapability.SubLayer) => {\r\n if (!subLayer)\r\n return;\r\n\r\n if (subLayer.queryable)\r\n layerNames.push(subLayer.name);\r\n\r\n subLayer.children?.forEach((childSubLayer) => getQueryableSubLayers(childSubLayer));\r\n });\r\n\r\n this._capabilities?.layer?.subLayers?.forEach((subLayer) => getQueryableSubLayers(subLayer));\r\n return layerNames;\r\n }\r\n\r\n private getVisibleQueryableLayersString(): string {\r\n const layers = new Array<string>();\r\n const queryable = this.getQueryableLayers();\r\n const visibleLayerNames = this.getVisibleLayers().map((layer) => layer.name);\r\n queryable.forEach((layer: string) => {\r\n if (visibleLayerNames.includes(layer))\r\n layers.push(layer);\r\n });\r\n\r\n return layers.join(\"%2C\");\r\n }\r\n\r\n public getCrsSupport(): WmsCrsSupport {\r\n const layersCrs = this.getVisibleLayersSrs();\r\n\r\n let support3857: boolean|undefined;\r\n let support4326: boolean|undefined;\r\n if (layersCrs) {\r\n for (const [_layerName, crs] of layersCrs) {\r\n if (crs.find((layerCrs) => layerCrs.includes(\"3857\")) === undefined ) {\r\n support3857 = false;\r\n } else if (support3857 === undefined) {\r\n support3857 = true;\r\n }\r\n\r\n if (crs.find((layerCrs) => layerCrs.includes(\"4326\")) === undefined ) {\r\n support4326 = false;\r\n } else if (support4326 === undefined) {\r\n support4326 = true;\r\n }\r\n }\r\n }\r\n\r\n return {support3857: support3857 ?? false, support4326: support4326 ?? false};\r\n }\r\n\r\n // WMS standard requires 'TRUE' or 'FALSE' (case sensitive) values.\r\n public override get transparentBackgroundString(): string { return this._settings.transparentBackground ? \"TRUE\" : \"FALSE\"; }\r\n\r\n // construct the Url from the desired Tile\r\n public async constructUrl(row: number, column: number, zoomLevel: number): Promise<string> {\r\n\r\n let bboxString =\"\";\r\n let crsString =\"\";\r\n\r\n // We support 2 SRS: EPSG:3857 and EPSG:4326, we prefer EPSG:3857.\r\n if (this._crsSupport?.support3857) {\r\n bboxString = this.getEPSG3857ExtentString(row, column, zoomLevel);\r\n crsString= \"EPSG%3A3857\";\r\n } else if (this._crsSupport?.support4326) {\r\n // The WMS 1.3.0 specification mandates using the axis ordering as defined in the EPSG database.\r\n // For instance, for EPSG:4326 the axis ordering is latitude/longitude, or north/east.\r\n // WMS 1.1.0 always requires the axis ordering to be longitude/latitude. *sigh*\r\n if (this._capabilities !== undefined) {\r\n bboxString = this.getEPSG4326TileExtentString(row, column, zoomLevel, this._capabilities?.isVersion13); // lat/long ordering\r\n crsString= \"EPSG%3A4326\";\r\n }\r\n\r\n }\r\n\r\n const layerString = this.getVisibleLayerString();\r\n\r\n if (bboxString.length === 0 || crsString.length === 0 ||layerString.length === 0)\r\n return \"\";\r\n\r\n const crsParamName = this._capabilities?.isVersion13 ? \"CRS\" : \"SRS\";\r\n\r\n const tmpUrl = `${this._baseUrl}?SERVICE=WMS&VERSION=${this._capabilities?.version}&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=${this.transparentBackgroundString}&LAYERS=${layerString}&WIDTH=${this.tileSize}&HEIGHT=${this.tileSize}&${crsParamName}=${crsString}&STYLES=&BBOX=${bboxString}`;\r\n return this.appendCustomParams(tmpUrl);\r\n }\r\n\r\n public override async getToolTip(strings: string[], quadId: QuadId, carto: Cartographic, tree: ImageryMapTileTree): Promise<void> {\r\n await super.getToolTip(strings, quadId, carto, tree);\r\n const infoFormats = this._capabilities?.featureInfoFormats;\r\n if (!doToolTips || undefined === infoFormats)\r\n return;\r\n let formatString = infoFormats.find((format) => format === \"text/html\");\r\n if (!formatString)\r\n formatString = infoFormats[0];\r\n\r\n const bboxString = this.getEPSG3857ExtentString(quadId.row, quadId.column, quadId.level);\r\n const layerString = this.getVisibleQueryableLayersString();\r\n if (layerString.length === 0)\r\n return;\r\n const rectangle = tree.getTileRectangle(quadId);\r\n const fraction = rectangle.worldToLocal(Point2d.create(carto.longitude, carto.latitude, scratchPoint2d))!;\r\n const x = Math.floor(.5 + fraction.x * this.tileSize);\r\n const y = Math.floor(.5 + (1.0 - fraction.y) * this.tileSize);\r\n const coordinateString = this._capabilities?.isVersion13 ? `&i=${x}&j=${y}` : `&x=${x}&y=${y}`;\r\n const crsParamName = this._capabilities?.isVersion13 ? \"CRS\" : \"SRS\";\r\n let getFeatureUrl = `${this._baseUrl}?SERVICE=WMS&VERSION=${this._capabilities?.version}&REQUEST=GetFeatureInfo&LAYERS=${layerString}&WIDTH=${this.tileSize}&HEIGHT=${this.tileSize}&${crsParamName}=EPSG%3A3857&BBOX=${bboxString}&QUERY_LAYERS=${layerString}${coordinateString}&info_format=${formatString}`;\r\n getFeatureUrl = this.appendCustomParams(getFeatureUrl);\r\n return this.toolTipFromUrl(strings, getFeatureUrl);\r\n }\r\n}\r\n"]}
@@ -13,6 +13,13 @@ export declare enum MapLayerImageryProviderStatus {
13
13
  Valid = 0,
14
14
  RequireAuth = 1
15
15
  }
16
+ /** @internal */
17
+ export interface WGS84Extent {
18
+ longitudeLeft: number;
19
+ longitudeRight: number;
20
+ latitudeTop: number;
21
+ latitudeBottom: number;
22
+ }
16
23
  /** Abstract class for map layer imagery providers.
17
24
  * Map layer imagery providers request and provide tile images and other data. Each map layer from a separate source needs its own imagery provider object.
18
25
  * @beta
@@ -122,7 +129,9 @@ export declare abstract class MapLayerImageryProvider {
122
129
  /** @internal */
123
130
  protected setRequestAuthorization(headers: Headers): void;
124
131
  /** @internal */
125
- makeTileRequest(url: string): Promise<Response>;
132
+ makeTileRequest(url: string, timeoutMs?: number): Promise<Response>;
133
+ /** @internal */
134
+ makeRequest(url: string, timeoutMs?: number): Promise<Response>;
126
135
  /** Returns a map layer tile at the specified settings. */
127
136
  loadTile(row: number, column: number, zoomLevel: number): Promise<ImageSource | undefined>;
128
137
  /** @internal */
@@ -162,12 +171,7 @@ export declare abstract class MapLayerImageryProvider {
162
171
  * @param zoomLevel Desired zoom level of the tile
163
172
  * @internal
164
173
  */
165
- getEPSG4326Extent(row: number, column: number, zoomLevel: number): {
166
- longitudeLeft: number;
167
- longitudeRight: number;
168
- latitudeTop: number;
169
- latitudeBottom: number;
170
- };
174
+ getEPSG4326Extent(row: number, column: number, zoomLevel: number): WGS84Extent;
171
175
  /**
172
176
  * Get the bounding box/extents of a tile in EPSG:3857 format.
173
177
  * @param row Row of the tile
@@ -184,9 +188,10 @@ export declare abstract class MapLayerImageryProvider {
184
188
  /** @internal */
185
189
  getEPSG3857ExtentString(row: number, column: number, zoomLevel: number): string;
186
190
  /** @internal */
187
- getEPSG4326ExtentString(row: number, column: number, zoomLevel: number, latLongAxisOrdering: boolean): string;
191
+ getEPSG4326TileExtentString(row: number, column: number, zoomLevel: number, latLongAxisOrdering: boolean): string;
192
+ /** @internal */
193
+ getEPSG4326ExtentString(tileExtent: WGS84Extent, latLongAxisOrdering: boolean): string;
188
194
  /** Append custom parameters for settings to provided URL object.
189
- * Make sure custom parameters do no override query parameters already part of the URL (lower case comparison)
190
195
  * @internal
191
196
  */
192
197
  protected appendCustomParams(url: string): string;
@@ -1 +1 @@
1
- {"version":3,"file":"MapLayerImageryProvider.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerImageryProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MapLayerImageryProvider.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerImageryProvider.ts"],"names":[],"mappings":"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"}
@@ -188,7 +188,7 @@ class MapLayerImageryProvider {
188
188
  }
189
189
  }
190
190
  /** @internal */
191
- async makeTileRequest(url) {
191
+ async makeTileRequest(url, timeoutMs) {
192
192
  // We want to complete the first request before letting other requests go;
193
193
  // this done to avoid flooding server with requests missing credentials
194
194
  if (!this._firstRequestPromise)
@@ -197,28 +197,7 @@ class MapLayerImageryProvider {
197
197
  await this._firstRequestPromise;
198
198
  let response;
199
199
  try {
200
- let headers;
201
- let hasCreds = false;
202
- if (this._settings.userName && this._settings.password) {
203
- hasCreds = true;
204
- headers = new Headers();
205
- this.setRequestAuthorization(headers);
206
- }
207
- response = await fetch(url, {
208
- method: "GET",
209
- headers,
210
- credentials: this._includeUserCredentials ? "include" : undefined,
211
- });
212
- if (response.status === 401
213
- && (0, utils_1.headersIncludeAuthMethod)(response.headers, ["ntlm", "negotiate"])
214
- && !this._includeUserCredentials
215
- && !hasCreds) {
216
- // We got a http 401 challenge, lets try again with SSO enabled (i.e. Windows Authentication)
217
- response = await fetch(url, { method: "GET", credentials: "include" });
218
- if (response.status === 200) {
219
- this._includeUserCredentials = true; // avoid going through 401 challenges over and over
220
- }
221
- }
200
+ response = await this.makeRequest(url, timeoutMs);
222
201
  }
223
202
  finally {
224
203
  this.onFirstRequestCompleted.raiseEvent();
@@ -227,6 +206,39 @@ class MapLayerImageryProvider {
227
206
  throw new Error("fetch call failed");
228
207
  return response;
229
208
  }
209
+ /** @internal */
210
+ async makeRequest(url, timeoutMs) {
211
+ let response;
212
+ let headers;
213
+ let hasCreds = false;
214
+ if (this._settings.userName && this._settings.password) {
215
+ hasCreds = true;
216
+ headers = new Headers();
217
+ this.setRequestAuthorization(headers);
218
+ }
219
+ const opts = {
220
+ method: "GET",
221
+ headers,
222
+ credentials: this._includeUserCredentials ? "include" : undefined,
223
+ };
224
+ if (timeoutMs !== undefined)
225
+ (0, utils_1.setRequestTimeout)(opts, timeoutMs);
226
+ response = await fetch(url, opts);
227
+ if (response.status === 401
228
+ && (0, utils_1.headersIncludeAuthMethod)(response.headers, ["ntlm", "negotiate"])
229
+ && !this._includeUserCredentials
230
+ && !hasCreds) {
231
+ // Removed the previous headers and make sure "include" credentials is set
232
+ opts.headers = undefined;
233
+ opts.credentials = "include";
234
+ // We got a http 401 challenge, lets try again with SSO enabled (i.e. Windows Authentication)
235
+ response = await fetch(url, opts);
236
+ if (response.status === 200) {
237
+ this._includeUserCredentials = true; // avoid going through 401 challenges over and over
238
+ }
239
+ }
240
+ return response;
241
+ }
230
242
  /** Returns a map layer tile at the specified settings. */
231
243
  async loadTile(row, column, zoomLevel) {
232
244
  try {
@@ -362,57 +374,28 @@ class MapLayerImageryProvider {
362
374
  return `${tileExtent.left.toFixed(2)},${tileExtent.bottom.toFixed(2)},${tileExtent.right.toFixed(2)},${tileExtent.top.toFixed(2)}`;
363
375
  }
364
376
  /** @internal */
365
- getEPSG4326ExtentString(row, column, zoomLevel, latLongAxisOrdering) {
377
+ getEPSG4326TileExtentString(row, column, zoomLevel, latLongAxisOrdering) {
366
378
  const tileExtent = this.getEPSG4326Extent(row, column, zoomLevel);
379
+ return this.getEPSG4326ExtentString(tileExtent, latLongAxisOrdering);
380
+ }
381
+ /** @internal */
382
+ getEPSG4326ExtentString(tileExtent, latLongAxisOrdering) {
367
383
  if (latLongAxisOrdering) {
368
- return `${tileExtent.latitudeBottom.toFixed(8)},${tileExtent.longitudeLeft.toFixed(8)},
369
- ${tileExtent.latitudeTop.toFixed(8)},${tileExtent.longitudeRight.toFixed(8)}`;
384
+ return `${tileExtent.latitudeBottom.toFixed(8)},${tileExtent.longitudeLeft.toFixed(8)},${tileExtent.latitudeTop.toFixed(8)},${tileExtent.longitudeRight.toFixed(8)}`;
370
385
  }
371
386
  else {
372
- return `${tileExtent.longitudeLeft.toFixed(8)},${tileExtent.latitudeBottom.toFixed(8)},
373
- ${tileExtent.longitudeRight.toFixed(8)},${tileExtent.latitudeTop.toFixed(8)}`;
387
+ return `${tileExtent.longitudeLeft.toFixed(8)},${tileExtent.latitudeBottom.toFixed(8)},${tileExtent.longitudeRight.toFixed(8)},${tileExtent.latitudeTop.toFixed(8)}`;
374
388
  }
375
389
  }
376
390
  /** Append custom parameters for settings to provided URL object.
377
- * Make sure custom parameters do no override query parameters already part of the URL (lower case comparison)
378
391
  * @internal
379
392
  */
380
393
  appendCustomParams(url) {
381
394
  if (!this._settings.savedQueryParams && !this._settings.unsavedQueryParams)
382
395
  return url;
383
- // create a lower-case array of keys
384
- const currentParams = [];
385
- const currentUrl = new URL(url);
386
- currentUrl.searchParams.forEach((_value, key, _parent) => {
387
- currentParams.push(key.toLowerCase());
388
- });
389
- const urlParamsFromIndexArray = (indexArray, result) => {
390
- const urlParams = (result ? result : new URLSearchParams());
391
- if (!indexArray)
392
- return urlParams;
393
- Object.keys(indexArray).forEach((key) => {
394
- if (!currentParams.includes(key.toLowerCase()))
395
- urlParams.append(key, indexArray[key]);
396
- });
397
- return urlParams;
398
- };
399
- const params = urlParamsFromIndexArray(this._settings.savedQueryParams);
400
- urlParamsFromIndexArray(this._settings.unsavedQueryParams, params);
401
- const getSeparator = (u) => {
402
- let separator = "&";
403
- if (u.includes("?")) {
404
- if (u.endsWith("?"))
405
- separator = "";
406
- }
407
- else {
408
- separator = "?";
409
- }
410
- return separator;
411
- };
412
- if (params.size > 0) {
413
- url = `${url}${getSeparator(url)}${params.toString()}`;
414
- }
415
- return url;
396
+ let tmpUrl = (0, internal_1.appendQueryParams)(url, this._settings.savedQueryParams);
397
+ tmpUrl = (0, internal_1.appendQueryParams)(tmpUrl, this._settings.unsavedQueryParams);
398
+ return tmpUrl;
416
399
  }
417
400
  }
418
401
  exports.MapLayerImageryProvider = MapLayerImageryProvider;