@itwin/core-frontend 4.1.0-dev.51 → 4.1.0-dev.56

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 (139) hide show
  1. package/lib/cjs/BackgroundMapGeometry.d.ts +1 -0
  2. package/lib/cjs/BackgroundMapGeometry.d.ts.map +1 -1
  3. package/lib/cjs/BackgroundMapGeometry.js +29 -0
  4. package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
  5. package/lib/cjs/HitDetail.d.ts.map +1 -1
  6. package/lib/cjs/HitDetail.js +1 -1
  7. package/lib/cjs/HitDetail.js.map +1 -1
  8. package/lib/cjs/IModelConnection.d.ts +22 -4
  9. package/lib/cjs/IModelConnection.d.ts.map +1 -1
  10. package/lib/cjs/IModelConnection.js +32 -8
  11. package/lib/cjs/IModelConnection.js.map +1 -1
  12. package/lib/cjs/Viewport.d.ts +5 -5
  13. package/lib/cjs/Viewport.d.ts.map +1 -1
  14. package/lib/cjs/Viewport.js +6 -6
  15. package/lib/cjs/Viewport.js.map +1 -1
  16. package/lib/cjs/tile/internal.d.ts +4 -0
  17. package/lib/cjs/tile/internal.d.ts.map +1 -1
  18. package/lib/cjs/tile/internal.js +4 -0
  19. package/lib/cjs/tile/internal.js.map +1 -1
  20. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts +2 -0
  21. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts.map +1 -1
  22. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js +2 -0
  23. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  24. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +55 -2
  25. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  26. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +96 -23
  27. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  28. package/lib/cjs/tile/map/ImageryProviders/ArcGisGeometryReaderJSON.d.ts +15 -0
  29. package/lib/cjs/tile/map/ImageryProviders/ArcGisGeometryReaderJSON.d.ts.map +1 -0
  30. package/lib/cjs/tile/map/ImageryProviders/ArcGisGeometryReaderJSON.js +59 -0
  31. package/lib/cjs/tile/map/ImageryProviders/ArcGisGeometryReaderJSON.js.map +1 -0
  32. package/lib/cjs/tile/map/ImageryProviders/ArcGisGeometryRenderer.d.ts +44 -0
  33. package/lib/cjs/tile/map/ImageryProviders/ArcGisGeometryRenderer.d.ts.map +1 -0
  34. package/lib/cjs/tile/map/ImageryProviders/ArcGisGeometryRenderer.js +126 -0
  35. package/lib/cjs/tile/map/ImageryProviders/ArcGisGeometryRenderer.js.map +1 -0
  36. package/lib/cjs/tile/map/ImageryProviders/ArcGisGraphicsRenderer.d.ts +26 -0
  37. package/lib/cjs/tile/map/ImageryProviders/ArcGisGraphicsRenderer.d.ts.map +1 -0
  38. package/lib/cjs/tile/map/ImageryProviders/ArcGisGraphicsRenderer.js +134 -0
  39. package/lib/cjs/tile/map/ImageryProviders/ArcGisGraphicsRenderer.js.map +1 -0
  40. package/lib/cjs/tile/map/ImageryProviders/WebMercator.d.ts +6 -0
  41. package/lib/cjs/tile/map/ImageryProviders/WebMercator.d.ts.map +1 -0
  42. package/lib/cjs/tile/map/ImageryProviders/WebMercator.js +22 -0
  43. package/lib/cjs/tile/map/ImageryProviders/WebMercator.js.map +1 -0
  44. package/lib/cjs/tile/map/ImageryTileTree.d.ts +2 -1
  45. package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
  46. package/lib/cjs/tile/map/ImageryTileTree.js +2 -2
  47. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  48. package/lib/cjs/tile/map/MapFeatureInfo.d.ts +67 -7
  49. package/lib/cjs/tile/map/MapFeatureInfo.d.ts.map +1 -1
  50. package/lib/cjs/tile/map/MapFeatureInfo.js +16 -2
  51. package/lib/cjs/tile/map/MapFeatureInfo.js.map +1 -1
  52. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +4 -1
  53. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  54. package/lib/cjs/tile/map/MapLayerImageryProvider.js +3 -1
  55. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  56. package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
  57. package/lib/cjs/tile/map/MapTile.js +9 -1
  58. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  59. package/lib/cjs/tile/map/MapTileLoader.d.ts.map +1 -1
  60. package/lib/cjs/tile/map/MapTileLoader.js +1 -15
  61. package/lib/cjs/tile/map/MapTileLoader.js.map +1 -1
  62. package/lib/cjs/tile/map/MapTileTree.d.ts +12 -3
  63. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  64. package/lib/cjs/tile/map/MapTileTree.js +33 -20
  65. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  66. package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts +2 -3
  67. package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  68. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js +3 -4
  69. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  70. package/lib/esm/BackgroundMapGeometry.d.ts +1 -0
  71. package/lib/esm/BackgroundMapGeometry.d.ts.map +1 -1
  72. package/lib/esm/BackgroundMapGeometry.js +29 -0
  73. package/lib/esm/BackgroundMapGeometry.js.map +1 -1
  74. package/lib/esm/HitDetail.d.ts.map +1 -1
  75. package/lib/esm/HitDetail.js +1 -1
  76. package/lib/esm/HitDetail.js.map +1 -1
  77. package/lib/esm/IModelConnection.d.ts +22 -4
  78. package/lib/esm/IModelConnection.d.ts.map +1 -1
  79. package/lib/esm/IModelConnection.js +32 -8
  80. package/lib/esm/IModelConnection.js.map +1 -1
  81. package/lib/esm/Viewport.d.ts +5 -5
  82. package/lib/esm/Viewport.d.ts.map +1 -1
  83. package/lib/esm/Viewport.js +6 -6
  84. package/lib/esm/Viewport.js.map +1 -1
  85. package/lib/esm/tile/internal.d.ts +4 -0
  86. package/lib/esm/tile/internal.d.ts.map +1 -1
  87. package/lib/esm/tile/internal.js +4 -0
  88. package/lib/esm/tile/internal.js.map +1 -1
  89. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts +2 -0
  90. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts.map +1 -1
  91. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js +2 -0
  92. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  93. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +55 -2
  94. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  95. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +96 -24
  96. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  97. package/lib/esm/tile/map/ImageryProviders/ArcGisGeometryReaderJSON.d.ts +15 -0
  98. package/lib/esm/tile/map/ImageryProviders/ArcGisGeometryReaderJSON.d.ts.map +1 -0
  99. package/lib/esm/tile/map/ImageryProviders/ArcGisGeometryReaderJSON.js +55 -0
  100. package/lib/esm/tile/map/ImageryProviders/ArcGisGeometryReaderJSON.js.map +1 -0
  101. package/lib/esm/tile/map/ImageryProviders/ArcGisGeometryRenderer.d.ts +44 -0
  102. package/lib/esm/tile/map/ImageryProviders/ArcGisGeometryRenderer.d.ts.map +1 -0
  103. package/lib/esm/tile/map/ImageryProviders/ArcGisGeometryRenderer.js +122 -0
  104. package/lib/esm/tile/map/ImageryProviders/ArcGisGeometryRenderer.js.map +1 -0
  105. package/lib/esm/tile/map/ImageryProviders/ArcGisGraphicsRenderer.d.ts +26 -0
  106. package/lib/esm/tile/map/ImageryProviders/ArcGisGraphicsRenderer.d.ts.map +1 -0
  107. package/lib/esm/tile/map/ImageryProviders/ArcGisGraphicsRenderer.js +130 -0
  108. package/lib/esm/tile/map/ImageryProviders/ArcGisGraphicsRenderer.js.map +1 -0
  109. package/lib/esm/tile/map/ImageryProviders/WebMercator.d.ts +6 -0
  110. package/lib/esm/tile/map/ImageryProviders/WebMercator.d.ts.map +1 -0
  111. package/lib/esm/tile/map/ImageryProviders/WebMercator.js +18 -0
  112. package/lib/esm/tile/map/ImageryProviders/WebMercator.js.map +1 -0
  113. package/lib/esm/tile/map/ImageryTileTree.d.ts +2 -1
  114. package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
  115. package/lib/esm/tile/map/ImageryTileTree.js +2 -2
  116. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  117. package/lib/esm/tile/map/MapFeatureInfo.d.ts +67 -7
  118. package/lib/esm/tile/map/MapFeatureInfo.d.ts.map +1 -1
  119. package/lib/esm/tile/map/MapFeatureInfo.js +14 -1
  120. package/lib/esm/tile/map/MapFeatureInfo.js.map +1 -1
  121. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +4 -1
  122. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  123. package/lib/esm/tile/map/MapLayerImageryProvider.js +3 -1
  124. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  125. package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
  126. package/lib/esm/tile/map/MapTile.js +9 -1
  127. package/lib/esm/tile/map/MapTile.js.map +1 -1
  128. package/lib/esm/tile/map/MapTileLoader.d.ts.map +1 -1
  129. package/lib/esm/tile/map/MapTileLoader.js +1 -15
  130. package/lib/esm/tile/map/MapTileLoader.js.map +1 -1
  131. package/lib/esm/tile/map/MapTileTree.d.ts +12 -3
  132. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  133. package/lib/esm/tile/map/MapTileTree.js +34 -21
  134. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  135. package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts +2 -3
  136. package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  137. package/lib/esm/tile/map/MapTiledGraphicsProvider.js +3 -4
  138. package/lib/esm/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  139. package/package.json +18 -18
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ArcGisGeometryReaderJSON = void 0;
4
+ /** @internal */
5
+ class ArcGisGeometryReaderJSON {
6
+ constructor(geometryType, renderer, relativeCoords = false) {
7
+ this._ringsOrPaths = geometryType === "esriGeometryPolyline" || geometryType === "esriGeometryPolygon";
8
+ this._points = geometryType === "esriGeometryPoint" || geometryType === "esriGeometryMultiPoint";
9
+ this._fill = geometryType === "esriGeometryPolygon";
10
+ this._renderer = renderer;
11
+ this._relativeCoords = relativeCoords;
12
+ }
13
+ async readGeometry(geometry) {
14
+ if (this._ringsOrPaths) {
15
+ await this.readRingsAndPaths(geometry, this._renderer, this._fill, this._relativeCoords);
16
+ }
17
+ else if (this._points) {
18
+ await this.readPoints(geometry, this._renderer, this._relativeCoords);
19
+ }
20
+ }
21
+ async readRingsAndPaths(geometry, renderer, fill, relativeCoords) {
22
+ let offset = 0;
23
+ const lengths = [];
24
+ const coords = [];
25
+ if (geometry?.rings) {
26
+ for (const ring of geometry?.rings) {
27
+ offset = ArcGisGeometryReaderJSON.deflateCoordinates(ring, coords, 2, offset);
28
+ lengths.push(ring.length);
29
+ }
30
+ }
31
+ else if (geometry?.paths) {
32
+ for (const path of geometry?.paths) {
33
+ offset = ArcGisGeometryReaderJSON.deflateCoordinates(path, coords, 2, offset);
34
+ lengths.push(path.length);
35
+ }
36
+ }
37
+ await renderer.renderPath(lengths, coords, fill, 2, relativeCoords);
38
+ }
39
+ async readPoints(geometry, renderer, relativeCoords) {
40
+ if (geometry) {
41
+ const lengths = [];
42
+ const coords = [geometry.x, geometry.y];
43
+ await renderer.renderPoint(lengths, coords, 2, relativeCoords);
44
+ }
45
+ }
46
+ // Converts an [[x1,y1], [x2,y2], ...] to [x1,y1,x2,y2, ...]
47
+ // stride is the number of dimensions
48
+ // https://github.com/openlayers/openlayers/blob/7a2f87caca9ddc1912d910f56eb5637445fc11f6/src/ol/geom/flat/deflate.js#L26
49
+ static deflateCoordinates(coordinates, flatCoordinates, stride, offset) {
50
+ for (let i = 0, ii = coordinates.length; i < ii; ++i) {
51
+ const coordinate = coordinates[i];
52
+ for (let j = 0; j < stride; ++j)
53
+ flatCoordinates[offset++] = coordinate[j];
54
+ }
55
+ return offset;
56
+ }
57
+ }
58
+ exports.ArcGisGeometryReaderJSON = ArcGisGeometryReaderJSON;
59
+ //# sourceMappingURL=ArcGisGeometryReaderJSON.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArcGisGeometryReaderJSON.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/ArcGisGeometryReaderJSON.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 { ArcGisGeometryRenderer } from \"../../internal\";\r\n\r\n/** @internal */\r\nexport class ArcGisGeometryReaderJSON {\r\n private _ringsOrPaths: boolean;\r\n private _points: boolean;\r\n private _fill: boolean;\r\n private _relativeCoords: boolean;\r\n private _renderer: ArcGisGeometryRenderer;\r\n\r\n public constructor(geometryType: string, renderer: ArcGisGeometryRenderer, relativeCoords = false) {\r\n this._ringsOrPaths = geometryType === \"esriGeometryPolyline\" || geometryType === \"esriGeometryPolygon\";\r\n this._points = geometryType === \"esriGeometryPoint\" || geometryType === \"esriGeometryMultiPoint\";\r\n this._fill = geometryType === \"esriGeometryPolygon\";\r\n this._renderer = renderer;\r\n this._relativeCoords = relativeCoords;\r\n }\r\n\r\n public async readGeometry(geometry: any) {\r\n if (this._ringsOrPaths) {\r\n await this.readRingsAndPaths(geometry, this._renderer, this._fill, this._relativeCoords);\r\n\r\n } else if (this._points) {\r\n await this.readPoints(geometry, this._renderer, this._relativeCoords);\r\n }\r\n }\r\n\r\n private async readRingsAndPaths(geometry: any, renderer: ArcGisGeometryRenderer, fill: boolean, relativeCoords: boolean) {\r\n let offset = 0;\r\n const lengths: number[] = [];\r\n const coords: number[] = [];\r\n\r\n if (geometry?.rings) {\r\n for (const ring of geometry?.rings) {\r\n offset = ArcGisGeometryReaderJSON.deflateCoordinates(ring, coords, 2, offset);\r\n lengths.push(ring.length);\r\n }\r\n } else if (geometry?.paths) {\r\n for (const path of geometry?.paths) {\r\n offset = ArcGisGeometryReaderJSON.deflateCoordinates(path, coords, 2, offset);\r\n lengths.push(path.length);\r\n }\r\n }\r\n await renderer.renderPath(lengths, coords, fill, 2, relativeCoords);\r\n }\r\n\r\n private async readPoints(geometry: any, renderer: ArcGisGeometryRenderer, relativeCoords: boolean) {\r\n if (geometry) {\r\n const lengths: number[] = [];\r\n const coords: number[] = [geometry.x, geometry.y];\r\n await renderer.renderPoint(lengths, coords, 2, relativeCoords);\r\n }\r\n }\r\n\r\n // Converts an [[x1,y1], [x2,y2], ...] to [x1,y1,x2,y2, ...]\r\n // stride is the number of dimensions\r\n // https://github.com/openlayers/openlayers/blob/7a2f87caca9ddc1912d910f56eb5637445fc11f6/src/ol/geom/flat/deflate.js#L26\r\n protected static deflateCoordinates(coordinates: number[][], flatCoordinates: number[], stride: number, offset: number) {\r\n for (let i = 0, ii = coordinates.length; i < ii; ++i) {\r\n const coordinate = coordinates[i];\r\n for (let j = 0; j < stride; ++j)\r\n flatCoordinates[offset++] = coordinate[j];\r\n }\r\n\r\n return offset;\r\n }\r\n}\r\n"]}
@@ -0,0 +1,44 @@
1
+ import { Transform } from "@itwin/core-geometry";
2
+ /** Interface defining minimal implementation needed to create an ArcGIS geometry renderer,
3
+ * that will ultimately be called by an [[ArcGisFeatureReader]] implementation.
4
+ * @internal
5
+ */
6
+ export interface ArcGisGeometryRenderer {
7
+ transform: Transform | undefined;
8
+ renderPath(geometryLengths: number[], geometryCoords: number[], fill: boolean, stride: number, relativeCoords: boolean): Promise<void>;
9
+ renderPoint(geometryLengths: number[], geometryCoords: number[], stride: number, relativeCoords: boolean): Promise<void>;
10
+ }
11
+ /** Internal implementation of [[ArcGisGeometryRenderer]]
12
+ * @internal
13
+ */
14
+ export declare abstract class ArcGisGeometryBaseRenderer implements ArcGisGeometryRenderer {
15
+ private _transform;
16
+ constructor(world2PixelTransform?: Transform);
17
+ get transform(): Transform | undefined;
18
+ protected abstract beginPath(): void;
19
+ protected abstract closePath(): void;
20
+ protected abstract lineTo(x: number, y: number): void;
21
+ protected abstract moveTo(x: number, y: number): void;
22
+ protected abstract stroke(): Promise<void>;
23
+ protected abstract fill(): Promise<void>;
24
+ protected abstract drawPoint(x: number, y: number): void;
25
+ protected abstract finishPoints(): Promise<void>;
26
+ /**
27
+ * Render a path on the renderer's context.
28
+ * Note: Inputs are designed based on the PBF format, to avoid any data transformation.
29
+ * @param geometryLengths Array be used to determine the start and end of each sub-path / rings. (i.e. [5,5] = two rings of 5 vertices)
30
+ * @param geometryCoords Array that linearly encodes the vertices of each sub-path of a polyline / ring of a polygon
31
+ * @param fill Indicates if the path should be filled or not.
32
+ * @param stride Dimension of each vertices (i.e. 2 or 3. 3 could be X,Y,Z, X,YM) Currently 3rd dimension is ignored.
33
+ */
34
+ renderPath(geometryLengths: number[], geometryCoords: number[], fill: boolean, stride: number, relativeCoords: boolean): Promise<void>;
35
+ /**
36
+ * Render a point on the renderer's context.
37
+ * Note: Inputs are designed based on the PBF format, to avoid any data transformation.
38
+ * @param geometryLengths Array be used to determine the start and end of each multi-point array, empty for single point.
39
+ * @param geometryCoords Array that linearly encodes vertices.
40
+ * @param stride Dimension of each vertices (i.e. 2 or 3. 3 could be X,Y,Z, X,YM) Currently 3rd dimension is ignored.
41
+ */
42
+ renderPoint(geometryLengths: number[], geometryCoords: number[], stride: number, relativeCoords: boolean): Promise<void>;
43
+ }
44
+ //# sourceMappingURL=ArcGisGeometryRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArcGisGeometryRenderer.d.ts","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/ArcGisGeometryRenderer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC;IACjC,UAAU,CAAC,eAAe,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvI,WAAW,CAAC,eAAe,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1H;AAED;;GAEG;AACH,8BAAsB,0BAA2B,YAAW,sBAAsB;IAChF,OAAO,CAAC,UAAU,CAAwB;gBAE9B,oBAAoB,CAAC,EAAE,SAAS;IAI5C,IAAW,SAAS,0BAA8B;IAElD,SAAS,CAAC,QAAQ,CAAC,SAAS,IAAI,IAAI;IACpC,SAAS,CAAC,QAAQ,CAAC,SAAS,IAAI,IAAI;IACpC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IACrD,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IACrD,SAAS,CAAC,QAAQ,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAC1C,SAAS,CAAC,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IACxC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IACxD,SAAS,CAAC,QAAQ,CAAC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAEhD;;;;;;;MAOE;IACW,UAAU,CAAC,eAAe,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO;IAiEnI;;;;;;MAME;IACW,WAAW,CAAC,eAAe,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO;CA6CtH"}
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ArcGisGeometryBaseRenderer = void 0;
4
+ /** Internal implementation of [[ArcGisGeometryRenderer]]
5
+ * @internal
6
+ */
7
+ class ArcGisGeometryBaseRenderer {
8
+ constructor(world2PixelTransform) {
9
+ this._transform = world2PixelTransform;
10
+ }
11
+ get transform() { return this._transform; }
12
+ /**
13
+ * Render a path on the renderer's context.
14
+ * Note: Inputs are designed based on the PBF format, to avoid any data transformation.
15
+ * @param geometryLengths Array be used to determine the start and end of each sub-path / rings. (i.e. [5,5] = two rings of 5 vertices)
16
+ * @param geometryCoords Array that linearly encodes the vertices of each sub-path of a polyline / ring of a polygon
17
+ * @param fill Indicates if the path should be filled or not.
18
+ * @param stride Dimension of each vertices (i.e. 2 or 3. 3 could be X,Y,Z, X,YM) Currently 3rd dimension is ignored.
19
+ */
20
+ async renderPath(geometryLengths, geometryCoords, fill, stride, relativeCoords) {
21
+ if (stride < 2 || stride > 3) {
22
+ return;
23
+ }
24
+ // Keep track of our position in the in the 'coords' array:
25
+ // Every time we loop on the 'lengths' array, the position
26
+ // to start reading vertices in the 'coords' must be the sum of all previously read vertices.
27
+ let coordsOffset = 0;
28
+ // Begin the path here.
29
+ // Note: Even though path is closed inside the 'geometryLengths' loop,
30
+ // it's import to begin the path only once.
31
+ this.beginPath();
32
+ for (const vertexCount of geometryLengths) {
33
+ let lastPtX = 0, lastPtY = 0;
34
+ for (let vertexIdx = 0; vertexIdx < vertexCount; vertexIdx++) {
35
+ let pX = geometryCoords[coordsOffset + (vertexIdx * stride)];
36
+ let pY = geometryCoords[coordsOffset + (vertexIdx * stride) + 1];
37
+ if (vertexIdx === 0) {
38
+ // first vertex is always "absolute" and must be drawn as 'moveTo' (i.e. not lineTo)
39
+ if (relativeCoords) {
40
+ lastPtX = pX;
41
+ lastPtY = pY;
42
+ }
43
+ if (this._transform) {
44
+ const transformedPoint = this._transform.multiplyPoint2d({ x: pX, y: pY });
45
+ pX = transformedPoint.x;
46
+ pY = transformedPoint.y;
47
+ }
48
+ this.moveTo(pX, pY);
49
+ }
50
+ else {
51
+ // Following vertices are relative to the previous one (sadly not really well documented by ESRI)
52
+ // typically this happens when 'coordinates quantization' is active (i.e. no client side transformation is needed)
53
+ if (relativeCoords) {
54
+ pX = lastPtX = lastPtX + pX;
55
+ pY = lastPtY = lastPtY + pY;
56
+ }
57
+ if (this._transform) {
58
+ const transformedPoint = this._transform.multiplyPoint2d({ x: pX, y: pY });
59
+ pX = transformedPoint.x;
60
+ pY = transformedPoint.y;
61
+ }
62
+ this.lineTo(pX, pY);
63
+ }
64
+ }
65
+ coordsOffset += stride * vertexCount;
66
+ if (fill) {
67
+ // ClosePath but do not 'fill' here, only at the very end (otherwise it will mess up holes)
68
+ this.closePath();
69
+ }
70
+ }
71
+ if (fill) {
72
+ await this.fill();
73
+ }
74
+ await this.stroke(); // draw line path or polygon outline
75
+ }
76
+ /**
77
+ * Render a point on the renderer's context.
78
+ * Note: Inputs are designed based on the PBF format, to avoid any data transformation.
79
+ * @param geometryLengths Array be used to determine the start and end of each multi-point array, empty for single point.
80
+ * @param geometryCoords Array that linearly encodes vertices.
81
+ * @param stride Dimension of each vertices (i.e. 2 or 3. 3 could be X,Y,Z, X,YM) Currently 3rd dimension is ignored.
82
+ */
83
+ async renderPoint(geometryLengths, geometryCoords, stride, relativeCoords) {
84
+ if (stride < 2 || stride > 3) {
85
+ return;
86
+ }
87
+ let coordsOffset = 0;
88
+ if (geometryLengths.length === 0) {
89
+ // Strangely, for points, 'lengths' array is empty, so we assume there is a single vertex in 'coords' array.
90
+ if (geometryCoords.length >= stride) {
91
+ if (this._transform) {
92
+ const transformedPoint = this._transform.multiplyPoint2d({ x: geometryCoords[0], y: geometryCoords[1] });
93
+ this.drawPoint(transformedPoint.x, transformedPoint.y);
94
+ }
95
+ else {
96
+ this.drawPoint(geometryCoords[0], geometryCoords[1]);
97
+ }
98
+ }
99
+ }
100
+ else {
101
+ // MULTI-POINTS: Needs testing
102
+ // I assume 'lengths' array will get populated and 'coords' array will look similar to line/polygons.
103
+ for (const vertexCount of geometryLengths) {
104
+ let lastPtX = 0, lastPtY = 0;
105
+ for (let vertexIdx = 0; vertexIdx < vertexCount; vertexIdx++) {
106
+ let pX = geometryCoords[coordsOffset + (vertexIdx * stride)];
107
+ let pY = geometryCoords[coordsOffset + (vertexIdx * stride) + 1];
108
+ if (relativeCoords) {
109
+ pX = lastPtX = lastPtX + pX;
110
+ pY = lastPtY = lastPtY + pY;
111
+ }
112
+ if (this._transform) {
113
+ const transformedPoint = this._transform.multiplyPoint2d({ x: pX, y: pY });
114
+ pX = transformedPoint.x;
115
+ pY = transformedPoint.y;
116
+ }
117
+ this.drawPoint(pX, pY);
118
+ }
119
+ coordsOffset += stride * vertexCount;
120
+ }
121
+ }
122
+ await this.finishPoints();
123
+ }
124
+ }
125
+ exports.ArcGisGeometryBaseRenderer = ArcGisGeometryBaseRenderer;
126
+ //# sourceMappingURL=ArcGisGeometryRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArcGisGeometryRenderer.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/ArcGisGeometryRenderer.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 { Transform } from \"@itwin/core-geometry\";\r\n\r\n/** Interface defining minimal implementation needed to create an ArcGIS geometry renderer,\r\n * that will ultimately be called by an [[ArcGisFeatureReader]] implementation.\r\n * @internal\r\n */\r\nexport interface ArcGisGeometryRenderer {\r\n transform: Transform | undefined;\r\n renderPath(geometryLengths: number[], geometryCoords: number[], fill: boolean, stride: number, relativeCoords: boolean): Promise<void>;\r\n renderPoint(geometryLengths: number[], geometryCoords: number[], stride: number, relativeCoords: boolean): Promise<void>;\r\n}\r\n\r\n/** Internal implementation of [[ArcGisGeometryRenderer]]\r\n * @internal\r\n */\r\nexport abstract class ArcGisGeometryBaseRenderer implements ArcGisGeometryRenderer {\r\n private _transform: Transform | undefined;\r\n\r\n constructor(world2PixelTransform?: Transform) {\r\n this._transform = world2PixelTransform;\r\n }\r\n\r\n public get transform() { return this._transform; }\r\n\r\n protected abstract beginPath(): void;\r\n protected abstract closePath(): void;\r\n protected abstract lineTo(x: number, y: number): void;\r\n protected abstract moveTo(x: number, y: number): void;\r\n protected abstract stroke(): Promise<void>;\r\n protected abstract fill(): Promise<void>;\r\n protected abstract drawPoint(x: number, y: number): void;\r\n protected abstract finishPoints(): Promise<void>;\r\n\r\n /**\r\n * Render a path on the renderer's context.\r\n * Note: Inputs are designed based on the PBF format, to avoid any data transformation.\r\n * @param geometryLengths Array be used to determine the start and end of each sub-path / rings. (i.e. [5,5] = two rings of 5 vertices)\r\n * @param geometryCoords Array that linearly encodes the vertices of each sub-path of a polyline / ring of a polygon\r\n * @param fill Indicates if the path should be filled or not.\r\n * @param stride Dimension of each vertices (i.e. 2 or 3. 3 could be X,Y,Z, X,YM) Currently 3rd dimension is ignored.\r\n */\r\n public async renderPath(geometryLengths: number[], geometryCoords: number[], fill: boolean, stride: number, relativeCoords: boolean) {\r\n if (stride < 2 || stride > 3) {\r\n return;\r\n }\r\n\r\n // Keep track of our position in the in the 'coords' array:\r\n // Every time we loop on the 'lengths' array, the position\r\n // to start reading vertices in the 'coords' must be the sum of all previously read vertices.\r\n let coordsOffset = 0;\r\n\r\n // Begin the path here.\r\n // Note: Even though path is closed inside the 'geometryLengths' loop,\r\n // it's import to begin the path only once.\r\n this.beginPath();\r\n for (const vertexCount of geometryLengths) {\r\n let lastPtX = 0, lastPtY = 0;\r\n for (let vertexIdx = 0; vertexIdx < vertexCount; vertexIdx++) {\r\n let pX = geometryCoords[coordsOffset + (vertexIdx * stride)];\r\n let pY = geometryCoords[coordsOffset + (vertexIdx * stride) + 1];\r\n if (vertexIdx === 0) {\r\n // first vertex is always \"absolute\" and must be drawn as 'moveTo' (i.e. not lineTo)\r\n if (relativeCoords) {\r\n lastPtX = pX;\r\n lastPtY = pY;\r\n }\r\n\r\n if (this._transform) {\r\n const transformedPoint = this._transform.multiplyPoint2d({ x: pX, y: pY });\r\n pX = transformedPoint.x;\r\n pY = transformedPoint.y;\r\n }\r\n\r\n this.moveTo(pX, pY);\r\n } else {\r\n\r\n // Following vertices are relative to the previous one (sadly not really well documented by ESRI)\r\n // typically this happens when 'coordinates quantization' is active (i.e. no client side transformation is needed)\r\n if (relativeCoords) {\r\n pX = lastPtX = lastPtX + pX;\r\n pY = lastPtY = lastPtY + pY;\r\n }\r\n\r\n if (this._transform) {\r\n const transformedPoint = this._transform.multiplyPoint2d({ x: pX, y: pY });\r\n pX = transformedPoint.x;\r\n pY = transformedPoint.y;\r\n }\r\n this.lineTo(pX, pY);\r\n }\r\n\r\n }\r\n coordsOffset += stride * vertexCount;\r\n if (fill) {\r\n // ClosePath but do not 'fill' here, only at the very end (otherwise it will mess up holes)\r\n this.closePath();\r\n }\r\n }\r\n\r\n if (fill) {\r\n await this.fill();\r\n }\r\n\r\n await this.stroke(); // draw line path or polygon outline\r\n }\r\n\r\n /**\r\n * Render a point on the renderer's context.\r\n * Note: Inputs are designed based on the PBF format, to avoid any data transformation.\r\n * @param geometryLengths Array be used to determine the start and end of each multi-point array, empty for single point.\r\n * @param geometryCoords Array that linearly encodes vertices.\r\n * @param stride Dimension of each vertices (i.e. 2 or 3. 3 could be X,Y,Z, X,YM) Currently 3rd dimension is ignored.\r\n */\r\n public async renderPoint(geometryLengths: number[], geometryCoords: number[], stride: number, relativeCoords: boolean) {\r\n\r\n if (stride < 2 || stride > 3) {\r\n return;\r\n }\r\n let coordsOffset = 0;\r\n if (geometryLengths.length === 0) {\r\n // Strangely, for points, 'lengths' array is empty, so we assume there is a single vertex in 'coords' array.\r\n if (geometryCoords.length >= stride) {\r\n\r\n if (this._transform) {\r\n const transformedPoint = this._transform.multiplyPoint2d({ x: geometryCoords[0], y: geometryCoords[1] });\r\n this.drawPoint(transformedPoint.x, transformedPoint.y);\r\n } else {\r\n this.drawPoint(geometryCoords[0], geometryCoords[1]);\r\n }\r\n }\r\n } else {\r\n // MULTI-POINTS: Needs testing\r\n // I assume 'lengths' array will get populated and 'coords' array will look similar to line/polygons.\r\n for (const vertexCount of geometryLengths) {\r\n let lastPtX = 0, lastPtY = 0;\r\n for (let vertexIdx = 0; vertexIdx < vertexCount; vertexIdx++) {\r\n let pX = geometryCoords[coordsOffset + (vertexIdx * stride)];\r\n let pY = geometryCoords[coordsOffset + (vertexIdx * stride) + 1];\r\n\r\n if (relativeCoords) {\r\n pX = lastPtX = lastPtX + pX;\r\n pY = lastPtY = lastPtY + pY;\r\n }\r\n\r\n if (this._transform) {\r\n const transformedPoint = this._transform.multiplyPoint2d({ x: pX, y: pY });\r\n pX = transformedPoint.x;\r\n pY = transformedPoint.y;\r\n }\r\n\r\n this.drawPoint(pX, pY);\r\n\r\n }\r\n coordsOffset += stride * vertexCount;\r\n }\r\n }\r\n await this.finishPoints();\r\n }\r\n}\r\n\r\n"]}
@@ -0,0 +1,26 @@
1
+ import { ArcGisGeometryBaseRenderer } from "../../internal";
2
+ import { GraphicPrimitive } from "../../../render/GraphicPrimitive";
3
+ import { IModelConnection } from "../../../IModelConnection";
4
+ /** ArcGIS geometry renderer implementation that will "render" a list of [GraphicPrimitive]($frontend)
5
+ * This renderer initial objective is to read geometries when a call to [[MapLayerImageryProvider.getFeatureInfo]] is performed.
6
+ * @internal
7
+ */
8
+ export declare class ArcGisGraphicsRenderer extends ArcGisGeometryBaseRenderer {
9
+ private _scratchPointsArray;
10
+ private _scratchPaths;
11
+ private _graphics;
12
+ private _iModel;
13
+ constructor(iModel: IModelConnection);
14
+ moveGraphics(): GraphicPrimitive[];
15
+ protected beginPath(): void;
16
+ protected closePath(): void;
17
+ protected lineTo(x: number, y: number): Promise<void>;
18
+ protected moveTo(x: number, y: number): Promise<void>;
19
+ protected fill(): Promise<void>;
20
+ protected stroke(): Promise<void>;
21
+ protected drawPoint(x: number, y: number): void;
22
+ protected finishPoints(): Promise<void>;
23
+ private toSpatialFromGcs;
24
+ private toSpatialFromEcf;
25
+ }
26
+ //# sourceMappingURL=ArcGisGraphicsRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArcGisGraphicsRenderer.d.ts","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/ArcGisGraphicsRenderer.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,0BAA0B,EAAe,MAAM,gBAAgB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAI7D;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,0BAA0B;IACpE,OAAO,CAAC,mBAAmB,CAA0B;IACrD,OAAO,CAAC,aAAa,CAAmB;IACxC,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,OAAO,CAAmB;gBAEtB,MAAM,EAAE,gBAAgB;IAK7B,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;cA8BJ,MAAM;cAyBH,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;cAI/B,YAAY;YAmBvB,gBAAgB;IAI9B,OAAO,CAAC,gBAAgB;CAQzB"}
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ArcGisGraphicsRenderer = void 0;
4
+ /*---------------------------------------------------------------------------------------------
5
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
6
+ * See LICENSE.md in the project root for license terms and full copyright notice.
7
+ *--------------------------------------------------------------------------------------------*/
8
+ const core_bentley_1 = require("@itwin/core-bentley");
9
+ const core_common_1 = require("@itwin/core-common");
10
+ const core_geometry_1 = require("@itwin/core-geometry");
11
+ const internal_1 = require("../../internal");
12
+ const loggerCategory = "MapLayerImageryProvider.ArcGisGraphicsRenderer";
13
+ /** ArcGIS geometry renderer implementation that will "render" a list of [GraphicPrimitive]($frontend)
14
+ * This renderer initial objective is to read geometries when a call to [[MapLayerImageryProvider.getFeatureInfo]] is performed.
15
+ * @internal
16
+ */
17
+ class ArcGisGraphicsRenderer extends internal_1.ArcGisGeometryBaseRenderer {
18
+ constructor(iModel) {
19
+ super();
20
+ this._scratchPointsArray = new core_geometry_1.GrowableXYZArray();
21
+ this._scratchPaths = [];
22
+ this._graphics = [];
23
+ this._iModel = iModel;
24
+ }
25
+ moveGraphics() {
26
+ const graphics = this._graphics;
27
+ this._graphics = [];
28
+ return graphics;
29
+ }
30
+ beginPath() {
31
+ this._scratchPointsArray.clear();
32
+ this._scratchPaths = [];
33
+ }
34
+ closePath() {
35
+ if (this._scratchPointsArray.length > 0) {
36
+ this._scratchPaths.push(this._scratchPointsArray.getArray());
37
+ this._scratchPointsArray.clear();
38
+ }
39
+ }
40
+ async lineTo(x, y) {
41
+ this._scratchPointsArray.push({ x, y, z: 0 });
42
+ }
43
+ async moveTo(x, y) {
44
+ if (this._scratchPointsArray.length > 0) {
45
+ this._scratchPaths.push(this._scratchPointsArray.getArray());
46
+ this._scratchPointsArray.clear();
47
+ }
48
+ this._scratchPointsArray.push({ x, y, z: 0 });
49
+ }
50
+ async fill() {
51
+ if (this._scratchPaths.length > 0) {
52
+ const loops = [];
53
+ if (this._iModel.noGcsDefined) {
54
+ for (const points of this._scratchPaths) {
55
+ loops.push(core_geometry_1.Loop.create(core_geometry_1.LineString3d.create(this.toSpatialFromEcf(points))));
56
+ }
57
+ }
58
+ else {
59
+ const pathPromises = [];
60
+ for (const points of this._scratchPaths) {
61
+ pathPromises.push(this.toSpatialFromGcs(points));
62
+ }
63
+ const pathsArray = await Promise.all(pathPromises);
64
+ for (const pointsArray of pathsArray) {
65
+ loops.push(core_geometry_1.Loop.create(core_geometry_1.LineString3d.create(pointsArray)));
66
+ }
67
+ }
68
+ const mergedLoops = core_geometry_1.RegionOps.constructAllXYRegionLoops(loops);
69
+ for (const loop of mergedLoops) {
70
+ for (const negativeLoop of loop.negativeAreaLoops) {
71
+ this._graphics.push({ type: "loop", loop: negativeLoop });
72
+ }
73
+ }
74
+ this._scratchPaths = [];
75
+ }
76
+ }
77
+ async stroke() {
78
+ if (this._scratchPointsArray.length > 0) {
79
+ this._scratchPaths.push(this._scratchPointsArray.getArray());
80
+ this._scratchPointsArray.clear();
81
+ }
82
+ if (this._iModel.noGcsDefined) {
83
+ for (const linestring of this._scratchPaths) {
84
+ this._graphics.push({ type: "linestring", points: this.toSpatialFromEcf(linestring) });
85
+ }
86
+ }
87
+ else {
88
+ const pathPromises = [];
89
+ for (const noGcsDefined of this._scratchPaths) {
90
+ pathPromises.push(this.toSpatialFromGcs(noGcsDefined));
91
+ }
92
+ const reprojectedPaths = await Promise.all(pathPromises);
93
+ for (const path of reprojectedPaths) {
94
+ this._graphics.push({ type: "linestring", points: core_geometry_1.Point3dArray.clonePoint3dArray(path) });
95
+ }
96
+ }
97
+ this._scratchPaths = [];
98
+ }
99
+ drawPoint(x, y) {
100
+ this._scratchPointsArray.push({ x, y, z: 0 });
101
+ }
102
+ async finishPoints() {
103
+ if (this._scratchPointsArray.length > 0) {
104
+ if (this._iModel.noGcsDefined) {
105
+ this._graphics.push({ type: "pointstring", points: this.toSpatialFromEcf(this._scratchPointsArray.getArray()) });
106
+ }
107
+ else {
108
+ // Backend reprojection
109
+ const pointsArray = this._scratchPointsArray.getArray();
110
+ try {
111
+ const spatialPoints = await this.toSpatialFromGcs(pointsArray);
112
+ this._graphics.push({ type: "pointstring", points: spatialPoints });
113
+ }
114
+ catch (error) {
115
+ core_bentley_1.Logger.logError(loggerCategory, "ArcGisFeatureGraphicsRenderer: Could not reproject points");
116
+ }
117
+ }
118
+ this._scratchPointsArray.clear();
119
+ }
120
+ }
121
+ async toSpatialFromGcs(geoPoints) {
122
+ return this._iModel.toSpatialFromGcs(geoPoints, { horizontalCRS: { epsg: 3857 }, verticalCRS: { id: "ELLIPSOID" } });
123
+ }
124
+ toSpatialFromEcf(geoPoints) {
125
+ const spatials = [];
126
+ for (const pt of geoPoints) {
127
+ const carto = { longitude: internal_1.WebMercator.getEPSG4326Lon(pt.x), latitude: internal_1.WebMercator.getEPSG4326Lat(pt.y), height: pt.z };
128
+ spatials.push(this._iModel.cartographicToSpatialFromEcef(core_common_1.Cartographic.fromDegrees(carto)));
129
+ }
130
+ return spatials;
131
+ }
132
+ }
133
+ exports.ArcGisGraphicsRenderer = ArcGisGraphicsRenderer;
134
+ //# sourceMappingURL=ArcGisGraphicsRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArcGisGraphicsRenderer.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/ArcGisGraphicsRenderer.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 { ArcGisGeometryBaseRenderer, WebMercator } from \"../../internal\";\r\nimport { GraphicPrimitive } from \"../../../render/GraphicPrimitive\";\r\nimport { IModelConnection } from \"../../../IModelConnection\";\r\n\r\nconst loggerCategory = \"MapLayerImageryProvider.ArcGisGraphicsRenderer\";\r\n\r\n/** ArcGIS 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 ArcGisGraphicsRenderer extends ArcGisGeometryBaseRenderer {\r\n private _scratchPointsArray = new GrowableXYZArray();\r\n private _scratchPaths: Point3d[][] = [];\r\n private _graphics: GraphicPrimitive[] = [];\r\n private _iModel: IModelConnection;\r\n\r\n constructor(iModel: IModelConnection) {\r\n super();\r\n this._iModel = iModel;\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 if (this._iModel.noGcsDefined) {\r\n for (const points of this._scratchPaths) {\r\n loops.push(Loop.create(LineString3d.create(this.toSpatialFromEcf(points))));\r\n }\r\n } else {\r\n const pathPromises = [];\r\n for (const points of this._scratchPaths) {\r\n pathPromises.push(this.toSpatialFromGcs(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\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\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 if (this._iModel.noGcsDefined) {\r\n for (const linestring of this._scratchPaths) {\r\n this._graphics.push({ type: \"linestring\", points: this.toSpatialFromEcf(linestring) });\r\n }\r\n } else {\r\n const pathPromises = [];\r\n for (const noGcsDefined of this._scratchPaths) {\r\n pathPromises.push(this.toSpatialFromGcs(noGcsDefined));\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 if (this._iModel.noGcsDefined) {\r\n this._graphics.push({ type: \"pointstring\", points: this.toSpatialFromEcf(this._scratchPointsArray.getArray()) });\r\n } else {\r\n // Backend reprojection\r\n const pointsArray = this._scratchPointsArray.getArray();\r\n try {\r\n const spatialPoints = await this.toSpatialFromGcs(pointsArray);\r\n this._graphics.push({ type: \"pointstring\", points: spatialPoints });\r\n } catch (error) {\r\n Logger.logError(loggerCategory, \"ArcGisFeatureGraphicsRenderer: Could not reproject points\");\r\n }\r\n }\r\n this._scratchPointsArray.clear();\r\n }\r\n }\r\n\r\n private async toSpatialFromGcs(geoPoints: Point3d[]) {\r\n return this._iModel.toSpatialFromGcs(geoPoints, { horizontalCRS: { epsg: 3857 }, verticalCRS: { id: \"ELLIPSOID\" } });\r\n }\r\n\r\n private toSpatialFromEcf(geoPoints: Point3d[]) {\r\n const spatials = [];\r\n for (const pt of geoPoints) {\r\n const carto = { longitude: WebMercator.getEPSG4326Lon(pt.x), latitude: WebMercator.getEPSG4326Lat(pt.y), height: pt.z };\r\n spatials.push(this._iModel.cartographicToSpatialFromEcef(Cartographic.fromDegrees(carto)));\r\n }\r\n return spatials;\r\n }\r\n}\r\n"]}
@@ -0,0 +1,6 @@
1
+ /** @internal */
2
+ export declare class WebMercator {
3
+ static getEPSG4326Lon(x3857: number): number;
4
+ static getEPSG4326Lat(y3857: number): number;
5
+ }
6
+ //# sourceMappingURL=WebMercator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebMercator.d.ts","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/WebMercator.ts"],"names":[],"mappings":"AAOA,gBAAgB;AAChB,qBAAa,WAAW;WAGR,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;WAKrC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;CAIpD"}
@@ -0,0 +1,22 @@
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
+ exports.WebMercator = void 0;
8
+ const core_geometry_1 = require("@itwin/core-geometry");
9
+ /** @internal */
10
+ class WebMercator {
11
+ // calculates the longitude in EPSG:4326 (WGS84) from the projected x cartesian coordinate in EPSG:3857
12
+ static getEPSG4326Lon(x3857) {
13
+ return core_geometry_1.Angle.radiansToDegrees(x3857 / core_geometry_1.Constant.earthRadiusWGS84.equator);
14
+ }
15
+ // calculates the latitude in EPSG:4326 (WGS84) from the projected y cartesian coordinate in EPSG:3857
16
+ static getEPSG4326Lat(y3857) {
17
+ const y = 2 * Math.atan(Math.exp(y3857 / core_geometry_1.Constant.earthRadiusWGS84.equator)) - (Math.PI / 2);
18
+ return core_geometry_1.Angle.radiansToDegrees(y);
19
+ }
20
+ }
21
+ exports.WebMercator = WebMercator;
22
+ //# sourceMappingURL=WebMercator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebMercator.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/WebMercator.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAE/F,wDAAuD;AAEvD,gBAAgB;AAChB,MAAa,WAAW;IAEtB,uGAAuG;IAChG,MAAM,CAAC,cAAc,CAAC,KAAa;QACxC,OAAO,qBAAK,CAAC,gBAAgB,CAAC,KAAK,GAAC,wBAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACzE,CAAC;IAED,sGAAsG;IAC/F,MAAM,CAAC,cAAc,CAAC,KAAa;QACxC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,wBAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAC,CAAC,CAAC,CAAC;QAC3F,OAAO,qBAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;CACF;AAZD,kCAYC","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 { Angle, Constant } from \"@itwin/core-geometry\";\r\n\r\n/** @internal */\r\nexport class WebMercator {\r\n\r\n // calculates the longitude in EPSG:4326 (WGS84) from the projected x cartesian coordinate in EPSG:3857\r\n public static getEPSG4326Lon(x3857: number): number {\r\n return Angle.radiansToDegrees(x3857/Constant.earthRadiusWGS84.equator);\r\n }\r\n\r\n // calculates the latitude in EPSG:4326 (WGS84) from the projected y cartesian coordinate in EPSG:3857\r\n public static getEPSG4326Lat(y3857: number): number {\r\n const y = 2 * Math.atan(Math.exp(y3857 / Constant.earthRadiusWGS84.equator)) - (Math.PI/2);\r\n return Angle.radiansToDegrees(y);\r\n }\r\n}\r\n"]}
@@ -7,6 +7,7 @@ import { RenderMemory } from "../../render/RenderMemory";
7
7
  import { RenderSystem } from "../../render/RenderSystem";
8
8
  import { ScreenViewport } from "../../Viewport";
9
9
  import { MapCartoRectangle, MapLayerFeatureInfo, MapLayerImageryProvider, MapLayerTileTreeReference, MapTile, MapTileTreeScaleRangeVisibility, MapTilingScheme, QuadId, RealityTile, RealityTileLoader, RealityTileTree, RealityTileTreeParams, Tile, TileContent, TileDrawArgs, TileLoadPriority, TileParams, TileRequest, TileTreeLoadStatus, TileTreeOwner } from "../internal";
10
+ import { HitDetail } from "../../HitDetail";
10
11
  /** @internal */
11
12
  export interface ImageryTileContent extends TileContent {
12
13
  imageryTexture?: RenderTexture;
@@ -91,7 +92,7 @@ declare class ImageryTileLoader extends RealityTileLoader {
91
92
  get maximumScreenSize(): number;
92
93
  get imageryProvider(): MapLayerImageryProvider;
93
94
  getToolTip(strings: string[], quadId: QuadId, carto: Cartographic, tree: ImageryMapTileTree): Promise<void>;
94
- getMapFeatureInfo(featureInfos: MapLayerFeatureInfo[], quadId: QuadId, carto: Cartographic, tree: ImageryMapTileTree): Promise<void>;
95
+ getMapFeatureInfo(featureInfos: MapLayerFeatureInfo[], quadId: QuadId, carto: Cartographic, tree: ImageryMapTileTree, hit: HitDetail): Promise<void>;
95
96
  generateChildIds(tile: ImageryMapTile, resolveChildren: (childIds: QuadId[]) => void): void;
96
97
  /** Load this tile's children, possibly asynchronously. Pass them to `resolve`, or an error to `reject`. */
97
98
  loadChildren(_tile: RealityTile): Promise<Tile[] | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"ImageryTileTree.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/ImageryTileTree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ImageryTileTree.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/ImageryTileTree.ts"],"names":[],"mappings":"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"}
@@ -229,8 +229,8 @@ class ImageryTileLoader extends internal_1.RealityTileLoader {
229
229
  get maximumScreenSize() { return this._imageryProvider.maximumScreenSize; }
230
230
  get imageryProvider() { return this._imageryProvider; }
231
231
  async getToolTip(strings, quadId, carto, tree) { await this._imageryProvider.getToolTip(strings, quadId, carto, tree); }
232
- async getMapFeatureInfo(featureInfos, quadId, carto, tree) {
233
- await this._imageryProvider.getFeatureInfo(featureInfos, quadId, carto, tree);
232
+ async getMapFeatureInfo(featureInfos, quadId, carto, tree, hit) {
233
+ await this._imageryProvider.getFeatureInfo(featureInfos, quadId, carto, tree, hit);
234
234
  }
235
235
  generateChildIds(tile, resolveChildren) { return this._imageryProvider.generateChildIds(tile, resolveChildren); }
236
236
  /** Load this tile's children, possibly asynchronously. Pass them to `resolve`, or an error to `reject`. */