@itwin/map-layers-formats 3.5.0-dev.52 → 3.5.0-dev.53
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.rush/temp/operation/build_ci/state.json +1 -1
- package/.rush/temp/operation/docs/state.json +1 -1
- package/.rush/temp/package-deps_build_ci.json +7 -7
- package/.rush/temp/package-deps_docs.json +7 -7
- package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.d.ts.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.js +39 -17
- package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.js.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisFeatureQuery.d.ts +0 -1
- package/lib/cjs/ArcGisFeature/ArcGisFeatureQuery.d.ts.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisFeatureQuery.js +19 -27
- package/lib/cjs/ArcGisFeature/ArcGisFeatureQuery.js.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.d.ts.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.js +14 -11
- package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.js.map +1 -1
- package/lib/cjs/test/ArcGisFeature/ArcGisFeatureProvider.test.js +34 -10
- package/lib/cjs/test/ArcGisFeature/ArcGisFeatureProvider.test.js.map +1 -1
- package/lib/cjs/test/ArcGisFeature/ArcGisFeatureQuery.test.js +4 -9
- package/lib/cjs/test/ArcGisFeature/ArcGisFeatureQuery.test.js.map +1 -1
- package/lib/cjs/test/ArcGisFeature/ArcGisSymbologyRenderer.test.js +5 -5
- package/lib/cjs/test/ArcGisFeature/ArcGisSymbologyRenderer.test.js.map +1 -1
- package/lib/cjs/test/coverage/.nyc_output/{6d78e0cc-3049-49f9-9f29-97f2d2ce6c64.json → a7dcd2f7-e863-4162-8e25-d27e4921dfcc.json} +0 -0
- package/lib/cjs/test/coverage/.nyc_output/e498035c-a52d-4af9-b4fb-0a5c3a75efa3.json +1 -0
- package/lib/cjs/test/coverage/.nyc_output/processinfo/a7dcd2f7-e863-4162-8e25-d27e4921dfcc.json +1 -0
- package/lib/cjs/test/coverage/.nyc_output/processinfo/e498035c-a52d-4af9-b4fb-0a5c3a75efa3.json +1 -0
- package/lib/cjs/test/coverage/.nyc_output/processinfo/index.json +1 -1
- package/lib/cjs/test/coverage/cobertura-coverage.xml +390 -387
- package/lib/cjs/test/coverage/lcov-report/index.html +18 -18
- package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureFormat.ts.html +1 -1
- package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureJSON.ts.html +5 -5
- package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeaturePBF.ts.html +9 -9
- package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureProvider.ts.html +146 -74
- package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureQuery.ts.html +32 -62
- package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureReader.ts.html +1 -1
- package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureRenderer.ts.html +1 -1
- package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureResponse.ts.html +1 -1
- package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisSymbologyRenderer.ts.html +64 -55
- package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/index.html +29 -29
- package/lib/cjs/test/coverage/lcov-report/src/index.html +1 -1
- package/lib/cjs/test/coverage/lcov-report/src/map-layers-formats.ts.html +1 -1
- package/lib/cjs/test/coverage/lcov-report/src/mapLayersFormats.ts.html +1 -1
- package/lib/cjs/test/coverage/lcov.info +637 -612
- package/lib/cjs/tsconfig.tsbuildinfo +1 -1
- package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.d.ts.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.js +41 -19
- package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.js.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisFeatureQuery.d.ts +0 -1
- package/lib/esm/ArcGisFeature/ArcGisFeatureQuery.d.ts.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisFeatureQuery.js +19 -27
- package/lib/esm/ArcGisFeature/ArcGisFeatureQuery.js.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.d.ts.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.js +14 -11
- package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.js.map +1 -1
- package/lib/esm/test/ArcGisFeature/ArcGisFeatureProvider.test.js +34 -10
- package/lib/esm/test/ArcGisFeature/ArcGisFeatureProvider.test.js.map +1 -1
- package/lib/esm/test/ArcGisFeature/ArcGisFeatureQuery.test.js +4 -9
- package/lib/esm/test/ArcGisFeature/ArcGisFeatureQuery.test.js.map +1 -1
- package/lib/esm/test/ArcGisFeature/ArcGisSymbologyRenderer.test.js +6 -6
- package/lib/esm/test/ArcGisFeature/ArcGisSymbologyRenderer.test.js.map +1 -1
- package/lib/esm/tsconfig.tsbuildinfo +1 -1
- package/lib/test/junit_results.xml +51 -53
- package/map-layers-formats.build.log +2 -2
- package/package.json +12 -12
- package/src/ArcGisFeature/ArcGisFeatureProvider.ts +39 -15
- package/src/ArcGisFeature/ArcGisFeatureQuery.ts +20 -30
- package/src/ArcGisFeature/ArcGisSymbologyRenderer.ts +15 -12
- package/src/test/ArcGisFeature/ArcGisFeatureProvider.test.ts +39 -10
- package/src/test/ArcGisFeature/ArcGisFeatureQuery.test.ts +4 -11
- package/src/test/ArcGisFeature/ArcGisSymbologyRenderer.test.ts +5 -5
- package/lib/cjs/test/coverage/.nyc_output/5f6e61f1-8da3-4cce-bc95-ee236ec2bb5b.json +0 -1
- package/lib/cjs/test/coverage/.nyc_output/processinfo/5f6e61f1-8da3-4cce-bc95-ee236ec2bb5b.json +0 -1
- package/lib/cjs/test/coverage/.nyc_output/processinfo/6d78e0cc-3049-49f9-9f29-97f2d2ce6c64.json +0 -1
|
@@ -96,13 +96,13 @@ class ArcGisSymbologyRenderer {
|
|
|
96
96
|
if (this._symbol === undefined) {
|
|
97
97
|
core_bentley_1.Logger.logWarning(loggerCategory, "Symbology definition not supported, using default symbology");
|
|
98
98
|
if (geometryType === "esriGeometryPoint" || geometryType === "esriGeometryMultipoint") {
|
|
99
|
-
this._symbol = ArcGisSymbologyRenderer.defaultPMS;
|
|
99
|
+
this._symbol = EsriPMS.fromJSON(ArcGisSymbologyRenderer.defaultPMS);
|
|
100
100
|
}
|
|
101
101
|
else if (geometryType === "esriGeometryLine" || geometryType === "esriGeometryPolyline") {
|
|
102
|
-
this._symbol = ArcGisSymbologyRenderer.defaultSLS;
|
|
102
|
+
this._symbol = EsriSLS.fromJSON(ArcGisSymbologyRenderer.defaultSLS);
|
|
103
103
|
}
|
|
104
104
|
else if (geometryType === "esriGeometryPolygon") {
|
|
105
|
-
this._symbol = ArcGisSymbologyRenderer.defaultSFS;
|
|
105
|
+
this._symbol = EsriSFS.fromJSON(ArcGisSymbologyRenderer.defaultSFS);
|
|
106
106
|
}
|
|
107
107
|
else {
|
|
108
108
|
core_bentley_1.Logger.logError(loggerCategory, "Could not determine default symbology: geometry type not supported");
|
|
@@ -152,12 +152,13 @@ class ArcGisSymbologyRenderer {
|
|
|
152
152
|
let xOffset = 0, yOffset = 0;
|
|
153
153
|
if (pms.xoffset)
|
|
154
154
|
xOffset = pms.xoffset;
|
|
155
|
+
else if (pms.width)
|
|
156
|
+
xOffset = pms.width * -0.5; // if no offset center in the middle
|
|
155
157
|
if (pms.yoffset)
|
|
156
158
|
yOffset = pms.yoffset;
|
|
159
|
+
else if (pms.height)
|
|
160
|
+
yOffset = pms.height * -0.5; // if no offset center in the middle
|
|
157
161
|
if (pms.width && pms.height) {
|
|
158
|
-
// // make sure the marker is centered on the point
|
|
159
|
-
xOffset += pms.width * -0.5;
|
|
160
|
-
yOffset += pms.height * -0.5;
|
|
161
162
|
context.drawImage(pms.image, ptX + xOffset, ptY + yOffset, pms.width, pms.height);
|
|
162
163
|
}
|
|
163
164
|
else {
|
|
@@ -172,19 +173,21 @@ ArcGisSymbologyRenderer.defaultPMS = {
|
|
|
172
173
|
type: "esriPMS",
|
|
173
174
|
url: "",
|
|
174
175
|
contentType: "image/png",
|
|
175
|
-
imageData: "
|
|
176
|
-
width:
|
|
177
|
-
height:
|
|
176
|
+
imageData: "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAmBJREFUOE+Nk01IVFEUx//n3jfvOZOaJkMtiiJ7o9RG3LgoqKhFSFJBTS1ahFBBi0ijfJXCIyQr+hBbSIsoW7iQoKKFCw2CkAI3tZAgy8Ei+xhoTCbnje/NPfHGnA816KzuPR+/c8/HJRQJE7o+VUhym0DcCOYGgBQEXjOLlyqo+nHanCkMoaL4rslKjZwOQLT4ek3Mmz3FACFNLB67ut6M1nWphbg8wI6VyJK5KEH0EQFVJRKbwzokAW++p/ErraAYSQK3u47bC3vLnA+ZB9i2gHF0oyQMCfCGNaUa+vauxs71wWz2V18cnBj8gQ8J1/eeBnHUa4sMFQDGdGno+4gwEAoQzjVUon3rqlx1KY9x7+0MWobjAPg3QJ2eZV4tAEyFNCN5FkSXyw2B3j1hRGvLcgBXMV5MptA4MOXr0gT0u5bZnAf0jBsyiSgJPAxqhON1K3FlRxUMvwFAtv7u0Wl0jvwEmJNEuOhakTt5wKEBifr6Oo14BIBRpgt07w6jcVMIngKGY7NofR5HwlF+zDcpsC193vyYB/innvHywCzdZfAR/+onX1segBTAxHzzfPE7/8yzzIPLjJE1LTixHZx5CtCK4gXLzovBiDPUsYxVM7gUkB3nWKlm6DYEnQGzXARxCOK+a1WfKtQXb6LNAvr7iCboCUA1Ocdsdv5KLPe7F6pH/w3wLbc+BwOuc5IZ1wEE/jonQbjptZn24tKKX7BgvR2r0NKZRwDvAqCI+Z30VJPTURv7P4A9psuQcYAUPwAoReBLrmX2Lmls7i8sZ7kWLwuoxA1FVJGxzMPLufi6P2r+2xFbOUjGAAAAAElFTkSuQmCC",
|
|
177
|
+
width: 16,
|
|
178
|
+
height: 16,
|
|
179
|
+
xoffset: -8,
|
|
180
|
+
yoffset: -16,
|
|
178
181
|
};
|
|
179
182
|
ArcGisSymbologyRenderer.defaultSLS = {
|
|
180
183
|
type: "esriSLS",
|
|
181
|
-
color: [0, 0
|
|
184
|
+
color: [0, 0, 0, 255],
|
|
182
185
|
width: 1,
|
|
183
186
|
style: "esriSLSSolid",
|
|
184
187
|
};
|
|
185
188
|
ArcGisSymbologyRenderer.defaultSFS = {
|
|
186
189
|
type: "esriSFS",
|
|
187
|
-
color: [0, 0
|
|
190
|
+
color: [0, 0, 0, 255],
|
|
188
191
|
style: "esriSFSSolid",
|
|
189
192
|
};
|
|
190
193
|
//# sourceMappingURL=ArcGisSymbologyRenderer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArcGisSymbologyRenderer.js","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisSymbologyRenderer.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\r\nimport { Logger } from \"@itwin/core-bentley\";\r\nimport { ColorDef } from \"@itwin/core-common\";\r\nimport { ArcGisFeatureGeometryType } from \"./ArcGisFeatureQuery\";\r\n\r\n// Convert a channel array [r, g, b, a] to ColorDef\r\nfunction colorFromArray(channels?: number[]) {\r\n if (channels && channels.length === 4) {\r\n // Alpha channel is reversed, 255 = opaque\r\n return ColorDef.from(channels[0], channels[1], channels[2], 255 - channels[3]);\r\n }\r\n return undefined;\r\n}\r\n\r\nconst loggerCategory = \"MapLayersFormats.ArcGISFeature\";\r\n\r\n/** @internal */\r\nexport type EsriSymbolType = \"esriSFS\" | \"esriPMS\" | \"esriSLS\" | \"esriSMS\" | \"esriTS\" | \"CIMSymbolReference\";\r\ninterface EsriSymbol {\r\n type: EsriSymbolType;\r\n}\r\n\r\n/** @internal */\r\nexport type EsriSLSStyle = \"esriSLSDash\" | \"esriSLSDashDot\" | \"esriSLSDashDotDot\" | \"esriSLSDot\" | \"esriSLSLongDash\" | \"esriSLSLongDashDot\" |\r\n\"esriSLSNull\" | \"esriSLSShortDash\" | \"esriSLSShortDashDot\" | \"esriSLSShortDashDotDot\" | \"esriSLSShortDot\" | \"esriSLSSolid\";\r\n\r\ninterface EsriSLSProps {\r\n color: number[];\r\n type: EsriSymbolType;\r\n width: number;\r\n style: EsriSLSStyle;\r\n}\r\n\r\n/** @internal */\r\nexport class EsriSLS implements EsriSymbol {\r\n public readonly props: EsriSLSProps;\r\n\r\n public get color() { return colorFromArray(this.props.color); }\r\n public get type() { return this.props.type; }\r\n public get width() { return this.props.width; }\r\n public get style() { return this.props.style; }\r\n\r\n constructor(json: EsriSLSProps) {\r\n this.props = json;\r\n }\r\n\r\n public static fromJSON(json: EsriSLSProps) {\r\n return new EsriSLS(json);\r\n }\r\n}\r\n\r\ninterface EsriPMSProps {\r\n type: EsriSymbolType;\r\n url: string;\r\n imageData: string;\r\n contentType: string;\r\n width?: number;\r\n height?: number;\r\n xoffset?: number;\r\n yoffset?: number;\r\n angle?: number;\r\n}\r\n\r\n/** @internal */\r\nexport class EsriPMS implements EsriSymbol {\r\n public readonly props: EsriPMSProps;\r\n private _image: HTMLImageElement;\r\n\r\n public get type() { return this.props.type; }\r\n public get url() { return this.props.url; }\r\n public get imageData() { return this.props.imageData; }\r\n public get imageUrl() { return `data:${this.contentType};base64,${this.imageData}`; }\r\n public get image() { return this._image; }\r\n public get contentType() { return this.props.contentType; }\r\n public get width() { return this.props.width; }\r\n public get height() { return this.props.height; }\r\n public get xoffset() { return this.props.xoffset; }\r\n public get yoffset() { return this.props.yoffset; }\r\n public get angle() { return this.props.angle; }\r\n\r\n constructor(json: EsriPMSProps) {\r\n this.props = json;\r\n this._image = new Image();\r\n this._image.src = this.imageUrl;\r\n }\r\n\r\n public static fromJSON(json: EsriPMSProps) {\r\n return new EsriPMS(json);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport type EsriSFSStyleProps = \"esriSFSBackwardDiagonal\" | \"esriSFSCross\" | \"esriSFSDiagonalCross\" | \"esriSFSForwardDiagonal\" | \"esriSFSHorizontal\" | \"esriSFSNull\" | \"esriSFSSolid\" | \"esriSFSVertical\";\r\ninterface EsriSFSProps {\r\n color?: number[];\r\n type: EsriSymbolType;\r\n style: EsriSFSStyleProps;\r\n outline?: EsriSLSProps;\r\n}\r\n\r\n/** @internal */\r\nexport class EsriSFS implements EsriSymbol {\r\n public readonly props: EsriSFSProps;\r\n private _outline: EsriSLS | undefined;\r\n\r\n public get color() { return colorFromArray(this.props.color); }\r\n public get type() { return this.props.type; }\r\n public get style() { return this.props.style; }\r\n public get outline() { return this._outline; }\r\n constructor(json: EsriSFSProps) {\r\n this.props = json;\r\n if (json.outline)\r\n this._outline = EsriSLS.fromJSON(json.outline);\r\n }\r\n\r\n public static fromJSON(json: EsriSFSProps): EsriSFS {\r\n return new EsriSFS(json);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ArcGisSymbologyRenderer {\r\n private _symbol: EsriSymbol | undefined;\r\n\r\n private static readonly defaultPMS: EsriPMSProps = {\r\n type: \"esriPMS\",\r\n url: \"\",\r\n contentType: \"image/png\",\r\n imageData: \"iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAAXNSR0IB2cksfwAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAT9JREFUOI2t1E8rRGEUx/HvMHViIm5ZXGt/3gFlwdKGhYjyAmxs7IassDHFyguwwkbZYJKNslVWJDZT1C3psRv9NMpmJk/Tvc3MHWf3/PuccxbPyfKPkW1wPmBmQ5L6giB4d849Al+tYjNAHpiQ1AHgnAMoA+dhGG5HUfTQCOsCDoGlhCTdwGIURfPVZPtJWCdwBkwntVF3d6+K78Rh+SYhP7bM7FbSjY8FwHqLEEBGUgEY97E5oCcFBjAGDAMvNWwyJVSLKR8L28QG4a/N7zYx+VipTazkY0VgNSVUAa597MrMniWNpMBOAOdjFUlrwAWQaQFywGZt4f+AIrAB7DYJlc1sQdJrHAZQAN6AA6A/STGzp1wut+ycu/f340bQEXAJrACzwCjQC3wAd8CppGNJP/UPk+bZZ7XKQlJ1cfEL1AZaAcKna+kAAAAASUVORK5CYII=\",\r\n width: 14,\r\n height: 14,\r\n };\r\n\r\n private static readonly defaultSLS: EsriSLSProps = {\r\n type: \"esriSLS\",\r\n color: [0, 0.0],\r\n width: 1,\r\n style: \"esriSLSSolid\",\r\n };\r\n\r\n private static readonly defaultSFS: EsriSFSProps = {\r\n type: \"esriSFS\",\r\n color: [0, 0.0],\r\n style: \"esriSFSSolid\",\r\n };\r\n\r\n constructor(geometryType: ArcGisFeatureGeometryType, rendererDefinition: any) {\r\n let symbol;\r\n if (rendererDefinition?.symbol !== undefined) {\r\n symbol = rendererDefinition.symbol;\r\n } else if (rendererDefinition?.defaultSymbol !== undefined) {\r\n symbol = rendererDefinition?.defaultSymbol;\r\n }\r\n\r\n if (symbol !== undefined) {\r\n if (symbol.type === \"esriSFS\") {\r\n this._symbol = EsriSFS.fromJSON(symbol);\r\n } else if (symbol.type === \"esriSLS\") {\r\n this._symbol = EsriSLS.fromJSON(symbol);\r\n } else if (symbol.type === \"esriPMS\") {\r\n this._symbol = EsriPMS.fromJSON(symbol);\r\n }\r\n }\r\n\r\n // If '_symbol' is still undefined at this point, that means we could not find\r\n // any symbology definition from the metadata, let's use some default symbology\r\n // so that we display at least something.\r\n if (this._symbol === undefined) {\r\n Logger.logWarning(loggerCategory, \"Symbology definition not supported, using default symbology\");\r\n if (geometryType === \"esriGeometryPoint\" || geometryType === \"esriGeometryMultipoint\") {\r\n this._symbol = ArcGisSymbologyRenderer.defaultPMS;\r\n } else if (geometryType === \"esriGeometryLine\" || geometryType === \"esriGeometryPolyline\") {\r\n this._symbol = ArcGisSymbologyRenderer.defaultSLS;\r\n } else if (geometryType === \"esriGeometryPolygon\") {\r\n this._symbol = ArcGisSymbologyRenderer.defaultSFS;\r\n } else {\r\n Logger.logError(loggerCategory, \"Could not determine default symbology: geometry type not supported\");\r\n }\r\n }\r\n }\r\n\r\n public applyFillStyle(context: CanvasRenderingContext2D) {\r\n if (!context)\r\n return;\r\n\r\n if (this._symbol?.type === \"esriSFS\") {\r\n const sfs = this._symbol as EsriSFS;\r\n if (sfs.style === \"esriSFSSolid\" && sfs.color) {\r\n context.fillStyle = sfs.color.toRgbaString();\r\n } else {\r\n context.fillStyle = ColorDef.from(200, 0, 0, 100).toRgbaString(); // default color is red?\r\n }\r\n }\r\n }\r\n\r\n public applyStrokeStyle(context: CanvasRenderingContext2D) {\r\n if (!context)\r\n return;\r\n\r\n let sls: EsriSLS | undefined;\r\n if (this._symbol?.type === \"esriSFS\") {\r\n const sfs = this._symbol as EsriSFS;\r\n if (sfs.outline && sfs.outline.style === \"esriSLSSolid\") {\r\n sls = sfs.outline;\r\n }\r\n } else if (this._symbol?.type === \"esriSLS\") {\r\n sls = this._symbol as EsriSLS;\r\n }\r\n\r\n if (sls) {\r\n if (sls.color)\r\n context.strokeStyle = sls.color.toRgbaString();\r\n context.lineWidth = sls.width; // TODO: Should we scale this value here?\r\n }\r\n }\r\n\r\n public drawPoint(context: CanvasRenderingContext2D, ptX: number, ptY: number) {\r\n if (!context)\r\n return;\r\n\r\n if (this._symbol?.type === \"esriPMS\") {\r\n const pms = this._symbol as EsriPMS;\r\n let xOffset = 0, yOffset = 0;\r\n if (pms.xoffset)\r\n xOffset = pms.xoffset;\r\n if (pms.yoffset)\r\n yOffset = pms.yoffset;\r\n\r\n if (pms.width && pms.height) {\r\n // // make sure the marker is centered on the point\r\n xOffset += pms.width * -0.5;\r\n yOffset += pms.height * -0.5;\r\n\r\n context.drawImage(pms.image, ptX + xOffset, ptY + yOffset, pms.width, pms.height);\r\n } else {\r\n context.drawImage(pms.image, ptX + xOffset, ptY + yOffset);\r\n }\r\n\r\n // TODO: marker rotation angle\r\n }\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"ArcGisSymbologyRenderer.js","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisSymbologyRenderer.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\r\nimport { Logger } from \"@itwin/core-bentley\";\r\nimport { ColorDef } from \"@itwin/core-common\";\r\nimport { ArcGisFeatureGeometryType } from \"./ArcGisFeatureQuery\";\r\n\r\n// Convert a channel array [r, g, b, a] to ColorDef\r\nfunction colorFromArray(channels?: number[]) {\r\n if (channels && channels.length === 4) {\r\n // Alpha channel is reversed, 255 = opaque\r\n return ColorDef.from(channels[0], channels[1], channels[2], 255 - channels[3]);\r\n }\r\n return undefined;\r\n}\r\n\r\nconst loggerCategory = \"MapLayersFormats.ArcGISFeature\";\r\n\r\n/** @internal */\r\nexport type EsriSymbolType = \"esriSFS\" | \"esriPMS\" | \"esriSLS\" | \"esriSMS\" | \"esriTS\" | \"CIMSymbolReference\";\r\ninterface EsriSymbol {\r\n type: EsriSymbolType;\r\n}\r\n\r\n/** @internal */\r\nexport type EsriSLSStyle = \"esriSLSDash\" | \"esriSLSDashDot\" | \"esriSLSDashDotDot\" | \"esriSLSDot\" | \"esriSLSLongDash\" | \"esriSLSLongDashDot\" |\r\n\"esriSLSNull\" | \"esriSLSShortDash\" | \"esriSLSShortDashDot\" | \"esriSLSShortDashDotDot\" | \"esriSLSShortDot\" | \"esriSLSSolid\";\r\n\r\ninterface EsriSLSProps {\r\n color: number[];\r\n type: EsriSymbolType;\r\n width: number;\r\n style: EsriSLSStyle;\r\n}\r\n\r\n/** @internal */\r\nexport class EsriSLS implements EsriSymbol {\r\n public readonly props: EsriSLSProps;\r\n\r\n public get color() { return colorFromArray(this.props.color); }\r\n public get type() { return this.props.type; }\r\n public get width() { return this.props.width; }\r\n public get style() { return this.props.style; }\r\n\r\n constructor(json: EsriSLSProps) {\r\n this.props = json;\r\n }\r\n\r\n public static fromJSON(json: EsriSLSProps) {\r\n return new EsriSLS(json);\r\n }\r\n}\r\n\r\ninterface EsriPMSProps {\r\n type: EsriSymbolType;\r\n url: string;\r\n imageData: string;\r\n contentType: string;\r\n width?: number;\r\n height?: number;\r\n xoffset?: number;\r\n yoffset?: number;\r\n angle?: number;\r\n}\r\n\r\n/** @internal */\r\nexport class EsriPMS implements EsriSymbol {\r\n public readonly props: EsriPMSProps;\r\n private _image: HTMLImageElement;\r\n\r\n public get type() { return this.props.type; }\r\n public get url() { return this.props.url; }\r\n public get imageData() { return this.props.imageData; }\r\n public get imageUrl() { return `data:${this.contentType};base64,${this.imageData}`; }\r\n public get image() { return this._image; }\r\n public get contentType() { return this.props.contentType; }\r\n public get width() { return this.props.width; }\r\n public get height() { return this.props.height; }\r\n public get xoffset() { return this.props.xoffset; }\r\n public get yoffset() { return this.props.yoffset; }\r\n public get angle() { return this.props.angle; }\r\n\r\n constructor(json: EsriPMSProps) {\r\n this.props = json;\r\n this._image = new Image();\r\n this._image.src = this.imageUrl;\r\n }\r\n\r\n public static fromJSON(json: EsriPMSProps) {\r\n return new EsriPMS(json);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport type EsriSFSStyleProps = \"esriSFSBackwardDiagonal\" | \"esriSFSCross\" | \"esriSFSDiagonalCross\" | \"esriSFSForwardDiagonal\" | \"esriSFSHorizontal\" | \"esriSFSNull\" | \"esriSFSSolid\" | \"esriSFSVertical\";\r\ninterface EsriSFSProps {\r\n color?: number[];\r\n type: EsriSymbolType;\r\n style: EsriSFSStyleProps;\r\n outline?: EsriSLSProps;\r\n}\r\n\r\n/** @internal */\r\nexport class EsriSFS implements EsriSymbol {\r\n public readonly props: EsriSFSProps;\r\n private _outline: EsriSLS | undefined;\r\n\r\n public get color() { return colorFromArray(this.props.color); }\r\n public get type() { return this.props.type; }\r\n public get style() { return this.props.style; }\r\n public get outline() { return this._outline; }\r\n constructor(json: EsriSFSProps) {\r\n this.props = json;\r\n if (json.outline)\r\n this._outline = EsriSLS.fromJSON(json.outline);\r\n }\r\n\r\n public static fromJSON(json: EsriSFSProps): EsriSFS {\r\n return new EsriSFS(json);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ArcGisSymbologyRenderer {\r\n private _symbol: EsriSymbol | undefined;\r\n\r\n private static readonly defaultPMS: EsriPMSProps = {\r\n type: \"esriPMS\",\r\n url: \"\",\r\n contentType: \"image/png\",\r\n imageData: \"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAmBJREFUOE+Nk01IVFEUx//n3jfvOZOaJkMtiiJ7o9RG3LgoqKhFSFJBTS1ahFBBi0ijfJXCIyQr+hBbSIsoW7iQoKKFCw2CkAI3tZAgy8Ei+xhoTCbnje/NPfHGnA816KzuPR+/c8/HJRQJE7o+VUhym0DcCOYGgBQEXjOLlyqo+nHanCkMoaL4rslKjZwOQLT4ek3Mmz3FACFNLB67ut6M1nWphbg8wI6VyJK5KEH0EQFVJRKbwzokAW++p/ErraAYSQK3u47bC3vLnA+ZB9i2gHF0oyQMCfCGNaUa+vauxs71wWz2V18cnBj8gQ8J1/eeBnHUa4sMFQDGdGno+4gwEAoQzjVUon3rqlx1KY9x7+0MWobjAPg3QJ2eZV4tAEyFNCN5FkSXyw2B3j1hRGvLcgBXMV5MptA4MOXr0gT0u5bZnAf0jBsyiSgJPAxqhON1K3FlRxUMvwFAtv7u0Wl0jvwEmJNEuOhakTt5wKEBifr6Oo14BIBRpgt07w6jcVMIngKGY7NofR5HwlF+zDcpsC193vyYB/innvHywCzdZfAR/+onX1segBTAxHzzfPE7/8yzzIPLjJE1LTixHZx5CtCK4gXLzovBiDPUsYxVM7gUkB3nWKlm6DYEnQGzXARxCOK+a1WfKtQXb6LNAvr7iCboCUA1Ocdsdv5KLPe7F6pH/w3wLbc+BwOuc5IZ1wEE/jonQbjptZn24tKKX7BgvR2r0NKZRwDvAqCI+Z30VJPTURv7P4A9psuQcYAUPwAoReBLrmX2Lmls7i8sZ7kWLwuoxA1FVJGxzMPLufi6P2r+2xFbOUjGAAAAAElFTkSuQmCC\",\r\n width: 16,\r\n height: 16,\r\n xoffset: -8,\r\n yoffset: -16,\r\n };\r\n\r\n private static readonly defaultSLS: EsriSLSProps = {\r\n type: \"esriSLS\",\r\n color: [0, 0, 0, 255],\r\n width: 1,\r\n style: \"esriSLSSolid\",\r\n };\r\n\r\n private static readonly defaultSFS: EsriSFSProps = {\r\n type: \"esriSFS\",\r\n color: [0, 0, 0, 255],\r\n style: \"esriSFSSolid\",\r\n };\r\n\r\n constructor(geometryType: ArcGisFeatureGeometryType, rendererDefinition: any) {\r\n let symbol;\r\n if (rendererDefinition?.symbol !== undefined) {\r\n symbol = rendererDefinition.symbol;\r\n } else if (rendererDefinition?.defaultSymbol !== undefined) {\r\n symbol = rendererDefinition?.defaultSymbol;\r\n }\r\n\r\n if (symbol !== undefined) {\r\n if (symbol.type === \"esriSFS\") {\r\n this._symbol = EsriSFS.fromJSON(symbol);\r\n } else if (symbol.type === \"esriSLS\") {\r\n this._symbol = EsriSLS.fromJSON(symbol);\r\n } else if (symbol.type === \"esriPMS\") {\r\n this._symbol = EsriPMS.fromJSON(symbol);\r\n }\r\n }\r\n\r\n // If '_symbol' is still undefined at this point, that means we could not find\r\n // any symbology definition from the metadata, let's use some default symbology\r\n // so that we display at least something.\r\n if (this._symbol === undefined) {\r\n Logger.logWarning(loggerCategory, \"Symbology definition not supported, using default symbology\");\r\n if (geometryType === \"esriGeometryPoint\" || geometryType === \"esriGeometryMultipoint\") {\r\n this._symbol = EsriPMS.fromJSON(ArcGisSymbologyRenderer.defaultPMS);\r\n } else if (geometryType === \"esriGeometryLine\" || geometryType === \"esriGeometryPolyline\") {\r\n this._symbol = EsriSLS.fromJSON(ArcGisSymbologyRenderer.defaultSLS);\r\n } else if (geometryType === \"esriGeometryPolygon\") {\r\n this._symbol = EsriSFS.fromJSON(ArcGisSymbologyRenderer.defaultSFS);\r\n } else {\r\n Logger.logError(loggerCategory, \"Could not determine default symbology: geometry type not supported\");\r\n }\r\n }\r\n }\r\n\r\n public applyFillStyle(context: CanvasRenderingContext2D) {\r\n if (!context)\r\n return;\r\n\r\n if (this._symbol?.type === \"esriSFS\") {\r\n const sfs = this._symbol as EsriSFS;\r\n if (sfs.style === \"esriSFSSolid\" && sfs.color) {\r\n context.fillStyle = sfs.color.toRgbaString();\r\n } else {\r\n context.fillStyle = ColorDef.from(200, 0, 0, 100).toRgbaString(); // default color is red?\r\n }\r\n }\r\n }\r\n\r\n public applyStrokeStyle(context: CanvasRenderingContext2D) {\r\n if (!context)\r\n return;\r\n\r\n let sls: EsriSLS | undefined;\r\n if (this._symbol?.type === \"esriSFS\") {\r\n const sfs = this._symbol as EsriSFS;\r\n if (sfs.outline && sfs.outline.style === \"esriSLSSolid\") {\r\n sls = sfs.outline;\r\n }\r\n } else if (this._symbol?.type === \"esriSLS\") {\r\n sls = this._symbol as EsriSLS;\r\n }\r\n\r\n if (sls) {\r\n if (sls.color)\r\n context.strokeStyle = sls.color.toRgbaString();\r\n context.lineWidth = sls.width; // TODO: Should we scale this value here?\r\n }\r\n }\r\n\r\n public drawPoint(context: CanvasRenderingContext2D, ptX: number, ptY: number) {\r\n if (!context)\r\n return;\r\n\r\n if (this._symbol?.type === \"esriPMS\") {\r\n const pms = this._symbol as EsriPMS;\r\n let xOffset = 0, yOffset = 0;\r\n if (pms.xoffset)\r\n xOffset = pms.xoffset;\r\n else if (pms.width)\r\n xOffset = pms.width * -0.5; // if no offset center in the middle\r\n\r\n if (pms.yoffset)\r\n yOffset = pms.yoffset;\r\n else if (pms.height)\r\n yOffset = pms.height * -0.5; // if no offset center in the middle\r\n\r\n if (pms.width && pms.height) {\r\n context.drawImage(pms.image, ptX + xOffset, ptY + yOffset, pms.width, pms.height);\r\n } else {\r\n context.drawImage(pms.image, ptX + xOffset, ptY + yOffset);\r\n }\r\n\r\n // TODO: marker rotation angle\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -38,7 +38,7 @@ describe("ArcGisFeatureProvider", () => {
|
|
|
38
38
|
const provider = new map_layers_formats_1.ArcGisFeatureProvider(settings);
|
|
39
39
|
await provider.initialize();
|
|
40
40
|
expect(provider._minDepthFromLod).to.equals(11);
|
|
41
|
-
expect(provider._maxDepthFromLod).to.equals(
|
|
41
|
+
expect(provider._maxDepthFromLod).to.equals(22);
|
|
42
42
|
});
|
|
43
43
|
it("should not initialize with no service metadata", async () => {
|
|
44
44
|
sandbox.stub(core_frontend_1.ArcGisUtilities, "getServiceJson").callsFake(async function _(_url, _formatId, _userName, _password, _ignoreCache) {
|
|
@@ -136,16 +136,39 @@ describe("ArcGisFeatureProvider", () => {
|
|
|
136
136
|
let getLayerMetadataStub = sandbox.stub(map_layers_formats_1.ArcGisFeatureProvider.prototype, "getLayerMetadata").callsFake(async function (_id) {
|
|
137
137
|
return { defaultVisibility: true, supportedQueryFormats: "PBF, JSON" };
|
|
138
138
|
});
|
|
139
|
-
sandbox.stub(core_frontend_1.ArcGisUtilities, "getServiceJson").callsFake(async function _(_url, _formatId, _userName, _password, _ignoreCache) {
|
|
139
|
+
const getServiceJsonStub = sandbox.stub(core_frontend_1.ArcGisUtilities, "getServiceJson").callsFake(async function _(_url, _formatId, _userName, _password, _ignoreCache) {
|
|
140
140
|
return { capabilities: "Query" };
|
|
141
141
|
});
|
|
142
142
|
let provider = new map_layers_formats_1.ArcGisFeatureProvider(settings);
|
|
143
143
|
await provider.initialize();
|
|
144
|
+
expect(provider.format).to.equals("JSON");
|
|
145
|
+
// PBF requires 'supportsCoordinatesQuantization'
|
|
146
|
+
getServiceJsonStub.restore();
|
|
147
|
+
sandbox.stub(core_frontend_1.ArcGisUtilities, "getServiceJson").callsFake(async function _(_url, _formatId, _userName, _password, _ignoreCache) {
|
|
148
|
+
return { currentVersion: 11, capabilities: "Query" };
|
|
149
|
+
});
|
|
150
|
+
getLayerMetadataStub.restore();
|
|
151
|
+
getLayerMetadataStub = sandbox.stub(map_layers_formats_1.ArcGisFeatureProvider.prototype, "getLayerMetadata").callsFake(async function (_id) {
|
|
152
|
+
return { defaultVisibility: true, supportsCoordinatesQuantization: true, supportedQueryFormats: "PBF, JSON" };
|
|
153
|
+
});
|
|
154
|
+
provider = new map_layers_formats_1.ArcGisFeatureProvider(settings);
|
|
155
|
+
await provider.initialize();
|
|
144
156
|
expect(provider.format).to.equals("PBF");
|
|
145
157
|
getLayerMetadataStub.restore();
|
|
146
158
|
getLayerMetadataStub = sandbox.stub(map_layers_formats_1.ArcGisFeatureProvider.prototype, "getLayerMetadata").callsFake(async function (_id) {
|
|
147
159
|
return { defaultVisibility: true, supportedQueryFormats: "JSON" };
|
|
148
160
|
});
|
|
161
|
+
getServiceJsonStub.restore();
|
|
162
|
+
sandbox.stub(core_frontend_1.ArcGisUtilities, "getServiceJson").callsFake(async function _(_url, _formatId, _userName, _password, _ignoreCache) {
|
|
163
|
+
return { currentVersion: 10.91, capabilities: "Query", supportsCoordinatesQuantization: true };
|
|
164
|
+
});
|
|
165
|
+
provider = new map_layers_formats_1.ArcGisFeatureProvider(settings);
|
|
166
|
+
await provider.initialize();
|
|
167
|
+
expect(provider.format).to.equals("JSON");
|
|
168
|
+
getLayerMetadataStub.restore();
|
|
169
|
+
getLayerMetadataStub = sandbox.stub(map_layers_formats_1.ArcGisFeatureProvider.prototype, "getLayerMetadata").callsFake(async function (_id) {
|
|
170
|
+
return { defaultVisibility: true, supportedQueryFormats: "JSON" };
|
|
171
|
+
});
|
|
149
172
|
provider = new map_layers_formats_1.ArcGisFeatureProvider(settings);
|
|
150
173
|
await provider.initialize();
|
|
151
174
|
expect(provider.format).to.equals("JSON");
|
|
@@ -196,7 +219,7 @@ describe("ArcGisFeatureProvider", () => {
|
|
|
196
219
|
};
|
|
197
220
|
});
|
|
198
221
|
sandbox.stub(core_frontend_1.ArcGisUtilities, "getServiceJson").callsFake(async function _(_url, _formatId, _userName, _password, _ignoreCache) {
|
|
199
|
-
return { capabilities: "Query" };
|
|
222
|
+
return { currentVersion: 11, capabilities: "Query" };
|
|
200
223
|
});
|
|
201
224
|
const provider = new map_layers_formats_1.ArcGisFeatureProvider(settings);
|
|
202
225
|
await provider.initialize();
|
|
@@ -211,7 +234,7 @@ describe("ArcGisFeatureProvider", () => {
|
|
|
211
234
|
latestWkid: 3857,
|
|
212
235
|
},
|
|
213
236
|
};
|
|
214
|
-
expect(url === null || url === void 0 ? void 0 : url.url).to.equals(`https://dummy.com/0/query
|
|
237
|
+
expect(url === null || url === void 0 ? void 0 : url.url).to.equals(`https://dummy.com/0/query?f=PBF&resultType=tile&maxRecordCountFactor=3&returnExceededLimitFeatures=false&outSR=102100&geometryType=esriGeometryEnvelope&geometry=%7B%22xmin%22%3A-20037508.34%2C%22ymin%22%3A-20037508.339999996%2C%22xmax%22%3A20037508.34%2C%22ymax%22%3A20037508.340000004%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D&units=esriSRUnit_Meter&inSR=102100`);
|
|
215
238
|
expect((_a = url === null || url === void 0 ? void 0 : url.envelope) === null || _a === void 0 ? void 0 : _a.xmin).to.be.closeTo(extent.xmin, 0.01);
|
|
216
239
|
expect((_b = url === null || url === void 0 ? void 0 : url.envelope) === null || _b === void 0 ? void 0 : _b.ymin).to.be.closeTo(extent.ymin, 0.01);
|
|
217
240
|
expect((_c = url === null || url === void 0 ? void 0 : url.envelope) === null || _c === void 0 ? void 0 : _c.xmax).to.be.closeTo(extent.xmax, 0.01);
|
|
@@ -230,7 +253,7 @@ describe("ArcGisFeatureProvider", () => {
|
|
|
230
253
|
const provider2 = new map_layers_formats_1.ArcGisFeatureProvider(settings);
|
|
231
254
|
await provider2.initialize();
|
|
232
255
|
url = provider2.constructFeatureUrl(0, 0, 0, "PBF");
|
|
233
|
-
expect(url === null || url === void 0 ? void 0 : url.url).to.equals(`https://dummy.com/0/query
|
|
256
|
+
expect(url === null || url === void 0 ? void 0 : url.url).to.equals(`https://dummy.com/0/query?f=PBF&resultType=tile&maxRecordCountFactor=3&returnExceededLimitFeatures=false&outSR=102100&geometryType=esriGeometryEnvelope&geometry=%7B%22xmin%22%3A-20037508.34%2C%22ymin%22%3A-20037508.339999996%2C%22xmax%22%3A20037508.34%2C%22ymax%22%3A20037508.340000004%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D&units=esriSRUnit_Meter&inSR=102100&quantizationParameters=%7B%22mode%22%3A%22view%22%2C%22originPosition%22%3A%22upperLeft%22%2C%22tolerance%22%3A78271.516953125%2C%22extent%22%3A%7B%22xmin%22%3A-20037508.34%2C%22ymin%22%3A-20037508.339999996%2C%22xmax%22%3A20037508.34%2C%22ymax%22%3A20037508.340000004%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D%7D`);
|
|
234
257
|
expect((_g = url === null || url === void 0 ? void 0 : url.envelope) === null || _g === void 0 ? void 0 : _g.xmin).to.be.closeTo(extent.xmin, 0.01);
|
|
235
258
|
expect((_h = url === null || url === void 0 ? void 0 : url.envelope) === null || _h === void 0 ? void 0 : _h.ymin).to.be.closeTo(extent.ymin, 0.01);
|
|
236
259
|
expect((_j = url === null || url === void 0 ? void 0 : url.envelope) === null || _j === void 0 ? void 0 : _j.xmax).to.be.closeTo(extent.xmax, 0.01);
|
|
@@ -254,7 +277,7 @@ describe("ArcGisFeatureProvider", () => {
|
|
|
254
277
|
const provider3 = new map_layers_formats_1.ArcGisFeatureProvider(settings);
|
|
255
278
|
await provider3.initialize();
|
|
256
279
|
url = provider3.constructFeatureUrl(0, 0, 0, "PBF", overrideGeom);
|
|
257
|
-
expect(url === null || url === void 0 ? void 0 : url.url).to.equals(`https://dummy.com/0/query
|
|
280
|
+
expect(url === null || url === void 0 ? void 0 : url.url).to.equals(`https://dummy.com/0/query?f=PBF&resultType=tile&maxRecordCountFactor=3&returnExceededLimitFeatures=false&outSR=102100&geometryType=esriGeometryEnvelope&geometry=%7B%22xmin%22%3A-50%2C%22ymin%22%3A-50%2C%22xmax%22%3A50%2C%22ymax%22%3A50%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D&units=esriSRUnit_Meter&inSR=102100&quantizationParameters=%7B%22mode%22%3A%22view%22%2C%22originPosition%22%3A%22upperLeft%22%2C%22tolerance%22%3A78271.516953125%2C%22extent%22%3A%7B%22xmin%22%3A-20037508.34%2C%22ymin%22%3A-20037508.339999996%2C%22xmax%22%3A20037508.34%2C%22ymax%22%3A20037508.340000004%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D%7D`);
|
|
258
281
|
expect((_o = url === null || url === void 0 ? void 0 : url.envelope) === null || _o === void 0 ? void 0 : _o.xmin).to.be.closeTo(overrideGeom.geom.xmin, 0.01);
|
|
259
282
|
expect((_p = url === null || url === void 0 ? void 0 : url.envelope) === null || _p === void 0 ? void 0 : _p.ymin).to.be.closeTo(overrideGeom.geom.ymin, 0.01);
|
|
260
283
|
expect((_q = url === null || url === void 0 ? void 0 : url.envelope) === null || _q === void 0 ? void 0 : _q.xmax).to.be.closeTo(overrideGeom.geom.xmax, 0.01);
|
|
@@ -263,7 +286,7 @@ describe("ArcGisFeatureProvider", () => {
|
|
|
263
286
|
expect((_t = url === null || url === void 0 ? void 0 : url.envelope) === null || _t === void 0 ? void 0 : _t.spatialReference.latestWkid).to.be.equal(overrideGeom.geom.spatialReference.latestWkid);
|
|
264
287
|
// Now test with a different tolerance value
|
|
265
288
|
url = provider3.constructFeatureUrl(0, 0, 0, "PBF", overrideGeom, undefined, 10);
|
|
266
|
-
expect(url === null || url === void 0 ? void 0 : url.url).to.equals(`https://dummy.com/0/query
|
|
289
|
+
expect(url === null || url === void 0 ? void 0 : url.url).to.equals(`https://dummy.com/0/query?f=PBF&resultType=tile&maxRecordCountFactor=3&returnExceededLimitFeatures=false&outSR=102100&geometryType=esriGeometryEnvelope&geometry=%7B%22xmin%22%3A-50%2C%22ymin%22%3A-50%2C%22xmax%22%3A50%2C%22ymax%22%3A50%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D&units=esriSRUnit_Meter&inSR=102100&quantizationParameters=%7B%22mode%22%3A%22view%22%2C%22originPosition%22%3A%22upperLeft%22%2C%22tolerance%22%3A78271.516953125%2C%22extent%22%3A%7B%22xmin%22%3A-20037508.34%2C%22ymin%22%3A-20037508.339999996%2C%22xmax%22%3A20037508.34%2C%22ymax%22%3A20037508.340000004%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D%7D&distance=782715.16953125`);
|
|
267
290
|
expect((_u = url === null || url === void 0 ? void 0 : url.envelope) === null || _u === void 0 ? void 0 : _u.xmin).to.be.closeTo(overrideGeom.geom.xmin, 0.01);
|
|
268
291
|
expect((_v = url === null || url === void 0 ? void 0 : url.envelope) === null || _v === void 0 ? void 0 : _v.ymin).to.be.closeTo(overrideGeom.geom.ymin, 0.01);
|
|
269
292
|
expect((_w = url === null || url === void 0 ? void 0 : url.envelope) === null || _w === void 0 ? void 0 : _w.xmax).to.be.closeTo(overrideGeom.geom.xmax, 0.01);
|
|
@@ -285,7 +308,7 @@ describe("ArcGisFeatureProvider", () => {
|
|
|
285
308
|
};
|
|
286
309
|
});
|
|
287
310
|
sandbox.stub(core_frontend_1.ArcGisUtilities, "getServiceJson").callsFake(async function _(_url, _formatId, _userName, _password, _ignoreCache) {
|
|
288
|
-
return { capabilities: "Query" };
|
|
311
|
+
return { currentVersion: 11, capabilities: "Query" };
|
|
289
312
|
});
|
|
290
313
|
sandbox.stub(map_layers_formats_1.ArcGisFeatureProvider.prototype, "constructFeatureUrl").callsFake(function _(_row, _column, _zoomLevel, _format, _geomOverride, _outFields, _tolerance, _returnGeometry) {
|
|
291
314
|
return undefined;
|
|
@@ -307,12 +330,13 @@ describe("ArcGisFeatureProvider", () => {
|
|
|
307
330
|
return {
|
|
308
331
|
defaultVisibility: true,
|
|
309
332
|
supportedQueryFormats: "PBF, JSON",
|
|
333
|
+
supportsCoordinatesQuantization: true,
|
|
310
334
|
minScale: 600000,
|
|
311
335
|
maxScale: 5000,
|
|
312
336
|
};
|
|
313
337
|
});
|
|
314
338
|
sandbox.stub(core_frontend_1.ArcGisUtilities, "getServiceJson").callsFake(async function _(_url, _formatId, _userName, _password, _ignoreCache) {
|
|
315
|
-
return { capabilities: "Query" };
|
|
339
|
+
return { currentVersion: 11, capabilities: "Query" };
|
|
316
340
|
});
|
|
317
341
|
sandbox.stub(core_frontend_1.ArcGISImageryProvider.prototype, "fetch").callsFake(async function _(_url, _options) {
|
|
318
342
|
const test = {
|
|
@@ -471,7 +495,7 @@ describe("ArcGisFeatureProvider", () => {
|
|
|
471
495
|
};
|
|
472
496
|
});
|
|
473
497
|
sandbox.stub(core_frontend_1.ArcGisUtilities, "getServiceJson").callsFake(async function _(_url, _formatId, _userName, _password, _ignoreCache) {
|
|
474
|
-
return { capabilities: "Query" };
|
|
498
|
+
return { currentVersion: 11, capabilities: "Query" };
|
|
475
499
|
});
|
|
476
500
|
sandbox.stub(HTMLCanvasElement.prototype, "getContext").callsFake(function _(_contextId, _options) {
|
|
477
501
|
return {};
|