@itwin/map-layers-formats 4.6.0-dev.8 → 4.6.0-dev.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/ArcGisFeature/ArcGisCanvasRenderer.js.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisFeatureFormat.js.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.js.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisFeatureQuery.js.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisFeatureReader.js.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisFeatureResponse.js.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisJsonFeatureReader.js.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisPbfFeatureReader.js.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.js.map +1 -1
- package/lib/cjs/ArcGisFeature/EsriSymbology.js.map +1 -1
- package/lib/cjs/ArcGisFeature/esriPBuffer.gen.js.map +1 -1
- package/lib/cjs/Icons/MapInfoIcon.js.map +1 -1
- package/lib/cjs/Tools/MapFeatureInfoDecorator.js.map +1 -1
- package/lib/cjs/Tools/MapFeatureInfoTool.js.map +1 -1
- package/lib/cjs/map-layers-formats.js.map +1 -1
- package/lib/cjs/mapLayersFormats.js.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisCanvasRenderer.js.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisFeatureFormat.js.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.js.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisFeatureQuery.js.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisFeatureReader.js.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisFeatureResponse.js.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisJsonFeatureReader.js.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisPbfFeatureReader.js.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.js.map +1 -1
- package/lib/esm/ArcGisFeature/EsriSymbology.js.map +1 -1
- package/lib/esm/ArcGisFeature/esriPBuffer.gen.js.map +1 -1
- package/lib/esm/Icons/MapInfoIcon.js.map +1 -1
- package/lib/esm/Tools/MapFeatureInfoDecorator.js.map +1 -1
- package/lib/esm/Tools/MapFeatureInfoTool.js.map +1 -1
- package/lib/esm/map-layers-formats.js.map +1 -1
- package/lib/esm/mapLayersFormats.js.map +1 -1
- package/lib/public/locales/en/mapLayersFormats.json +18 -18
- package/package.json +12 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MapInfoIcon.js","sourceRoot":"","sources":["../../../src/Icons/MapInfoIcon.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,gBAAgB;AAChB,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,OAAO,EAAE,goCAAgoC;CACjoC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @internal */\nexport const mapInfoIcon = {\n dataUri: \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZD0iTTUuODYyIDUuMTYyYTEuNDg4IDEuNDg4IDAgMSAxLTIuOTc1IDAgMS40ODggMS40ODggMCAwIDEgMi45NzUgMFpNMTIgN2MuNzEyIDAgMS4zODcuMTU0IDIgLjQyMlYwaC0xLjA1bC0yLjI3OCA3LjIwMUE0Ljk1IDQuOTUgMCAwIDEgMTIgN1ptLTQuNzkyIDYuMzQ5TDcgMTRIMFYwaDExLjQ2M0w4Ljg3MiA4LjEyOUM3LjczOSA5LjA0NSA3IDEwLjQyOSA3IDEyYzAgLjQ3LjA4Ni45MTcuMjA4IDEuMzQ5Wm0tLjAzMy04LjE4N1Y1LjA5YTIuNzY0IDIuNzY0IDAgMCAwLTIuODcyLTIuNzI4IDIuNzY0IDIuNzY0IDAgMCAwLTIuNzI4IDIuOEE2LjkwMyA2LjkwMyAwIDAgMCAyLjggOC4zMTJjLjQ3NC44NzcgMSAxLjcyNCAxLjU3NSAyLjUzOCAwIDAgLjk2My0xLjQ4OCAxLjU3NS0yLjUzN2E2LjkwMyA2LjkwMyAwIDAgMCAxLjIyNS0zLjE1Wk0xNiAxMmE0IDQgMCAxIDEtOCAwIDQgNCAwIDAgMSA4IDBabS00LjA1LTEuODVhLjQ2OS40NjkgMCAwIDAgLjUuNS42NTUuNjU1IDAgMCAwIC42NS0uNmwtLjAwMi0uMDMyQS40Ni40NiAwIDAgMCAxMi42IDkuNmEuNjE1LjYxNSAwIDAgMC0uNjUuNTVabTEuMTUgMy40NS0uMTUtLjJhMSAxIDAgMCAxLS41NS4zYy0uMSAwLS4xLS4wNS0uMDUtLjNsLjM1LTEuM2MuMTUtLjUuMS0uOC0uMTUtLjhhMy4yNSAzLjI1IDAgMCAwLTEuNjUuOGwuMS4yNWMuMTk4LS4xMjUuNDItLjIxLjY1LS4yNS4wNSAwIC4wNS4wNSAwIC4yNWwtLjMgMS4yYy0uMi43IDAgLjg1LjI1Ljg1YTIuODg1IDIuODg1IDAgMCAwIDEuNS0uOFoiLz48L3N2Zz4=\",\n} as const;\n"]}
|
|
1
|
+
{"version":3,"file":"MapInfoIcon.js","sourceRoot":"","sources":["../../../src/Icons/MapInfoIcon.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,gBAAgB;AAChB,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,OAAO,EAAE,goCAAgoC;CACjoC,CAAC","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\n/** @internal */\r\nexport const mapInfoIcon = {\r\n dataUri: \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZD0iTTUuODYyIDUuMTYyYTEuNDg4IDEuNDg4IDAgMSAxLTIuOTc1IDAgMS40ODggMS40ODggMCAwIDEgMi45NzUgMFpNMTIgN2MuNzEyIDAgMS4zODcuMTU0IDIgLjQyMlYwaC0xLjA1bC0yLjI3OCA3LjIwMUE0Ljk1IDQuOTUgMCAwIDEgMTIgN1ptLTQuNzkyIDYuMzQ5TDcgMTRIMFYwaDExLjQ2M0w4Ljg3MiA4LjEyOUM3LjczOSA5LjA0NSA3IDEwLjQyOSA3IDEyYzAgLjQ3LjA4Ni45MTcuMjA4IDEuMzQ5Wm0tLjAzMy04LjE4N1Y1LjA5YTIuNzY0IDIuNzY0IDAgMCAwLTIuODcyLTIuNzI4IDIuNzY0IDIuNzY0IDAgMCAwLTIuNzI4IDIuOEE2LjkwMyA2LjkwMyAwIDAgMCAyLjggOC4zMTJjLjQ3NC44NzcgMSAxLjcyNCAxLjU3NSAyLjUzOCAwIDAgLjk2My0xLjQ4OCAxLjU3NS0yLjUzN2E2LjkwMyA2LjkwMyAwIDAgMCAxLjIyNS0zLjE1Wk0xNiAxMmE0IDQgMCAxIDEtOCAwIDQgNCAwIDAgMSA4IDBabS00LjA1LTEuODVhLjQ2OS40NjkgMCAwIDAgLjUuNS42NTUuNjU1IDAgMCAwIC42NS0uNmwtLjAwMi0uMDMyQS40Ni40NiAwIDAgMCAxMi42IDkuNmEuNjE1LjYxNSAwIDAgMC0uNjUuNTVabTEuMTUgMy40NS0uMTUtLjJhMSAxIDAgMCAxLS41NS4zYy0uMSAwLS4xLS4wNS0uMDUtLjNsLjM1LTEuM2MuMTUtLjUuMS0uOC0uMTUtLjhhMy4yNSAzLjI1IDAgMCAwLTEuNjUuOGwuMS4yNWMuMTk4LS4xMjUuNDItLjIxLjY1LS4yNS4wNSAwIC4wNS4wNSAwIC4yNWwtLjMgMS4yYy0uMi43IDAgLjg1LjI1Ljg1YTIuODg1IDIuODg1IDAgMCAwIDEuNS0uOFoiLz48L3N2Zz4=\",\r\n} as const;\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MapFeatureInfoDecorator.js","sourceRoot":"","sources":["../../../src/Tools/MapFeatureInfoDecorator.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/* eslint-disable no-console */\nimport { Base64EncodedString, ColorDef } from \"@itwin/core-common\";\nimport {\n BeButtonEvent, Cluster, CollectTileStatus, DecorateContext, Decorator, DisclosedTileTreeSet,\n GeometryTileTreeReference, GraphicType, IModelApp, MapTileTreeReference, Marker, MarkerImage, MarkerSet,\n Tile, TileGeometryCollector, TileTreeReference, TileUser, Viewport } from \"@itwin/core-frontend\";\nimport { ConvexClipPlaneSet, CurvePrimitive, GrowableXYZArray, LineString3d, Point2d, Point3d, PolyfaceQuery, Range3d, SweepLineStringToFacetsOptions, Transform, Vector3d, XAndY, XYAndZ } from \"@itwin/core-geometry\";\nimport { MapFeatureInfoToolData } from \"./MapFeatureInfoTool\";\n\n/** A TileGeometryCollector that restricts collection to tiles that overlap a line string.\n/* @internal\n*/\nclass DrapeLineStringCollector extends TileGeometryCollector {\n constructor(user: TileUser, chordTolerance: number, range: Range3d, transform: Transform, private _points: GrowableXYZArray) {\n super({ user, chordTolerance, range, transform });\n }\n\n public override collectTile(tile: Tile): CollectTileStatus {\n let status = super.collectTile(tile);\n if (\"reject\" !== status && !this.rangeOverlapsLineString(tile.range))\n status = \"reject\";\n\n return status;\n }\n\n private rangeOverlapsLineString(range: Range3d) {\n let inside = false;\n const clipper = ConvexClipPlaneSet.createRange3dPlanes(range, true, true, true, true, false, false);\n if (this._options.transform)\n clipper.transformInPlace(this._options.transform);\n\n for (let i = 0; i < this._points.length - 1 && !inside; i++)\n inside = clipper.announceClippedSegmentIntervals(0, 1, this._points.getPoint3dAtUncheckedPointIndex(i), this._points.getPoint3dAtUncheckedPointIndex(i + 1));\n\n return inside;\n }\n}\n\n/** @internal */\nclass TerrainDraper implements TileUser {\n public readonly tileUserId: number;\n\n public constructor(public readonly viewport: Viewport, public readonly treeRef: GeometryTileTreeReference) {\n this.tileUserId = TileUser.generateId();\n IModelApp.tileAdmin.registerUser(this);\n }\n\n public dispose(): void {\n IModelApp.tileAdmin.forgetUser(this);\n }\n\n public get iModel() { return this.viewport.iModel; }\n\n public onRequestStateChanged() {\n this.viewport.invalidateDecorations();\n }\n\n public discloseTileTrees(trees: DisclosedTileTreeSet) {\n trees.disclose(this.treeRef);\n }\n\n public drapeLineString(outStrings: CurvePrimitive[], inPoints: GrowableXYZArray, tolerance: number, maxDistance = 1.0E5): \"loading\" | \"complete\" {\n const tree = this.treeRef.treeOwner.load();\n if (!tree)\n return \"loading\";\n\n const range = Range3d.createNull();\n range.extendArray(inPoints);\n range.extendZOnly(-maxDistance); // Expand - but not so much that we get opposite side of globe.\n range.extendZOnly(maxDistance);\n\n const collector = new DrapeLineStringCollector(this, tolerance, range, tree.iModelTransform, inPoints);\n this.treeRef.collectTileGeometry(collector);\n collector.requestMissingTiles();\n\n if (collector.isAllGeometryLoaded && collector.polyfaces.length > 0) {\n for (const polyface of collector.polyfaces)\n outStrings.push(...PolyfaceQuery.sweepLineStringToFacets(inPoints, polyface,\n SweepLineStringToFacetsOptions.create(Vector3d.unitZ(), undefined, true, true, false, false)));\n return \"complete\";\n }\n\n return \"loading\";\n }\n}\n\n/** @internal */\nclass PinMarker extends Marker {\n public constructor(worldLocation: XYAndZ, size: XAndY, image: MarkerImage) {\n super(worldLocation, size);\n this.image = image;\n this.imageOffset = new Point3d(0, Math.floor(size.y * .5));\n }\n}\n\n/** @internal */\nclass PinMarkerCluster extends Marker {\n /** Create a new cluster marker */\n constructor(location: XYAndZ, size: XAndY, cluster: Cluster<PinMarker>, image: MarkerImage | Promise<MarkerImage> | undefined) {\n super(location, size);\n\n this.title = IModelApp.localization.getLocalizedString(\"mapLayersFormats:Messages.MapFeatureInfoDecorator.clusterZoomIn\", { nbInstances: cluster.markers.length});\n\n this.imageOffset = new Point3d(0, size.y * 0.5);\n this.label = cluster.markers.length.toLocaleString();\n this.labelColor = \"black\";\n this.labelFont = \"bold 14px sans-serif\";\n\n if (image)\n this.setImage(image);\n }\n\n /** Show the cluster as a white circle with an outline */\n public override drawFunc(ctx: CanvasRenderingContext2D): void {\n ctx.beginPath();\n ctx.strokeStyle = \"#372528\";\n ctx.fillStyle = \"white\";\n ctx.lineWidth = 5;\n ctx.arc(0, 0, this.size.x * 0.5, 0, Math.PI * 2);\n ctx.fill();\n ctx.stroke();\n }\n\n public override onMouseButton(_ev: BeButtonEvent): boolean { return true; } // Don't allow clicks to be sent to active tool...\n}\n\n/** @internal */\nclass PinMarkerSet extends MarkerSet<PinMarker> {\n protected getClusterMarker(cluster: Cluster<PinMarker>): Marker {\n // No image passed to the cluster, we prefer to have the circle only\n return new PinMarkerCluster(cluster.getClusterLocation(), cluster.markers[0].size, cluster, undefined);\n }\n}\n\n/** @internal */\ninterface DrapePointState {\n count: number;\n collectorState: string;\n}\n\n/** @internal */\nexport class MapFeatureInfoDecorator implements Decorator {\n public hidden = false;\n public readonly useCachedDecorations = true;\n public readonly disableTerrainDraper = true;\n public markerSize = new Point2d(32, 32);\n public lineWidth = 3;\n private _highlightColor = ColorDef.from(0, 255, 255, 127);\n\n public get highlightColor() { return this._highlightColor;}\n public set highlightColor(color: ColorDef) {\n this.updateMarkerImage();\n this._highlightColor = color;\n }\n\n public get defaultMarkerIconSvgXml() { return `<svg class=\"indicator\" viewBox=\"0 0 22 22\" width=\"22\" height=\"22\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"m11 0a7.44506 7.44506 0 0 0 -7.5 7.2875c0 1.65 1.132 4.2625 3.25477 8.1125 1.55652 2.75 4.24523 6.6 4.24523 6.6s2.68865-3.9875 4.24528-6.7375c2.12272-3.85 3.25472-6.4625 3.25472-8.1125a7.4215 7.4215 0 0 0 -7.5-7.15z\" fill=\"black\"/><path d=\"m11 1.01715a6.46476 6.46476 0 0 0 -6.48285 6.27033c0 1.72619 1.67181 4.97973 3.12836 7.62139.97564 1.7237 2.42828 3.92176 3.34118 5.27161.91413-1.39148 2.385-3.673 3.37336-5.41907 1.451-2.63171 3.1228-5.88525 3.1228-7.61139a6.39982 6.39982 0 0 0 -6.48285-6.13287zm.00183 8.98285a3 3 0 1 1 3-3 3 3 0 0 1 -3 3z\" fill=\"${this.highlightColor.toRgbString()}\"/></svg>`; }\n\n private _drapePoints = new GrowableXYZArray();\n private _scratchPoints = new GrowableXYZArray();\n\n private _drapePointsStates: DrapePointState[] = [];\n private _drapedStrings?: LineString3d[];\n private _allGeomDraped = false;\n private _draper?: TerrainDraper;\n private _markerImage: HTMLImageElement;\n private _markerSet = new PinMarkerSet();\n\n // Extra markers can be added outside the normal state\n public extraMarkers: Point3d[]|undefined;\n\n private _state: MapFeatureInfoToolData | undefined;\n\n private readonly _graphicType = GraphicType.WorldOverlay;\n\n public constructor() {\n this._markerImage = new Image();\n this.updateMarkerImage();\n }\n\n private updateMarkerImage() {\n const base64 = Base64EncodedString.encode(this.defaultMarkerIconSvgXml);\n this._markerImage.src = `data:image/svg+xml;base64,${base64}`;\n }\n\n private _computeChordTolerance(viewport: Viewport, applyAspectRatioSkew: boolean, computeRange: () => Range3d) {\n let pixelSize = 1;\n // Compute the horizontal distance in meters between two adjacent pixels at the center of the geometry.\n pixelSize = viewport.getPixelSizeAtPoint(computeRange().center);\n pixelSize = viewport.target.adjustPixelSizeForLOD(pixelSize);\n\n // Aspect ratio skew > 1.0 stretches the view in Y. In that case use the smaller vertical pixel distance for our stroke tolerance.\n const skew = applyAspectRatioSkew ? viewport.view.getAspectRatioSkew() : 0;\n if (skew > 1)\n pixelSize /= skew;\n return pixelSize * 0.25;\n }\n\n public clearState = () => {\n this._state = undefined;\n };\n\n public setState = (state: MapFeatureInfoToolData) => {\n\n this._drapedStrings = undefined;\n this._allGeomDraped = false;\n this.hidden = false;\n\n this._state = state;\n IModelApp.viewManager.invalidateCachedDecorationsAllViews(this);\n\n this._drapePoints.clear();\n this._drapePointsStates = [];\n\n if (!this.disableTerrainDraper && this._state.mapInfo?.layerInfos && state.hit.viewport.displayStyle.displayTerrain) {\n\n if (state.hit?.modelId) {\n const drapeTreeRef = this.getGeometryTreeRef(state.hit.viewport);\n if (drapeTreeRef) {\n this._draper = new TerrainDraper(state.hit.viewport, drapeTreeRef);\n return;\n }\n }\n }\n\n if (this._draper) {\n // Dispose draper every time?\n this._draper.dispose();\n this._draper = undefined;\n }\n };\n\n private getGeometryTreeRef(vp: Viewport): GeometryTileTreeReference | undefined {\n let treeRef: GeometryTileTreeReference | undefined;\n if (vp.backgroundMapSettings.applyTerrain) {\n vp.forEachMapTreeRef((ref: TileTreeReference) => {\n if (!treeRef && ref instanceof MapTileTreeReference) {\n treeRef = ref.createGeometryTreeReference();\n }\n });\n }\n\n return treeRef;\n }\n\n protected renderGraphics(context: DecorateContext) {\n this._markerSet.markers.clear();\n\n if (this._state?.mapInfo?.layerInfos === undefined || this.hidden) {\n return undefined;\n }\n\n let transform: Transform|undefined;\n const groundBias = context.viewport.displayStyle.backgroundMapSettings.groundBias;\n if (groundBias !== 0) {\n transform = Transform.createTranslationXYZ(0, 0 , groundBias);\n }\n const builder = context.createGraphicBuilder(this._graphicType, transform);\n\n if (this._draper) {\n if (this._drapePoints.length === 0 && this._state.mapInfo.layerInfos) {\n\n for (const layerInfo of this._state.mapInfo.layerInfos) {\n if (layerInfo.subLayerInfos) {\n for (const subLayerInfo of layerInfo.subLayerInfos) {\n for (const feature of subLayerInfo.features) {\n if (feature.geometries) {\n for (const geom of feature.geometries) {\n if (geom.graphic.type === \"linestring\") {\n this._drapePointsStates.push({ count: geom.graphic.points.length, collectorState: \"loading\" });\n this._drapePoints.pushAll(geom.graphic.points);\n }\n }\n }\n }\n }\n\n }\n }\n }\n\n if (!this._allGeomDraped) {\n\n let hasMissingLineStrings = false;\n let drapePointsOffset = 0;\n for (const state of this._drapePointsStates) {\n\n if (state.collectorState === \"loading\") {\n this._scratchPoints.clear();\n this._scratchPoints.resize(state.count);\n\n let dstIdx = 0;\n for (let srcIdx = drapePointsOffset; srcIdx < drapePointsOffset + state.count; srcIdx++) {\n this._scratchPoints.transferFromGrowableXYZArray(dstIdx++, this._drapePoints, srcIdx);\n }\n\n const drapeRange = Range3d.createNull();\n drapeRange.extendArray(this._scratchPoints);\n const drapedStrings: LineString3d[] = [];\n const tolerance = this._computeChordTolerance(context.viewport, true, () => drapeRange) * 10; // 10 pixels\n if (\"loading\" === this._draper.drapeLineString(drapedStrings, this._scratchPoints, tolerance)) {\n hasMissingLineStrings = true;\n } else {\n this.addDrapedStrings(drapedStrings);\n state.collectorState = \"complete\";\n }\n }\n drapePointsOffset += state.count;\n }\n this._allGeomDraped = !hasMissingLineStrings;\n }\n\n if (this._drapedStrings) {\n builder.setSymbology(this.highlightColor, this.highlightColor, this.lineWidth);\n this._drapedStrings.forEach((line) => builder.addLineString(line.points));\n }\n\n } else {\n builder.setSymbology(this.highlightColor, this.highlightColor, this.lineWidth);\n for (const layerInfo of this._state.mapInfo.layerInfos) {\n if (layerInfo.subLayerInfos && !(layerInfo.subLayerInfos instanceof HTMLElement)) {\n for (const subLayerInfo of layerInfo.subLayerInfos) {\n for (const feature of subLayerInfo.features) {\n if (feature.geometries) {\n for (const geom of feature.geometries) {\n if (geom.graphic.type === \"pointstring\") {\n for (const point of geom.graphic.points)\n this._markerSet.markers.add(new PinMarker(point, this.markerSize, this._markerImage));\n } else {\n builder.addPrimitive(geom.graphic);\n }\n\n }\n }\n }\n }\n\n }\n\n }\n }\n\n // Add extra markers if any specified\n if ( this.extraMarkers !== undefined) {\n this.extraMarkers.forEach((markerPoint)=> {\n builder.setSymbology(this.highlightColor, this.highlightColor, this.lineWidth);\n this._markerSet.markers.add(new PinMarker(markerPoint, this.markerSize, this._markerImage));\n });\n }\n\n return builder.finish();\n }\n\n public addDrapedStrings(drapedStrings: LineString3d[]) {\n if (!this._drapedStrings) {\n this._drapedStrings = [];\n }\n for (const ds of drapedStrings)\n this._drapedStrings.push(ds);\n }\n\n public decorate(context: DecorateContext): void {\n const graphics = this.renderGraphics(context);\n if (graphics)\n context.addDecoration(this._graphicType, graphics);\n\n this._markerSet.addDecoration(context);\n return;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"MapFeatureInfoDecorator.js","sourceRoot":"","sources":["../../../src/Tools/MapFeatureInfoDecorator.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/* eslint-disable no-console */\r\nimport { Base64EncodedString, ColorDef } from \"@itwin/core-common\";\r\nimport {\r\n BeButtonEvent, Cluster, CollectTileStatus, DecorateContext, Decorator, DisclosedTileTreeSet,\r\n GeometryTileTreeReference, GraphicType, IModelApp, MapTileTreeReference, Marker, MarkerImage, MarkerSet,\r\n Tile, TileGeometryCollector, TileTreeReference, TileUser, Viewport } from \"@itwin/core-frontend\";\r\nimport { ConvexClipPlaneSet, CurvePrimitive, GrowableXYZArray, LineString3d, Point2d, Point3d, PolyfaceQuery, Range3d, SweepLineStringToFacetsOptions, Transform, Vector3d, XAndY, XYAndZ } from \"@itwin/core-geometry\";\r\nimport { MapFeatureInfoToolData } from \"./MapFeatureInfoTool\";\r\n\r\n/** A TileGeometryCollector that restricts collection to tiles that overlap a line string.\r\n/* @internal\r\n*/\r\nclass DrapeLineStringCollector extends TileGeometryCollector {\r\n constructor(user: TileUser, chordTolerance: number, range: Range3d, transform: Transform, private _points: GrowableXYZArray) {\r\n super({ user, chordTolerance, range, transform });\r\n }\r\n\r\n public override collectTile(tile: Tile): CollectTileStatus {\r\n let status = super.collectTile(tile);\r\n if (\"reject\" !== status && !this.rangeOverlapsLineString(tile.range))\r\n status = \"reject\";\r\n\r\n return status;\r\n }\r\n\r\n private rangeOverlapsLineString(range: Range3d) {\r\n let inside = false;\r\n const clipper = ConvexClipPlaneSet.createRange3dPlanes(range, true, true, true, true, false, false);\r\n if (this._options.transform)\r\n clipper.transformInPlace(this._options.transform);\r\n\r\n for (let i = 0; i < this._points.length - 1 && !inside; i++)\r\n inside = clipper.announceClippedSegmentIntervals(0, 1, this._points.getPoint3dAtUncheckedPointIndex(i), this._points.getPoint3dAtUncheckedPointIndex(i + 1));\r\n\r\n return inside;\r\n }\r\n}\r\n\r\n/** @internal */\r\nclass TerrainDraper implements TileUser {\r\n public readonly tileUserId: number;\r\n\r\n public constructor(public readonly viewport: Viewport, public readonly treeRef: GeometryTileTreeReference) {\r\n this.tileUserId = TileUser.generateId();\r\n IModelApp.tileAdmin.registerUser(this);\r\n }\r\n\r\n public dispose(): void {\r\n IModelApp.tileAdmin.forgetUser(this);\r\n }\r\n\r\n public get iModel() { return this.viewport.iModel; }\r\n\r\n public onRequestStateChanged() {\r\n this.viewport.invalidateDecorations();\r\n }\r\n\r\n public discloseTileTrees(trees: DisclosedTileTreeSet) {\r\n trees.disclose(this.treeRef);\r\n }\r\n\r\n public drapeLineString(outStrings: CurvePrimitive[], inPoints: GrowableXYZArray, tolerance: number, maxDistance = 1.0E5): \"loading\" | \"complete\" {\r\n const tree = this.treeRef.treeOwner.load();\r\n if (!tree)\r\n return \"loading\";\r\n\r\n const range = Range3d.createNull();\r\n range.extendArray(inPoints);\r\n range.extendZOnly(-maxDistance); // Expand - but not so much that we get opposite side of globe.\r\n range.extendZOnly(maxDistance);\r\n\r\n const collector = new DrapeLineStringCollector(this, tolerance, range, tree.iModelTransform, inPoints);\r\n this.treeRef.collectTileGeometry(collector);\r\n collector.requestMissingTiles();\r\n\r\n if (collector.isAllGeometryLoaded && collector.polyfaces.length > 0) {\r\n for (const polyface of collector.polyfaces)\r\n outStrings.push(...PolyfaceQuery.sweepLineStringToFacets(inPoints, polyface,\r\n SweepLineStringToFacetsOptions.create(Vector3d.unitZ(), undefined, true, true, false, false)));\r\n return \"complete\";\r\n }\r\n\r\n return \"loading\";\r\n }\r\n}\r\n\r\n/** @internal */\r\nclass PinMarker extends Marker {\r\n public constructor(worldLocation: XYAndZ, size: XAndY, image: MarkerImage) {\r\n super(worldLocation, size);\r\n this.image = image;\r\n this.imageOffset = new Point3d(0, Math.floor(size.y * .5));\r\n }\r\n}\r\n\r\n/** @internal */\r\nclass PinMarkerCluster extends Marker {\r\n /** Create a new cluster marker */\r\n constructor(location: XYAndZ, size: XAndY, cluster: Cluster<PinMarker>, image: MarkerImage | Promise<MarkerImage> | undefined) {\r\n super(location, size);\r\n\r\n this.title = IModelApp.localization.getLocalizedString(\"mapLayersFormats:Messages.MapFeatureInfoDecorator.clusterZoomIn\", { nbInstances: cluster.markers.length});\r\n\r\n this.imageOffset = new Point3d(0, size.y * 0.5);\r\n this.label = cluster.markers.length.toLocaleString();\r\n this.labelColor = \"black\";\r\n this.labelFont = \"bold 14px sans-serif\";\r\n\r\n if (image)\r\n this.setImage(image);\r\n }\r\n\r\n /** Show the cluster as a white circle with an outline */\r\n public override drawFunc(ctx: CanvasRenderingContext2D): void {\r\n ctx.beginPath();\r\n ctx.strokeStyle = \"#372528\";\r\n ctx.fillStyle = \"white\";\r\n ctx.lineWidth = 5;\r\n ctx.arc(0, 0, this.size.x * 0.5, 0, Math.PI * 2);\r\n ctx.fill();\r\n ctx.stroke();\r\n }\r\n\r\n public override onMouseButton(_ev: BeButtonEvent): boolean { return true; } // Don't allow clicks to be sent to active tool...\r\n}\r\n\r\n/** @internal */\r\nclass PinMarkerSet extends MarkerSet<PinMarker> {\r\n protected getClusterMarker(cluster: Cluster<PinMarker>): Marker {\r\n // No image passed to the cluster, we prefer to have the circle only\r\n return new PinMarkerCluster(cluster.getClusterLocation(), cluster.markers[0].size, cluster, undefined);\r\n }\r\n}\r\n\r\n/** @internal */\r\ninterface DrapePointState {\r\n count: number;\r\n collectorState: string;\r\n}\r\n\r\n/** @internal */\r\nexport class MapFeatureInfoDecorator implements Decorator {\r\n public hidden = false;\r\n public readonly useCachedDecorations = true;\r\n public readonly disableTerrainDraper = true;\r\n public markerSize = new Point2d(32, 32);\r\n public lineWidth = 3;\r\n private _highlightColor = ColorDef.from(0, 255, 255, 127);\r\n\r\n public get highlightColor() { return this._highlightColor;}\r\n public set highlightColor(color: ColorDef) {\r\n this.updateMarkerImage();\r\n this._highlightColor = color;\r\n }\r\n\r\n public get defaultMarkerIconSvgXml() { return `<svg class=\"indicator\" viewBox=\"0 0 22 22\" width=\"22\" height=\"22\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"m11 0a7.44506 7.44506 0 0 0 -7.5 7.2875c0 1.65 1.132 4.2625 3.25477 8.1125 1.55652 2.75 4.24523 6.6 4.24523 6.6s2.68865-3.9875 4.24528-6.7375c2.12272-3.85 3.25472-6.4625 3.25472-8.1125a7.4215 7.4215 0 0 0 -7.5-7.15z\" fill=\"black\"/><path d=\"m11 1.01715a6.46476 6.46476 0 0 0 -6.48285 6.27033c0 1.72619 1.67181 4.97973 3.12836 7.62139.97564 1.7237 2.42828 3.92176 3.34118 5.27161.91413-1.39148 2.385-3.673 3.37336-5.41907 1.451-2.63171 3.1228-5.88525 3.1228-7.61139a6.39982 6.39982 0 0 0 -6.48285-6.13287zm.00183 8.98285a3 3 0 1 1 3-3 3 3 0 0 1 -3 3z\" fill=\"${this.highlightColor.toRgbString()}\"/></svg>`; }\r\n\r\n private _drapePoints = new GrowableXYZArray();\r\n private _scratchPoints = new GrowableXYZArray();\r\n\r\n private _drapePointsStates: DrapePointState[] = [];\r\n private _drapedStrings?: LineString3d[];\r\n private _allGeomDraped = false;\r\n private _draper?: TerrainDraper;\r\n private _markerImage: HTMLImageElement;\r\n private _markerSet = new PinMarkerSet();\r\n\r\n // Extra markers can be added outside the normal state\r\n public extraMarkers: Point3d[]|undefined;\r\n\r\n private _state: MapFeatureInfoToolData | undefined;\r\n\r\n private readonly _graphicType = GraphicType.WorldOverlay;\r\n\r\n public constructor() {\r\n this._markerImage = new Image();\r\n this.updateMarkerImage();\r\n }\r\n\r\n private updateMarkerImage() {\r\n const base64 = Base64EncodedString.encode(this.defaultMarkerIconSvgXml);\r\n this._markerImage.src = `data:image/svg+xml;base64,${base64}`;\r\n }\r\n\r\n private _computeChordTolerance(viewport: Viewport, applyAspectRatioSkew: boolean, computeRange: () => Range3d) {\r\n let pixelSize = 1;\r\n // Compute the horizontal distance in meters between two adjacent pixels at the center of the geometry.\r\n pixelSize = viewport.getPixelSizeAtPoint(computeRange().center);\r\n pixelSize = viewport.target.adjustPixelSizeForLOD(pixelSize);\r\n\r\n // Aspect ratio skew > 1.0 stretches the view in Y. In that case use the smaller vertical pixel distance for our stroke tolerance.\r\n const skew = applyAspectRatioSkew ? viewport.view.getAspectRatioSkew() : 0;\r\n if (skew > 1)\r\n pixelSize /= skew;\r\n return pixelSize * 0.25;\r\n }\r\n\r\n public clearState = () => {\r\n this._state = undefined;\r\n };\r\n\r\n public setState = (state: MapFeatureInfoToolData) => {\r\n\r\n this._drapedStrings = undefined;\r\n this._allGeomDraped = false;\r\n this.hidden = false;\r\n\r\n this._state = state;\r\n IModelApp.viewManager.invalidateCachedDecorationsAllViews(this);\r\n\r\n this._drapePoints.clear();\r\n this._drapePointsStates = [];\r\n\r\n if (!this.disableTerrainDraper && this._state.mapInfo?.layerInfos && state.hit.viewport.displayStyle.displayTerrain) {\r\n\r\n if (state.hit?.modelId) {\r\n const drapeTreeRef = this.getGeometryTreeRef(state.hit.viewport);\r\n if (drapeTreeRef) {\r\n this._draper = new TerrainDraper(state.hit.viewport, drapeTreeRef);\r\n return;\r\n }\r\n }\r\n }\r\n\r\n if (this._draper) {\r\n // Dispose draper every time?\r\n this._draper.dispose();\r\n this._draper = undefined;\r\n }\r\n };\r\n\r\n private getGeometryTreeRef(vp: Viewport): GeometryTileTreeReference | undefined {\r\n let treeRef: GeometryTileTreeReference | undefined;\r\n if (vp.backgroundMapSettings.applyTerrain) {\r\n vp.forEachMapTreeRef((ref: TileTreeReference) => {\r\n if (!treeRef && ref instanceof MapTileTreeReference) {\r\n treeRef = ref.createGeometryTreeReference();\r\n }\r\n });\r\n }\r\n\r\n return treeRef;\r\n }\r\n\r\n protected renderGraphics(context: DecorateContext) {\r\n this._markerSet.markers.clear();\r\n\r\n if (this._state?.mapInfo?.layerInfos === undefined || this.hidden) {\r\n return undefined;\r\n }\r\n\r\n let transform: Transform|undefined;\r\n const groundBias = context.viewport.displayStyle.backgroundMapSettings.groundBias;\r\n if (groundBias !== 0) {\r\n transform = Transform.createTranslationXYZ(0, 0 , groundBias);\r\n }\r\n const builder = context.createGraphicBuilder(this._graphicType, transform);\r\n\r\n if (this._draper) {\r\n if (this._drapePoints.length === 0 && this._state.mapInfo.layerInfos) {\r\n\r\n for (const layerInfo of this._state.mapInfo.layerInfos) {\r\n if (layerInfo.subLayerInfos) {\r\n for (const subLayerInfo of layerInfo.subLayerInfos) {\r\n for (const feature of subLayerInfo.features) {\r\n if (feature.geometries) {\r\n for (const geom of feature.geometries) {\r\n if (geom.graphic.type === \"linestring\") {\r\n this._drapePointsStates.push({ count: geom.graphic.points.length, collectorState: \"loading\" });\r\n this._drapePoints.pushAll(geom.graphic.points);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n }\r\n }\r\n\r\n if (!this._allGeomDraped) {\r\n\r\n let hasMissingLineStrings = false;\r\n let drapePointsOffset = 0;\r\n for (const state of this._drapePointsStates) {\r\n\r\n if (state.collectorState === \"loading\") {\r\n this._scratchPoints.clear();\r\n this._scratchPoints.resize(state.count);\r\n\r\n let dstIdx = 0;\r\n for (let srcIdx = drapePointsOffset; srcIdx < drapePointsOffset + state.count; srcIdx++) {\r\n this._scratchPoints.transferFromGrowableXYZArray(dstIdx++, this._drapePoints, srcIdx);\r\n }\r\n\r\n const drapeRange = Range3d.createNull();\r\n drapeRange.extendArray(this._scratchPoints);\r\n const drapedStrings: LineString3d[] = [];\r\n const tolerance = this._computeChordTolerance(context.viewport, true, () => drapeRange) * 10; // 10 pixels\r\n if (\"loading\" === this._draper.drapeLineString(drapedStrings, this._scratchPoints, tolerance)) {\r\n hasMissingLineStrings = true;\r\n } else {\r\n this.addDrapedStrings(drapedStrings);\r\n state.collectorState = \"complete\";\r\n }\r\n }\r\n drapePointsOffset += state.count;\r\n }\r\n this._allGeomDraped = !hasMissingLineStrings;\r\n }\r\n\r\n if (this._drapedStrings) {\r\n builder.setSymbology(this.highlightColor, this.highlightColor, this.lineWidth);\r\n this._drapedStrings.forEach((line) => builder.addLineString(line.points));\r\n }\r\n\r\n } else {\r\n builder.setSymbology(this.highlightColor, this.highlightColor, this.lineWidth);\r\n for (const layerInfo of this._state.mapInfo.layerInfos) {\r\n if (layerInfo.subLayerInfos && !(layerInfo.subLayerInfos instanceof HTMLElement)) {\r\n for (const subLayerInfo of layerInfo.subLayerInfos) {\r\n for (const feature of subLayerInfo.features) {\r\n if (feature.geometries) {\r\n for (const geom of feature.geometries) {\r\n if (geom.graphic.type === \"pointstring\") {\r\n for (const point of geom.graphic.points)\r\n this._markerSet.markers.add(new PinMarker(point, this.markerSize, this._markerImage));\r\n } else {\r\n builder.addPrimitive(geom.graphic);\r\n }\r\n\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n }\r\n }\r\n\r\n // Add extra markers if any specified\r\n if ( this.extraMarkers !== undefined) {\r\n this.extraMarkers.forEach((markerPoint)=> {\r\n builder.setSymbology(this.highlightColor, this.highlightColor, this.lineWidth);\r\n this._markerSet.markers.add(new PinMarker(markerPoint, this.markerSize, this._markerImage));\r\n });\r\n }\r\n\r\n return builder.finish();\r\n }\r\n\r\n public addDrapedStrings(drapedStrings: LineString3d[]) {\r\n if (!this._drapedStrings) {\r\n this._drapedStrings = [];\r\n }\r\n for (const ds of drapedStrings)\r\n this._drapedStrings.push(ds);\r\n }\r\n\r\n public decorate(context: DecorateContext): void {\r\n const graphics = this.renderGraphics(context);\r\n if (graphics)\r\n context.addDecoration(this._graphicType, graphics);\r\n\r\n this._markerSet.addDecoration(context);\r\n return;\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MapFeatureInfoTool.js","sourceRoot":"","sources":["../../../src/Tools/MapFeatureInfoTool.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module MapLayersFormats\n */\n\nimport {\n BeButtonEvent,\n EventHandled,\n HitDetail,\n IModelApp,\n LocateFilterStatus,\n LocateResponse,\n MapFeatureInfo,\n MapLayerInfoFromTileTree,\n MapLayerScaleRangeVisibility,\n MapTileTreeScaleRangeVisibility,\n PrimitiveTool,\n ToolAssistance,\n ToolAssistanceImage,\n ToolAssistanceInputMethod,\n ToolAssistanceInstruction,\n ToolAssistanceSection,\n Viewport,\n} from \"@itwin/core-frontend\";\nimport { BeEvent } from \"@itwin/core-bentley\";\nimport { ImageMapLayerSettings, MapImageryProps, MapImagerySettings, MapLayerProps } from \"@itwin/core-common\";\nimport { MapFeatureInfoDecorator } from \"./MapFeatureInfoDecorator\";\nimport { mapInfoIcon } from \"../Icons/MapInfoIcon\";\n\n/**\n * Data provided every time [[MapFeatureInfoTool]] retrieves feature information.\n * @see [[MapFeatureInfoToolData]]\n * @beta\n */\nexport interface MapFeatureInfoToolData {\n hit: HitDetail;\n mapInfo?: MapFeatureInfo;\n}\n\nclass ActiveMapLayerState {\n private _activeMapLayers: MapLayerInfoFromTileTree[]|undefined;\n public get activeMapLayers() {return this._activeMapLayers;}\n public set activeMapLayers(active: MapLayerInfoFromTileTree[]|undefined) {\n this._activeMapLayers = active;\n this.isVisible = true;\n this.isInRange = true;\n this.existsInDisplayStyle = true;\n\n }\n public isVisible: boolean = true;\n public isInRange: boolean = true;\n public existsInDisplayStyle: boolean = true;\n\n public get hasMapLayers() { return (this.activeMapLayers && this.activeMapLayers.length > 0);}\n\n public updateWithImagerySettings(imagery: MapImageryProps) {\n const result = {exists: false, hidden: false};\n this.existsInDisplayStyle = false;\n this.isVisible = false;\n if (this.hasMapLayers) {\n const oldMls = this._activeMapLayers![0]; // consider only first layer for now\n\n let newMls: MapLayerProps|undefined;\n if (oldMls.isBaseLayer) {\n if (typeof (imagery.backgroundBase) !== \"number\") {\n newMls = imagery.backgroundBase;\n }\n } else if (oldMls.index?.isOverlay && imagery.overlayLayers && imagery.overlayLayers.length > oldMls.index.index) {\n newMls = imagery.overlayLayers[oldMls.index.index];\n\n } else if ((oldMls.index !== undefined) && imagery.backgroundLayers && imagery.backgroundLayers.length > oldMls.index.index) {\n newMls = imagery.backgroundLayers[oldMls.index.index];\n }\n\n // We want to make sure that newMls and OldMls are the same (but ignoring the 'visible' flag).\n // by using the serialized JSON object\n let tmpNewMls = newMls;\n if (newMls && newMls.visible !== oldMls.settings.visible) {\n tmpNewMls = {...newMls, visible: oldMls.settings.visible};\n }\n const newJson = tmpNewMls ? JSON.stringify(tmpNewMls) : \"\";\n const oldJson = JSON.stringify(oldMls.settings.toJSON());\n\n if (newJson === oldJson ) {\n // We consider newMls and OldMls to be the same mapLayer instance.\n this.existsInDisplayStyle = true;\n this.isVisible = newMls!.visible ? true : false;\n }\n\n }\n return result;\n }\n\n public updateWithScaleRangeVisibility(layerIndexes: MapLayerScaleRangeVisibility[]) {\n if (this.hasMapLayers) {\n const currentMls = this.activeMapLayers![0]; // consider only first layer for now\n for (const scaleRangeVisibility of layerIndexes) {\n if (currentMls.index?.index === scaleRangeVisibility.index) {\n this.isInRange = scaleRangeVisibility.visibility === MapTileTreeScaleRangeVisibility.Visible || scaleRangeVisibility.visibility === MapTileTreeScaleRangeVisibility.Partial;\n }\n }\n }\n\n }\n}\n\n/** Tools that allow extracting feature information from map-layers.\n * Simulate feature highlight by drawing overlay decorations. It also\n * fire an event that provide further feature information meant to be displayed in a UI / Widget.\n * @see [[MapFeatureInfoToolData]]\n * @beta\n */\nexport class MapFeatureInfoTool extends PrimitiveTool {\n public readonly onInfoReady = new BeEvent<(data: MapFeatureInfoToolData) => void>();\n public readonly onInfoCleared = new BeEvent();\n\n public static override toolId = \"MapFeatureInfoTool\";\n public static override iconSpec = mapInfoIcon.dataUri;\n\n private _decorator: MapFeatureInfoDecorator = new MapFeatureInfoDecorator();\n private _layerSettingsCache = new Map<string, MapLayerInfoFromTileTree[]>();\n\n private _state: ActiveMapLayerState = new ActiveMapLayerState();\n private readonly _detachListeners: VoidFunction[] = [];\n private _detachOnMapImageryChanged: VoidFunction|undefined;\n\n public override requireWriteableTarget(): boolean {\n return false;\n }\n\n /** @internal */\n protected setupAndPromptForNextAction(): void {\n this.showPrompt();\n }\n\n private updateDecorator(vp: Viewport) {\n if (this._state.existsInDisplayStyle) {\n if (this._state.isInRange) {\n this._decorator.hidden = !this._state.isVisible;\n }\n } else {\n // Flush existing decorations until a new selection is made\n this.onInfoCleared.raiseEvent();\n this._decorator.clearState();\n }\n vp.invalidateDecorations();\n }\n\n public override async onPostInstall() {\n await super.onPostInstall();\n\n this.setupAndPromptForNextAction();\n\n this.initLocateElements();\n IModelApp.locateManager.options.allowDecorations = true;\n\n this._layerSettingsCache.clear();\n\n // Listen of display style configuration changes, that way we don't have to restart the tool to be up to date.\n const vp = this.targetView;\n if (vp) {\n const mapImageryChangeHandler = (newImagery: Readonly<MapImagerySettings>) => {\n if (this._state.hasMapLayers) {\n this._state.updateWithImagerySettings(newImagery.toJSON());\n this.updateDecorator(vp);\n }\n this._layerSettingsCache.clear();\n };\n\n this._detachListeners.push(vp.onChangeView.addListener((viewport, _previousViewState) => {\n\n // When a saved view is loaded, 'onMapImageryChanged' events are no longer handled, we have to re-attach.\n if (this._detachOnMapImageryChanged) {\n this._detachOnMapImageryChanged();\n }\n this._detachOnMapImageryChanged = viewport.displayStyle.settings.onMapImageryChanged.addListener(mapImageryChangeHandler);\n\n if (this._state.hasMapLayers) {\n this._state.updateWithImagerySettings({\n backgroundBase: viewport.displayStyle.backgroundMapBase.toJSON(),\n backgroundLayers: viewport.displayStyle.getMapLayers(false).map((value) => value.toJSON()),\n overlayLayers: viewport.displayStyle.getMapLayers(true).map((value) => value.toJSON()),\n });\n this.updateDecorator(vp);\n }\n this._layerSettingsCache.clear();\n }));\n\n this._detachOnMapImageryChanged = vp.displayStyle.settings.onMapImageryChanged.addListener(mapImageryChangeHandler);\n\n // Every time a layer goes out of range it, its associated decoration should be hidden (and restore if enter again the range)\n this._detachListeners.push(vp.onMapLayerScaleRangeVisibilityChanged.addListener(((layerIndexes: MapLayerScaleRangeVisibility[]) => {\n if (this._state.hasMapLayers) {\n this._state.updateWithScaleRangeVisibility(layerIndexes);\n if (this._state.existsInDisplayStyle && this._state.isVisible) {\n this._decorator.hidden = !this._state.isInRange;\n vp.invalidateDecorations();\n }\n }\n this._layerSettingsCache.clear();\n })));\n\n }\n\n IModelApp.viewManager.addDecorator(this._decorator);\n\n }\n\n public override async onCleanup() {\n this._detachListeners.forEach((f) => f());\n this._detachListeners.length = 0;\n if (this._detachOnMapImageryChanged) {\n this._detachOnMapImageryChanged();\n }\n\n IModelApp.viewManager.dropDecorator(this._decorator);\n }\n\n /**\n * Get map layer information from a hit.\n * @param hit The hit to get info from.\n * @returns Returns a list of [[MapLayerInfoFromTileTree]]s.\n * @internal\n */\n private getMapLayerInfoFromHit(hit: HitDetail) {\n let mapLayerFromHit: MapLayerInfoFromTileTree[] = [];\n const fromCache = this._layerSettingsCache.get(hit.sourceId);\n if (fromCache) {\n mapLayerFromHit = fromCache;\n } else if (this.targetView) {\n mapLayerFromHit = this.targetView?.mapLayerFromHit(hit).filter(((info) => info.settings instanceof ImageMapLayerSettings && info.provider?.supportsMapFeatureInfo));\n this._layerSettingsCache.set(hit.sourceId, mapLayerFromHit);\n }\n\n return mapLayerFromHit;\n }\n\n public override async getToolTip(hit: HitDetail): Promise<HTMLElement | string> {\n const infos = this.getMapLayerInfoFromHit(hit);\n if (infos.length > 0) {\n const names = infos.map((info) => info.settings.name);\n return `Layer${names.length > 1 ? \"s\" : \"\"}: ${names.join(\", \")}`;\n }\n return \"\";\n }\n\n public override async filterHit(hit: HitDetail, _out?: LocateResponse): Promise<LocateFilterStatus> {\n return this.getMapLayerInfoFromHit(hit).length > 0 ? LocateFilterStatus.Accept : LocateFilterStatus.Reject;\n }\n\n public override async onDataButtonDown(\n ev: BeButtonEvent,\n ): Promise<EventHandled> {\n const hit = await IModelApp.locateManager.doLocate(\n new LocateResponse(),\n true,\n ev.point,\n ev.viewport,\n ev.inputSource,\n );\n if (hit !== undefined) {\n let mapInfo: MapFeatureInfo | undefined;\n\n const mapLayersHit = this.getMapLayerInfoFromHit(hit);\n if (mapLayersHit.length > 0) {\n this._state.activeMapLayers = mapLayersHit;\n IModelApp.toolAdmin.setCursor(\"wait\");\n try {\n const aperture = (hit.viewport.pixelsFromInches(IModelApp.locateManager.apertureInches) / 2.0) + 1.5;\n const pixelRadius = Math.floor(aperture + 0.5);\n mapInfo = await hit.viewport.getMapFeatureInfo(hit, {tolerance: pixelRadius});\n if (mapInfo) {\n this._decorator.setState({ hit, mapInfo });\n }\n } finally {\n IModelApp.toolAdmin.setCursor(undefined);\n }\n }\n\n this.onInfoReady.raiseEvent({ hit, mapInfo });\n return EventHandled.Yes;\n }\n return EventHandled.No;\n }\n\n public override async onResetButtonUp(\n _ev: BeButtonEvent,\n ): Promise<EventHandled> {\n this._state.activeMapLayers = undefined;\n /* Common reset behavior for primitive tools is calling onReinitialize to restart or exitTool to terminate. */\n await this.onReinitialize();\n return EventHandled.No;\n }\n\n public override async onRestartTool() {\n const tool = new MapFeatureInfoTool();\n if (!(await tool.run()))\n return this.exitTool();\n }\n\n /** @internal */\n protected showPrompt(): void {\n\n const promptEnterPoint = IModelApp.localization.getLocalizedString(\"mapLayersFormats:tools.MapFeatureInfoTool.Prompts.EnterPoint\");\n const promptClickIdentify= IModelApp.localization.getLocalizedString(\"mapLayersFormats:tools.MapFeatureInfoTool.Prompts.clickToIdentify\");\n const promptClickClear = IModelApp.localization.getLocalizedString(\"mapLayersFormats:tools.MapFeatureInfoTool.Prompts.clickToClear\");\n\n // Mouse Instructions\n const mouseInstructions: ToolAssistanceInstruction[] = [];\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.LeftClick, promptClickIdentify, false, ToolAssistanceInputMethod.Mouse));\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.RightClick, promptClickClear, false, ToolAssistanceInputMethod.Mouse));\n const sections: ToolAssistanceSection[] = [];\n sections.push(ToolAssistance.createSection(mouseInstructions, ToolAssistance.inputsLabel));\n\n // Main Instruction\n const mainInstruction = ToolAssistance.createInstruction(this.iconSpec, promptEnterPoint);\n const instructions = ToolAssistance.createInstructions(mainInstruction, sections);\n\n IModelApp.notifications.setToolAssistance(instructions);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"MapFeatureInfoTool.js","sourceRoot":"","sources":["../../../src/Tools/MapFeatureInfoTool.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 MapLayersFormats\r\n */\r\n\r\nimport {\r\n BeButtonEvent,\r\n EventHandled,\r\n HitDetail,\r\n IModelApp,\r\n LocateFilterStatus,\r\n LocateResponse,\r\n MapFeatureInfo,\r\n MapLayerInfoFromTileTree,\r\n MapLayerScaleRangeVisibility,\r\n MapTileTreeScaleRangeVisibility,\r\n PrimitiveTool,\r\n ToolAssistance,\r\n ToolAssistanceImage,\r\n ToolAssistanceInputMethod,\r\n ToolAssistanceInstruction,\r\n ToolAssistanceSection,\r\n Viewport,\r\n} from \"@itwin/core-frontend\";\r\nimport { BeEvent } from \"@itwin/core-bentley\";\r\nimport { ImageMapLayerSettings, MapImageryProps, MapImagerySettings, MapLayerProps } from \"@itwin/core-common\";\r\nimport { MapFeatureInfoDecorator } from \"./MapFeatureInfoDecorator\";\r\nimport { mapInfoIcon } from \"../Icons/MapInfoIcon\";\r\n\r\n/**\r\n * Data provided every time [[MapFeatureInfoTool]] retrieves feature information.\r\n * @see [[MapFeatureInfoToolData]]\r\n * @beta\r\n */\r\nexport interface MapFeatureInfoToolData {\r\n hit: HitDetail;\r\n mapInfo?: MapFeatureInfo;\r\n}\r\n\r\nclass ActiveMapLayerState {\r\n private _activeMapLayers: MapLayerInfoFromTileTree[]|undefined;\r\n public get activeMapLayers() {return this._activeMapLayers;}\r\n public set activeMapLayers(active: MapLayerInfoFromTileTree[]|undefined) {\r\n this._activeMapLayers = active;\r\n this.isVisible = true;\r\n this.isInRange = true;\r\n this.existsInDisplayStyle = true;\r\n\r\n }\r\n public isVisible: boolean = true;\r\n public isInRange: boolean = true;\r\n public existsInDisplayStyle: boolean = true;\r\n\r\n public get hasMapLayers() { return (this.activeMapLayers && this.activeMapLayers.length > 0);}\r\n\r\n public updateWithImagerySettings(imagery: MapImageryProps) {\r\n const result = {exists: false, hidden: false};\r\n this.existsInDisplayStyle = false;\r\n this.isVisible = false;\r\n if (this.hasMapLayers) {\r\n const oldMls = this._activeMapLayers![0]; // consider only first layer for now\r\n\r\n let newMls: MapLayerProps|undefined;\r\n if (oldMls.isBaseLayer) {\r\n if (typeof (imagery.backgroundBase) !== \"number\") {\r\n newMls = imagery.backgroundBase;\r\n }\r\n } else if (oldMls.index?.isOverlay && imagery.overlayLayers && imagery.overlayLayers.length > oldMls.index.index) {\r\n newMls = imagery.overlayLayers[oldMls.index.index];\r\n\r\n } else if ((oldMls.index !== undefined) && imagery.backgroundLayers && imagery.backgroundLayers.length > oldMls.index.index) {\r\n newMls = imagery.backgroundLayers[oldMls.index.index];\r\n }\r\n\r\n // We want to make sure that newMls and OldMls are the same (but ignoring the 'visible' flag).\r\n // by using the serialized JSON object\r\n let tmpNewMls = newMls;\r\n if (newMls && newMls.visible !== oldMls.settings.visible) {\r\n tmpNewMls = {...newMls, visible: oldMls.settings.visible};\r\n }\r\n const newJson = tmpNewMls ? JSON.stringify(tmpNewMls) : \"\";\r\n const oldJson = JSON.stringify(oldMls.settings.toJSON());\r\n\r\n if (newJson === oldJson ) {\r\n // We consider newMls and OldMls to be the same mapLayer instance.\r\n this.existsInDisplayStyle = true;\r\n this.isVisible = newMls!.visible ? true : false;\r\n }\r\n\r\n }\r\n return result;\r\n }\r\n\r\n public updateWithScaleRangeVisibility(layerIndexes: MapLayerScaleRangeVisibility[]) {\r\n if (this.hasMapLayers) {\r\n const currentMls = this.activeMapLayers![0]; // consider only first layer for now\r\n for (const scaleRangeVisibility of layerIndexes) {\r\n if (currentMls.index?.index === scaleRangeVisibility.index) {\r\n this.isInRange = scaleRangeVisibility.visibility === MapTileTreeScaleRangeVisibility.Visible || scaleRangeVisibility.visibility === MapTileTreeScaleRangeVisibility.Partial;\r\n }\r\n }\r\n }\r\n\r\n }\r\n}\r\n\r\n/** Tools that allow extracting feature information from map-layers.\r\n * Simulate feature highlight by drawing overlay decorations. It also\r\n * fire an event that provide further feature information meant to be displayed in a UI / Widget.\r\n * @see [[MapFeatureInfoToolData]]\r\n * @beta\r\n */\r\nexport class MapFeatureInfoTool extends PrimitiveTool {\r\n public readonly onInfoReady = new BeEvent<(data: MapFeatureInfoToolData) => void>();\r\n public readonly onInfoCleared = new BeEvent();\r\n\r\n public static override toolId = \"MapFeatureInfoTool\";\r\n public static override iconSpec = mapInfoIcon.dataUri;\r\n\r\n private _decorator: MapFeatureInfoDecorator = new MapFeatureInfoDecorator();\r\n private _layerSettingsCache = new Map<string, MapLayerInfoFromTileTree[]>();\r\n\r\n private _state: ActiveMapLayerState = new ActiveMapLayerState();\r\n private readonly _detachListeners: VoidFunction[] = [];\r\n private _detachOnMapImageryChanged: VoidFunction|undefined;\r\n\r\n public override requireWriteableTarget(): boolean {\r\n return false;\r\n }\r\n\r\n /** @internal */\r\n protected setupAndPromptForNextAction(): void {\r\n this.showPrompt();\r\n }\r\n\r\n private updateDecorator(vp: Viewport) {\r\n if (this._state.existsInDisplayStyle) {\r\n if (this._state.isInRange) {\r\n this._decorator.hidden = !this._state.isVisible;\r\n }\r\n } else {\r\n // Flush existing decorations until a new selection is made\r\n this.onInfoCleared.raiseEvent();\r\n this._decorator.clearState();\r\n }\r\n vp.invalidateDecorations();\r\n }\r\n\r\n public override async onPostInstall() {\r\n await super.onPostInstall();\r\n\r\n this.setupAndPromptForNextAction();\r\n\r\n this.initLocateElements();\r\n IModelApp.locateManager.options.allowDecorations = true;\r\n\r\n this._layerSettingsCache.clear();\r\n\r\n // Listen of display style configuration changes, that way we don't have to restart the tool to be up to date.\r\n const vp = this.targetView;\r\n if (vp) {\r\n const mapImageryChangeHandler = (newImagery: Readonly<MapImagerySettings>) => {\r\n if (this._state.hasMapLayers) {\r\n this._state.updateWithImagerySettings(newImagery.toJSON());\r\n this.updateDecorator(vp);\r\n }\r\n this._layerSettingsCache.clear();\r\n };\r\n\r\n this._detachListeners.push(vp.onChangeView.addListener((viewport, _previousViewState) => {\r\n\r\n // When a saved view is loaded, 'onMapImageryChanged' events are no longer handled, we have to re-attach.\r\n if (this._detachOnMapImageryChanged) {\r\n this._detachOnMapImageryChanged();\r\n }\r\n this._detachOnMapImageryChanged = viewport.displayStyle.settings.onMapImageryChanged.addListener(mapImageryChangeHandler);\r\n\r\n if (this._state.hasMapLayers) {\r\n this._state.updateWithImagerySettings({\r\n backgroundBase: viewport.displayStyle.backgroundMapBase.toJSON(),\r\n backgroundLayers: viewport.displayStyle.getMapLayers(false).map((value) => value.toJSON()),\r\n overlayLayers: viewport.displayStyle.getMapLayers(true).map((value) => value.toJSON()),\r\n });\r\n this.updateDecorator(vp);\r\n }\r\n this._layerSettingsCache.clear();\r\n }));\r\n\r\n this._detachOnMapImageryChanged = vp.displayStyle.settings.onMapImageryChanged.addListener(mapImageryChangeHandler);\r\n\r\n // Every time a layer goes out of range it, its associated decoration should be hidden (and restore if enter again the range)\r\n this._detachListeners.push(vp.onMapLayerScaleRangeVisibilityChanged.addListener(((layerIndexes: MapLayerScaleRangeVisibility[]) => {\r\n if (this._state.hasMapLayers) {\r\n this._state.updateWithScaleRangeVisibility(layerIndexes);\r\n if (this._state.existsInDisplayStyle && this._state.isVisible) {\r\n this._decorator.hidden = !this._state.isInRange;\r\n vp.invalidateDecorations();\r\n }\r\n }\r\n this._layerSettingsCache.clear();\r\n })));\r\n\r\n }\r\n\r\n IModelApp.viewManager.addDecorator(this._decorator);\r\n\r\n }\r\n\r\n public override async onCleanup() {\r\n this._detachListeners.forEach((f) => f());\r\n this._detachListeners.length = 0;\r\n if (this._detachOnMapImageryChanged) {\r\n this._detachOnMapImageryChanged();\r\n }\r\n\r\n IModelApp.viewManager.dropDecorator(this._decorator);\r\n }\r\n\r\n /**\r\n * Get map layer information from a hit.\r\n * @param hit The hit to get info from.\r\n * @returns Returns a list of [[MapLayerInfoFromTileTree]]s.\r\n * @internal\r\n */\r\n private getMapLayerInfoFromHit(hit: HitDetail) {\r\n let mapLayerFromHit: MapLayerInfoFromTileTree[] = [];\r\n const fromCache = this._layerSettingsCache.get(hit.sourceId);\r\n if (fromCache) {\r\n mapLayerFromHit = fromCache;\r\n } else if (this.targetView) {\r\n mapLayerFromHit = this.targetView?.mapLayerFromHit(hit).filter(((info) => info.settings instanceof ImageMapLayerSettings && info.provider?.supportsMapFeatureInfo));\r\n this._layerSettingsCache.set(hit.sourceId, mapLayerFromHit);\r\n }\r\n\r\n return mapLayerFromHit;\r\n }\r\n\r\n public override async getToolTip(hit: HitDetail): Promise<HTMLElement | string> {\r\n const infos = this.getMapLayerInfoFromHit(hit);\r\n if (infos.length > 0) {\r\n const names = infos.map((info) => info.settings.name);\r\n return `Layer${names.length > 1 ? \"s\" : \"\"}: ${names.join(\", \")}`;\r\n }\r\n return \"\";\r\n }\r\n\r\n public override async filterHit(hit: HitDetail, _out?: LocateResponse): Promise<LocateFilterStatus> {\r\n return this.getMapLayerInfoFromHit(hit).length > 0 ? LocateFilterStatus.Accept : LocateFilterStatus.Reject;\r\n }\r\n\r\n public override async onDataButtonDown(\r\n ev: BeButtonEvent,\r\n ): Promise<EventHandled> {\r\n const hit = await IModelApp.locateManager.doLocate(\r\n new LocateResponse(),\r\n true,\r\n ev.point,\r\n ev.viewport,\r\n ev.inputSource,\r\n );\r\n if (hit !== undefined) {\r\n let mapInfo: MapFeatureInfo | undefined;\r\n\r\n const mapLayersHit = this.getMapLayerInfoFromHit(hit);\r\n if (mapLayersHit.length > 0) {\r\n this._state.activeMapLayers = mapLayersHit;\r\n IModelApp.toolAdmin.setCursor(\"wait\");\r\n try {\r\n const aperture = (hit.viewport.pixelsFromInches(IModelApp.locateManager.apertureInches) / 2.0) + 1.5;\r\n const pixelRadius = Math.floor(aperture + 0.5);\r\n mapInfo = await hit.viewport.getMapFeatureInfo(hit, {tolerance: pixelRadius});\r\n if (mapInfo) {\r\n this._decorator.setState({ hit, mapInfo });\r\n }\r\n } finally {\r\n IModelApp.toolAdmin.setCursor(undefined);\r\n }\r\n }\r\n\r\n this.onInfoReady.raiseEvent({ hit, mapInfo });\r\n return EventHandled.Yes;\r\n }\r\n return EventHandled.No;\r\n }\r\n\r\n public override async onResetButtonUp(\r\n _ev: BeButtonEvent,\r\n ): Promise<EventHandled> {\r\n this._state.activeMapLayers = undefined;\r\n /* Common reset behavior for primitive tools is calling onReinitialize to restart or exitTool to terminate. */\r\n await this.onReinitialize();\r\n return EventHandled.No;\r\n }\r\n\r\n public override async onRestartTool() {\r\n const tool = new MapFeatureInfoTool();\r\n if (!(await tool.run()))\r\n return this.exitTool();\r\n }\r\n\r\n /** @internal */\r\n protected showPrompt(): void {\r\n\r\n const promptEnterPoint = IModelApp.localization.getLocalizedString(\"mapLayersFormats:tools.MapFeatureInfoTool.Prompts.EnterPoint\");\r\n const promptClickIdentify= IModelApp.localization.getLocalizedString(\"mapLayersFormats:tools.MapFeatureInfoTool.Prompts.clickToIdentify\");\r\n const promptClickClear = IModelApp.localization.getLocalizedString(\"mapLayersFormats:tools.MapFeatureInfoTool.Prompts.clickToClear\");\r\n\r\n // Mouse Instructions\r\n const mouseInstructions: ToolAssistanceInstruction[] = [];\r\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.LeftClick, promptClickIdentify, false, ToolAssistanceInputMethod.Mouse));\r\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.RightClick, promptClickClear, false, ToolAssistanceInputMethod.Mouse));\r\n const sections: ToolAssistanceSection[] = [];\r\n sections.push(ToolAssistance.createSection(mouseInstructions, ToolAssistance.inputsLabel));\r\n\r\n // Main Instruction\r\n const mainInstruction = ToolAssistance.createInstruction(this.iconSpec, promptEnterPoint);\r\n const instructions = ToolAssistance.createInstructions(mainInstruction, sections);\r\n\r\n IModelApp.notifications.setToolAssistance(instructions);\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map-layers-formats.js","sourceRoot":"","sources":["../../src/map-layers-formats.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,cAAc,oBAAoB,CAAC;AACnC,cAAc,uCAAuC,CAAC;AACtD,cAAc,4BAA4B,CAAC;AAE3C;;GAEG;AAEH;;GAEG","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nexport * from \"./mapLayersFormats\";\nexport * from \"./ArcGisFeature/ArcGisFeatureProvider\";\nexport * from \"./Tools/MapFeatureInfoTool\";\n\n/** @docs-package-description\n * This package provides support for additional map layer formats that are not included in the @itwin/core-frontend package.\n */\n\n/** @docs-group-description MapLayersFormats\n * APIs for working with the map layer formats provided by this package.\n */\n"]}
|
|
1
|
+
{"version":3,"file":"map-layers-formats.js","sourceRoot":"","sources":["../../src/map-layers-formats.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,cAAc,oBAAoB,CAAC;AACnC,cAAc,uCAAuC,CAAC;AACtD,cAAc,4BAA4B,CAAC;AAE3C;;GAEG;AAEH;;GAEG","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\nexport * from \"./mapLayersFormats\";\r\nexport * from \"./ArcGisFeature/ArcGisFeatureProvider\";\r\nexport * from \"./Tools/MapFeatureInfoTool\";\r\n\r\n/** @docs-package-description\r\n * This package provides support for additional map layer formats that are not included in the @itwin/core-frontend package.\r\n */\r\n\r\n/** @docs-group-description MapLayersFormats\r\n * APIs for working with the map layer formats provided by this package.\r\n */\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapLayersFormats.js","sourceRoot":"","sources":["../../src/mapLayersFormats.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAUhE;;GAEG;AACH,MAAa,gBAAgB;IAK3B;;;OAGG;IACI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,MAA+B;QAC5D,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,kGAAkG,CAAC,CAAC;QAClI,IAAI,SAAS,CAAC,WAAW;YACvB,SAAS,CAAC,sBAAsB,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC;QAEzE,mEAAmE;QACnE,gBAAgB,CAAC,YAAY,GAAG,MAAM,EAAE,YAAY,IAAI,SAAS,CAAC,YAAY,CAAC;QAC/E,MAAM,gBAAgB,CAAC,YAAY,CAAC,iBAAiB,CACnD,gBAAgB,CAAC,qBAAqB,CACvC,CAAC;QAEF,kBAAkB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;IACtE,CAAC;IAED,kDAAkD;IAC3C,MAAM,KAAK,qBAAqB;QACrC,OAAO,gBAAgB,CAAC,UAAU,CAAC;IACrC,CAAC;;AAxBc,2BAAU,GAAG,kBAAkB,CAAC;SAFpC,gBAAgB","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module MapLayersFormats\n */\nimport { assert } from \"@itwin/core-bentley\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport { ArcGisFeatureMapLayerFormat } from \"./ArcGisFeature/ArcGisFeatureFormat\";\nimport { MapFeatureInfoTool } from \"./Tools/MapFeatureInfoTool\";\nimport { Localization } from \"@itwin/core-common\";\n\n/** Configuration options.\n * @beta\n */\nexport interface MapLayersFormatsConfig {\n localization?: Localization;\n}\n\n/** The primary API for the `@itwin/map-layers-formats` package. It allows the package's features to be [[initialize]]d.\n * @beta\n */\nexport class MapLayersFormats {\n\n private static _defaultNs = \"mapLayersFormats\";\n public static localization: Localization;\n\n /** Registers the [MapLayerFormat]($frontend)s provided by this package for use with [IModelApp]($frontend).\n * Typically, an application will call `MapLayersFormats.initialize` immediately after [IModelApp.startup]($frontend).\n * This function has no effect if called **before** [IModelApp.startup]($frontend) or **after** [IModelApp.shutdown]($frontend).\n */\n public static async initialize(config?: MapLayersFormatsConfig): Promise<void> {\n assert(IModelApp.initialized, \"MapLayersFormats.initialize must be called after IModelApp.startup and before IModelApp.shutdown\");\n if (IModelApp.initialized)\n IModelApp.mapLayerFormatRegistry.register(ArcGisFeatureMapLayerFormat);\n\n // register namespace containing localized strings for this package\n MapLayersFormats.localization = config?.localization ?? IModelApp.localization;\n await MapLayersFormats.localization.registerNamespace(\n MapLayersFormats.localizationNamespace,\n );\n\n MapFeatureInfoTool.register(MapLayersFormats.localizationNamespace);\n }\n\n /** The internationalization service namespace. */\n public static get localizationNamespace(): string {\n return MapLayersFormats._defaultNs;\n }\n\n}\n"]}
|
|
1
|
+
{"version":3,"file":"mapLayersFormats.js","sourceRoot":"","sources":["../../src/mapLayersFormats.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAUhE;;GAEG;AACH,MAAa,gBAAgB;IAK3B;;;OAGG;IACI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,MAA+B;QAC5D,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,kGAAkG,CAAC,CAAC;QAClI,IAAI,SAAS,CAAC,WAAW;YACvB,SAAS,CAAC,sBAAsB,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC;QAEzE,mEAAmE;QACnE,gBAAgB,CAAC,YAAY,GAAG,MAAM,EAAE,YAAY,IAAI,SAAS,CAAC,YAAY,CAAC;QAC/E,MAAM,gBAAgB,CAAC,YAAY,CAAC,iBAAiB,CACnD,gBAAgB,CAAC,qBAAqB,CACvC,CAAC;QAEF,kBAAkB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;IACtE,CAAC;IAED,kDAAkD;IAC3C,MAAM,KAAK,qBAAqB;QACrC,OAAO,gBAAgB,CAAC,UAAU,CAAC;IACrC,CAAC;;AAxBc,2BAAU,GAAG,kBAAkB,CAAC;SAFpC,gBAAgB","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\n/** @packageDocumentation\r\n * @module MapLayersFormats\r\n */\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { IModelApp } from \"@itwin/core-frontend\";\r\nimport { ArcGisFeatureMapLayerFormat } from \"./ArcGisFeature/ArcGisFeatureFormat\";\r\nimport { MapFeatureInfoTool } from \"./Tools/MapFeatureInfoTool\";\r\nimport { Localization } from \"@itwin/core-common\";\r\n\r\n/** Configuration options.\r\n * @beta\r\n */\r\nexport interface MapLayersFormatsConfig {\r\n localization?: Localization;\r\n}\r\n\r\n/** The primary API for the `@itwin/map-layers-formats` package. It allows the package's features to be [[initialize]]d.\r\n * @beta\r\n */\r\nexport class MapLayersFormats {\r\n\r\n private static _defaultNs = \"mapLayersFormats\";\r\n public static localization: Localization;\r\n\r\n /** Registers the [MapLayerFormat]($frontend)s provided by this package for use with [IModelApp]($frontend).\r\n * Typically, an application will call `MapLayersFormats.initialize` immediately after [IModelApp.startup]($frontend).\r\n * This function has no effect if called **before** [IModelApp.startup]($frontend) or **after** [IModelApp.shutdown]($frontend).\r\n */\r\n public static async initialize(config?: MapLayersFormatsConfig): Promise<void> {\r\n assert(IModelApp.initialized, \"MapLayersFormats.initialize must be called after IModelApp.startup and before IModelApp.shutdown\");\r\n if (IModelApp.initialized)\r\n IModelApp.mapLayerFormatRegistry.register(ArcGisFeatureMapLayerFormat);\r\n\r\n // register namespace containing localized strings for this package\r\n MapLayersFormats.localization = config?.localization ?? IModelApp.localization;\r\n await MapLayersFormats.localization.registerNamespace(\r\n MapLayersFormats.localizationNamespace,\r\n );\r\n\r\n MapFeatureInfoTool.register(MapLayersFormats.localizationNamespace);\r\n }\r\n\r\n /** The internationalization service namespace. */\r\n public static get localizationNamespace(): string {\r\n return MapLayersFormats._defaultNs;\r\n }\r\n\r\n}\r\n"]}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
{
|
|
2
|
-
"tools": {
|
|
3
|
-
"MapFeatureInfoTool": {
|
|
4
|
-
"keyin": "mlt map feature info",
|
|
5
|
-
"description": "Identify map layer features",
|
|
6
|
-
"flyover": "Map Layer Info",
|
|
7
|
-
"Prompts": {
|
|
8
|
-
"EnterPoint": "Identify map layer features",
|
|
9
|
-
"clickToIdentify": "Click to identify features",
|
|
10
|
-
"clickToClear": "Click to clear highlighted features"
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
},
|
|
14
|
-
"Messages": {
|
|
15
|
-
"MapFeatureInfoDecorator": {
|
|
16
|
-
"clusterZoomIn": "{{nbInstances}} instances found. Zoom in for more granularity."
|
|
17
|
-
}
|
|
18
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"tools": {
|
|
3
|
+
"MapFeatureInfoTool": {
|
|
4
|
+
"keyin": "mlt map feature info",
|
|
5
|
+
"description": "Identify map layer features",
|
|
6
|
+
"flyover": "Map Layer Info",
|
|
7
|
+
"Prompts": {
|
|
8
|
+
"EnterPoint": "Identify map layer features",
|
|
9
|
+
"clickToIdentify": "Click to identify features",
|
|
10
|
+
"clickToClear": "Click to clear highlighted features"
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"Messages": {
|
|
15
|
+
"MapFeatureInfoDecorator": {
|
|
16
|
+
"clusterZoomIn": "{{nbInstances}} instances found. Zoom in for more granularity."
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
19
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@itwin/map-layers-formats",
|
|
3
|
-
"version": "4.6.0-dev.
|
|
3
|
+
"version": "4.6.0-dev.9",
|
|
4
4
|
"description": "Enables additional map-layers formats in iTwin.js",
|
|
5
5
|
"main": "lib/cjs/map-layers-formats.js",
|
|
6
6
|
"module": "lib/esm/map-layers-formats.js",
|
|
@@ -44,19 +44,19 @@
|
|
|
44
44
|
"source-map-support": "^0.5.6",
|
|
45
45
|
"typemoq": "^2.1.0",
|
|
46
46
|
"typescript": "~5.0.2",
|
|
47
|
-
"@itwin/build-tools": "4.6.0-dev.
|
|
48
|
-
"@itwin/core-
|
|
49
|
-
"@itwin/appui-abstract": "4.6.0-dev.
|
|
50
|
-
"@itwin/core-
|
|
51
|
-
"@itwin/core-
|
|
52
|
-
"@itwin/core-
|
|
47
|
+
"@itwin/build-tools": "4.6.0-dev.9",
|
|
48
|
+
"@itwin/core-bentley": "4.6.0-dev.9",
|
|
49
|
+
"@itwin/appui-abstract": "4.6.0-dev.9",
|
|
50
|
+
"@itwin/core-common": "4.6.0-dev.9",
|
|
51
|
+
"@itwin/core-frontend": "4.6.0-dev.9",
|
|
52
|
+
"@itwin/core-geometry": "4.6.0-dev.9"
|
|
53
53
|
},
|
|
54
54
|
"peerDependencies": {
|
|
55
|
-
"@itwin/
|
|
56
|
-
"@itwin/core-
|
|
57
|
-
"@itwin/
|
|
58
|
-
"@itwin/core-
|
|
59
|
-
"@itwin/core-
|
|
55
|
+
"@itwin/appui-abstract": "4.6.0-dev.9",
|
|
56
|
+
"@itwin/core-common": "4.6.0-dev.9",
|
|
57
|
+
"@itwin/core-bentley": "4.6.0-dev.9",
|
|
58
|
+
"@itwin/core-frontend": "4.6.0-dev.9",
|
|
59
|
+
"@itwin/core-geometry": "4.6.0-dev.9"
|
|
60
60
|
},
|
|
61
61
|
"dependencies": {
|
|
62
62
|
"google-protobuf": "~3.20.1"
|