@vcmap/core 6.3.2 → 6.3.4
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/dist/index.d.ts +5 -2
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/src/cesium/wallpaperMaterial.js +2 -2
- package/dist/src/cesium/wallpaperMaterial.js.map +1 -1
- package/dist/src/featureProvider/mapboxFeatureProvider.d.ts +1 -1
- package/dist/src/featureProvider/mapboxFeatureProvider.js +10 -1
- package/dist/src/featureProvider/mapboxFeatureProvider.js.map +1 -1
- package/dist/src/interaction/panoramaFeatureHighlight.d.ts +1 -0
- package/dist/src/interaction/panoramaFeatureHighlight.js +18 -11
- package/dist/src/interaction/panoramaFeatureHighlight.js.map +1 -1
- package/dist/src/interaction/panoramaImageSelection.js +46 -2
- package/dist/src/interaction/panoramaImageSelection.js.map +1 -1
- package/dist/src/layer/cesium/cogCesiumImpl.js +1 -1
- package/dist/src/layer/cesium/cogCesiumImpl.js.map +1 -1
- package/dist/src/layer/cesium/imageryProvider/abstractVcsImageryProvider.d.ts +47 -0
- package/dist/src/layer/cesium/imageryProvider/abstractVcsImageryProvider.js +71 -0
- package/dist/src/layer/cesium/imageryProvider/abstractVcsImageryProvider.js.map +1 -0
- package/dist/src/layer/cesium/imageryProvider/cogImageryProvider.d.ts +17 -0
- package/dist/src/layer/cesium/{cogImageryProvider.js → imageryProvider/cogImageryProvider.js} +17 -67
- package/dist/src/layer/cesium/imageryProvider/cogImageryProvider.js.map +1 -0
- package/dist/src/layer/cesium/{mapboxStyleImageryProvider.d.ts → imageryProvider/mapboxStyleImageryProvider.d.ts} +5 -9
- package/dist/src/layer/cesium/imageryProvider/mapboxStyleImageryProvider.js +37 -0
- package/dist/src/layer/cesium/imageryProvider/mapboxStyleImageryProvider.js.map +1 -0
- package/dist/src/layer/cesium/imageryProvider/olImageRenderer.d.ts +18 -0
- package/dist/src/layer/cesium/imageryProvider/olImageRenderer.js +144 -0
- package/dist/src/layer/cesium/imageryProvider/olImageRenderer.js.map +1 -0
- package/dist/src/layer/cesium/imageryProvider/panoramaDatasetImageryProvider.d.ts +12 -0
- package/dist/src/layer/cesium/imageryProvider/panoramaDatasetImageryProvider.js +45 -0
- package/dist/src/layer/cesium/imageryProvider/panoramaDatasetImageryProvider.js.map +1 -0
- package/dist/src/layer/cesium/{vectorTileImageryProvider.d.ts → imageryProvider/vectorTileImageryProvider.d.ts} +5 -24
- package/dist/src/layer/cesium/{vectorTileImageryProvider.js → imageryProvider/vectorTileImageryProvider.js} +16 -65
- package/dist/src/layer/cesium/imageryProvider/vectorTileImageryProvider.js.map +1 -0
- package/dist/src/layer/cesium/mapboxStyleCesiumImpl.d.ts +1 -1
- package/dist/src/layer/cesium/mapboxStyleCesiumImpl.js +1 -1
- package/dist/src/layer/cesium/mapboxStyleCesiumImpl.js.map +1 -1
- package/dist/src/layer/cesium/panoramaDatasetCesiumImpl.d.ts +5 -0
- package/dist/src/layer/cesium/panoramaDatasetCesiumImpl.js +12 -0
- package/dist/src/layer/cesium/panoramaDatasetCesiumImpl.js.map +1 -0
- package/dist/src/layer/cesium/vectorRasterTileCesiumImpl.d.ts +4 -2
- package/dist/src/layer/cesium/vectorRasterTileCesiumImpl.js +10 -3
- package/dist/src/layer/cesium/vectorRasterTileCesiumImpl.js.map +1 -1
- package/dist/src/layer/mapboxStyleLayer.js +27 -0
- package/dist/src/layer/mapboxStyleLayer.js.map +1 -1
- package/dist/src/layer/panoramaDatasetLayer.js +11 -1
- package/dist/src/layer/panoramaDatasetLayer.js.map +1 -1
- package/dist/src/layer/vectorTileLayer.d.ts +1 -0
- package/dist/src/layer/vectorTileLayer.js +3 -0
- package/dist/src/layer/vectorTileLayer.js.map +1 -1
- package/index.ts +11 -2
- package/package.json +6 -3
- package/src/cesium/wallpaperMaterial.js +2 -2
- package/src/featureProvider/mapboxFeatureProvider.ts +15 -2
- package/src/interaction/panoramaFeatureHighlight.ts +23 -16
- package/src/interaction/panoramaImageSelection.ts +58 -5
- package/src/layer/cesium/cogCesiumImpl.ts +1 -1
- package/src/layer/cesium/imageryProvider/abstractVcsImageryProvider.ts +126 -0
- package/src/layer/cesium/{cogImageryProvider.ts → imageryProvider/cogImageryProvider.ts} +23 -81
- package/src/layer/cesium/imageryProvider/mapboxStyleImageryProvider.ts +63 -0
- package/src/layer/cesium/imageryProvider/olImageRenderer.ts +219 -0
- package/src/layer/cesium/imageryProvider/panoramaDatasetImageryProvider.ts +73 -0
- package/src/layer/cesium/{vectorTileImageryProvider.ts → imageryProvider/vectorTileImageryProvider.ts} +19 -92
- package/src/layer/cesium/mapboxStyleCesiumImpl.ts +1 -1
- package/src/layer/cesium/panoramaDatasetCesiumImpl.ts +13 -0
- package/src/layer/cesium/vectorRasterTileCesiumImpl.ts +14 -4
- package/src/layer/mapboxStyleLayer.ts +42 -2
- package/src/layer/panoramaDatasetLayer.ts +12 -1
- package/src/layer/vectorTileLayer.ts +4 -0
- package/dist/src/layer/cesium/cogImageryProvider.d.ts +0 -31
- package/dist/src/layer/cesium/cogImageryProvider.js.map +0 -1
- package/dist/src/layer/cesium/mapboxStyleImageryProvider.js +0 -147
- package/dist/src/layer/cesium/mapboxStyleImageryProvider.js.map +0 -1
- package/dist/src/layer/cesium/vectorTileImageryProvider.js.map +0 -1
- package/src/layer/cesium/mapboxStyleImageryProvider.ts +0 -214
package/dist/src/layer/cesium/{cogImageryProvider.js → imageryProvider/cogImageryProvider.js}
RENAMED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { createEmpty as createEmptyExtent, extend as extendExtent, getWidth as getExtentWidth, getHeight as getExtentHeight, getTopLeft as getTopLeftExtent, } from 'ol/extent.js';
|
|
2
2
|
import TileState from 'ol/TileState.js';
|
|
3
|
-
import { Cartesian2,
|
|
3
|
+
import { Cartesian2, GeographicTilingScheme, Math as CesiumMath, Rectangle, WebMercatorTilingScheme, } from '@vcmap-cesium/engine';
|
|
4
4
|
import EventType from 'ol/events/EventType.js';
|
|
5
|
-
import { mercatorExtentToRectangle, rectangleToMercatorExtent, } from '
|
|
5
|
+
import { mercatorExtentToRectangle, rectangleToMercatorExtent, } from '../../../util/math.js';
|
|
6
|
+
import AbstractVcsImageryProvider from './abstractVcsImageryProvider.js';
|
|
6
7
|
export function createEmptyCanvas(width, height) {
|
|
7
8
|
const canvas = document.createElement('canvas');
|
|
8
9
|
canvas.width = width;
|
|
@@ -85,10 +86,10 @@ function drawData(ctx, data, size, offsetX = 0, offsetY = 0) {
|
|
|
85
86
|
imageData.data.set(usedData);
|
|
86
87
|
ctx.putImageData(imageData, offsetX, offsetY);
|
|
87
88
|
}
|
|
88
|
-
function getMaximumTileSize(
|
|
89
|
+
function getMaximumTileSize(source) {
|
|
89
90
|
let width = 0;
|
|
90
91
|
let height = 0;
|
|
91
|
-
const numResolutions =
|
|
92
|
+
const numResolutions = source.getTileGrid().getResolutions().length;
|
|
92
93
|
for (let i = 0; i < numResolutions; i++) {
|
|
93
94
|
// @ts-expect-error protected
|
|
94
95
|
const size = source.getTileSize(i);
|
|
@@ -99,82 +100,31 @@ function getMaximumTileSize(tileGrid, source) {
|
|
|
99
100
|
}
|
|
100
101
|
return [width, height];
|
|
101
102
|
}
|
|
102
|
-
export default class COGImageryProvider {
|
|
103
|
+
export default class COGImageryProvider extends AbstractVcsImageryProvider {
|
|
103
104
|
_source;
|
|
104
|
-
_emptyCanvas;
|
|
105
105
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
106
106
|
_reload = undefined;
|
|
107
107
|
_projection;
|
|
108
|
-
_tilingScheme;
|
|
109
108
|
_tileGrid;
|
|
110
109
|
_boundTileLoader;
|
|
111
|
-
tileWidth = 256;
|
|
112
|
-
tileHeight = 256;
|
|
113
110
|
constructor(_source) {
|
|
111
|
+
const tileSize = getMaximumTileSize(_source);
|
|
112
|
+
const maxLevel = _source.getTileGrid()?.getMaxZoom?.() ?? 26;
|
|
113
|
+
super({
|
|
114
|
+
tilingScheme: getTilingSchemeFromSource(_source),
|
|
115
|
+
tileSize,
|
|
116
|
+
minLevel: 0,
|
|
117
|
+
maxLevel,
|
|
118
|
+
});
|
|
114
119
|
this._source = _source;
|
|
115
120
|
this._projection = this._source.getProjection();
|
|
116
121
|
this._tileGrid = this._source.getTileGrid();
|
|
117
|
-
this._tilingScheme = getTilingSchemeFromSource(this._source);
|
|
118
122
|
if (areGridsAligned(this._tileGrid, this._tilingScheme, this._source)) {
|
|
119
123
|
this._boundTileLoader = this._loadAlignedTile.bind(this);
|
|
120
124
|
}
|
|
121
125
|
else {
|
|
122
126
|
this._boundTileLoader = this._loadUnalignedTile.bind(this);
|
|
123
127
|
}
|
|
124
|
-
const [width, height] = getMaximumTileSize(this._tileGrid, this._source);
|
|
125
|
-
this.tileWidth = width;
|
|
126
|
-
this.tileHeight = height;
|
|
127
|
-
this._emptyCanvas = createEmptyCanvas(this.tileWidth, this.tileHeight);
|
|
128
|
-
}
|
|
129
|
-
// eslint-disable-next-line class-methods-use-this,@typescript-eslint/naming-convention
|
|
130
|
-
get _ready() {
|
|
131
|
-
return true;
|
|
132
|
-
}
|
|
133
|
-
// eslint-disable-next-line class-methods-use-this
|
|
134
|
-
get ready() {
|
|
135
|
-
return true;
|
|
136
|
-
}
|
|
137
|
-
get rectangle() {
|
|
138
|
-
return this._tilingScheme.rectangle;
|
|
139
|
-
}
|
|
140
|
-
get tilingScheme() {
|
|
141
|
-
return this._tilingScheme;
|
|
142
|
-
}
|
|
143
|
-
errorEvent = new CesiumEvent();
|
|
144
|
-
// eslint-disable-next-line class-methods-use-this
|
|
145
|
-
get credit() {
|
|
146
|
-
return undefined;
|
|
147
|
-
}
|
|
148
|
-
// eslint-disable-next-line class-methods-use-this
|
|
149
|
-
get proxy() {
|
|
150
|
-
return undefined;
|
|
151
|
-
}
|
|
152
|
-
get maximumLevel() {
|
|
153
|
-
const tileGrid = this._source.getTileGrid();
|
|
154
|
-
if (tileGrid) {
|
|
155
|
-
return tileGrid.getMaxZoom();
|
|
156
|
-
}
|
|
157
|
-
else {
|
|
158
|
-
return 18; // some arbitrary value
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
// eslint-disable-next-line class-methods-use-this
|
|
162
|
-
get minimumLevel() {
|
|
163
|
-
// WARNING: Do not use the minimum level (at least until the extent is
|
|
164
|
-
// properly set). Cesium assumes the minimumLevel to contain only
|
|
165
|
-
// a few tiles and tries to load them all at once -- this can
|
|
166
|
-
// freeze and/or crash the browser !
|
|
167
|
-
return 0;
|
|
168
|
-
//var tg = this._source.getTileGrid();
|
|
169
|
-
//return tg ? tg.getMinZoom() : 0;
|
|
170
|
-
}
|
|
171
|
-
// eslint-disable-next-line class-methods-use-this
|
|
172
|
-
get tileDiscardPolicy() {
|
|
173
|
-
return undefined;
|
|
174
|
-
}
|
|
175
|
-
// eslint-disable-next-line class-methods-use-this
|
|
176
|
-
get hasAlphaChannel() {
|
|
177
|
-
return true;
|
|
178
128
|
}
|
|
179
129
|
_getTileSizeForLevel(level) {
|
|
180
130
|
// @ts-expect-error protected
|
|
@@ -224,7 +174,7 @@ export default class COGImageryProvider {
|
|
|
224
174
|
}
|
|
225
175
|
return canvas;
|
|
226
176
|
}
|
|
227
|
-
return this.
|
|
177
|
+
return this.emptyCanvas;
|
|
228
178
|
}
|
|
229
179
|
async _loadUnalignedTile(x, y, level) {
|
|
230
180
|
const rectangle = this._tilingScheme.tileXYToRectangle(x, y, level);
|
|
@@ -236,7 +186,7 @@ export default class COGImageryProvider {
|
|
|
236
186
|
const canvas = createEmptyCanvas(levelWidth * tileRange.getWidth(), levelHeight * tileRange.getHeight());
|
|
237
187
|
const ctx = canvas.getContext('2d');
|
|
238
188
|
if (!ctx) {
|
|
239
|
-
return this.
|
|
189
|
+
return this.emptyCanvas;
|
|
240
190
|
}
|
|
241
191
|
const promises = [];
|
|
242
192
|
const tileRangeExtent = createEmptyExtent();
|
|
@@ -270,7 +220,7 @@ export default class COGImageryProvider {
|
|
|
270
220
|
windowCtx.drawImage(canvas, windowX, windowY, windowWidth, windowHeight, 0, 0, this.tileWidth, this.tileHeight);
|
|
271
221
|
return windowCanvas;
|
|
272
222
|
}
|
|
273
|
-
return this.
|
|
223
|
+
return this.emptyCanvas;
|
|
274
224
|
}
|
|
275
225
|
requestImage(x, y, level) {
|
|
276
226
|
return this._boundTileLoader(x, y, level);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cogImageryProvider.js","sourceRoot":"","sources":["../../../../../src/layer/cesium/imageryProvider/cogImageryProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type LayerGroup from 'ol/layer/Group.js';
|
|
2
|
-
import VectorTileImageryProvider from './vectorTileImageryProvider.js';
|
|
3
2
|
import type { VectorTileImageryProviderOptions } from './vectorTileImageryProvider.js';
|
|
3
|
+
import AbstractVcsImageryProvider from './abstractVcsImageryProvider.js';
|
|
4
|
+
import type TileProvider from '../../tileProvider/tileProvider.js';
|
|
4
5
|
export type MapboxStyleImageryProviderOptions = VectorTileImageryProviderOptions & {
|
|
5
6
|
styledMapboxLayerGroup: LayerGroup;
|
|
6
7
|
minimumTerrainLevel?: number;
|
|
@@ -10,17 +11,12 @@ export type MapboxStyleImageryProviderOptions = VectorTileImageryProviderOptions
|
|
|
10
11
|
/**
|
|
11
12
|
* Implementation of Cesium ImageryProvider Interface for Mapbox Style Tiles
|
|
12
13
|
*/
|
|
13
|
-
declare class MapboxStyleImageryProvider extends
|
|
14
|
+
declare class MapboxStyleImageryProvider extends AbstractVcsImageryProvider {
|
|
14
15
|
static get className(): string;
|
|
15
|
-
|
|
16
|
-
private
|
|
17
|
-
private _isRendering;
|
|
18
|
-
private _renderMap;
|
|
16
|
+
tileProvider: TileProvider;
|
|
17
|
+
private _olImageRenderer;
|
|
19
18
|
constructor(options: MapboxStyleImageryProviderOptions);
|
|
20
19
|
requestImage(x: number, y: number, level: number): Promise<HTMLImageElement | HTMLCanvasElement> | undefined;
|
|
21
|
-
private _doRequestImage;
|
|
22
|
-
private _getLevelCache;
|
|
23
|
-
private _renderTile;
|
|
24
20
|
destroy(): void;
|
|
25
21
|
}
|
|
26
22
|
export default MapboxStyleImageryProvider;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { createOLImageRenderer, } from './olImageRenderer.js';
|
|
2
|
+
import AbstractVcsImageryProvider from './abstractVcsImageryProvider.js';
|
|
3
|
+
/**
|
|
4
|
+
* Implementation of Cesium ImageryProvider Interface for Mapbox Style Tiles
|
|
5
|
+
*/
|
|
6
|
+
class MapboxStyleImageryProvider extends AbstractVcsImageryProvider {
|
|
7
|
+
static get className() {
|
|
8
|
+
return 'MapboxStyleImageryProvider';
|
|
9
|
+
}
|
|
10
|
+
tileProvider;
|
|
11
|
+
_olImageRenderer;
|
|
12
|
+
constructor(options) {
|
|
13
|
+
super({
|
|
14
|
+
tilingScheme: options.tileProvider.tilingScheme,
|
|
15
|
+
tileSize: options.tileSize,
|
|
16
|
+
minLevel: 0,
|
|
17
|
+
maxLevel: 26,
|
|
18
|
+
});
|
|
19
|
+
this.tileProvider = options.tileProvider;
|
|
20
|
+
this._olImageRenderer = createOLImageRenderer({
|
|
21
|
+
tilingScheme: this.tileProvider.tilingScheme,
|
|
22
|
+
tileWidth: this.tileWidth,
|
|
23
|
+
tileHeight: this.tileHeight,
|
|
24
|
+
tileCacheSize: options.tileCacheSize,
|
|
25
|
+
emptyCanvas: this.emptyCanvas,
|
|
26
|
+
});
|
|
27
|
+
this._olImageRenderer.map.addLayer(options.styledMapboxLayerGroup);
|
|
28
|
+
}
|
|
29
|
+
requestImage(x, y, level) {
|
|
30
|
+
return this._olImageRenderer.requestImage(x, y, level);
|
|
31
|
+
}
|
|
32
|
+
destroy() {
|
|
33
|
+
this._olImageRenderer.destroy();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export default MapboxStyleImageryProvider;
|
|
37
|
+
//# sourceMappingURL=mapboxStyleImageryProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapboxStyleImageryProvider.js","sourceRoot":"","sources":["../../../../../src/layer/cesium/imageryProvider/mapboxStyleImageryProvider.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,qBAAqB,GAEtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,0BAA0B,MAAM,iCAAiC,CAAC;AAWzE;;GAEG;AACH,MAAM,0BAA2B,SAAQ,0BAA0B;IACjE,MAAM,KAAK,SAAS;QAClB,OAAO,4BAA4B,CAAC;IACtC,CAAC;IAED,YAAY,CAAe;IAEnB,gBAAgB,CAAkB;IAE1C,YAAY,OAA0C;QACpD,KAAK,CAAC;YACJ,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,YAAY;YAC/C,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,EAAE;SACb,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QAEzC,IAAI,CAAC,gBAAgB,GAAG,qBAAqB,CAAC;YAC5C,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,YAAY;YAC5C,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC,CAAC;QACH,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACrE,CAAC;IAED,YAAY,CACV,CAAS,EACT,CAAS,EACT,KAAa;QAEb,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC;IAED,OAAO;QACL,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;IAClC,CAAC;CACF;AAED,eAAe,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { TilingScheme } from '@vcmap-cesium/engine';
|
|
2
|
+
import OLMap from 'ol/Map.js';
|
|
3
|
+
import { type Extent } from 'ol/extent.js';
|
|
4
|
+
export type OLImageRenderer = {
|
|
5
|
+
readonly isRendering: boolean;
|
|
6
|
+
readonly map: OLMap;
|
|
7
|
+
requestImage(x: number, y: number, level: number): Promise<HTMLImageElement | HTMLCanvasElement> | undefined;
|
|
8
|
+
destroy(): void;
|
|
9
|
+
};
|
|
10
|
+
export type OLImageRendererOptions = {
|
|
11
|
+
tilingScheme: TilingScheme;
|
|
12
|
+
tileWidth: number;
|
|
13
|
+
tileHeight: number;
|
|
14
|
+
emptyCanvas: HTMLCanvasElement;
|
|
15
|
+
tileCacheSize?: number;
|
|
16
|
+
fetchFeatures?: (x: number, y: number, level: number, extent: Extent) => Promise<void>;
|
|
17
|
+
};
|
|
18
|
+
export declare function createOLImageRenderer(options: OLImageRendererOptions): OLImageRenderer;
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import OLMap from 'ol/Map.js';
|
|
2
|
+
import LRUCache from 'ol/structs/LRUCache.js';
|
|
3
|
+
import { buffer, getCenter } from 'ol/extent.js';
|
|
4
|
+
import { getLogger } from '@vcsuite/logger';
|
|
5
|
+
import { parseInteger } from '@vcsuite/parsers';
|
|
6
|
+
import { rectangleToMercatorExtent } from '../../../util/math.js';
|
|
7
|
+
function getTileCacheKey(x, y, level) {
|
|
8
|
+
return `${x}-${y}-${level}`;
|
|
9
|
+
}
|
|
10
|
+
function getGutterSize(level) {
|
|
11
|
+
if (level < 12) {
|
|
12
|
+
return 32;
|
|
13
|
+
}
|
|
14
|
+
if (level < 15) {
|
|
15
|
+
return 48;
|
|
16
|
+
}
|
|
17
|
+
return 64;
|
|
18
|
+
}
|
|
19
|
+
export function createOLImageRenderer(options) {
|
|
20
|
+
const maxCacheSize = parseInteger(options.tileCacheSize, 100);
|
|
21
|
+
const { tilingScheme, tileWidth, tileHeight, emptyCanvas, fetchFeatures } = options;
|
|
22
|
+
const renderMap = new OLMap({
|
|
23
|
+
target: document.createElement('div'),
|
|
24
|
+
});
|
|
25
|
+
const tileCacheByLevel = new Map();
|
|
26
|
+
let isRendering = false;
|
|
27
|
+
function getLevelCache(level) {
|
|
28
|
+
const existing = tileCacheByLevel.get(level);
|
|
29
|
+
if (existing) {
|
|
30
|
+
return existing;
|
|
31
|
+
}
|
|
32
|
+
const cache = new LRUCache(maxCacheSize);
|
|
33
|
+
tileCacheByLevel.set(level, cache);
|
|
34
|
+
return cache;
|
|
35
|
+
}
|
|
36
|
+
function renderTile(level, extent, gutterSize) {
|
|
37
|
+
const TIMEOUT_MS = 2500;
|
|
38
|
+
return new Promise((resolve) => {
|
|
39
|
+
let isFinished = false;
|
|
40
|
+
const finish = (canvas) => {
|
|
41
|
+
if (isFinished) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
isFinished = true;
|
|
45
|
+
resolve(canvas);
|
|
46
|
+
};
|
|
47
|
+
try {
|
|
48
|
+
if (!renderMap) {
|
|
49
|
+
finish(emptyCanvas);
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
const renderWidth = tileWidth + 2 * gutterSize;
|
|
53
|
+
const renderHeight = tileHeight + 2 * gutterSize;
|
|
54
|
+
const view = renderMap.getView();
|
|
55
|
+
view.setCenter(getCenter(extent));
|
|
56
|
+
view.setZoom(level);
|
|
57
|
+
renderMap.setSize([renderWidth, renderHeight]);
|
|
58
|
+
const handleRenderComplete = () => {
|
|
59
|
+
renderMap?.un('rendercomplete', handleRenderComplete);
|
|
60
|
+
const renderedCanvas = renderMap
|
|
61
|
+
?.getViewport()
|
|
62
|
+
.querySelector('canvas');
|
|
63
|
+
if (!renderedCanvas) {
|
|
64
|
+
finish(emptyCanvas);
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
// Crop the canvas to extract the center portion (original tile size)
|
|
68
|
+
const tileCanvas = document.createElement('canvas');
|
|
69
|
+
tileCanvas.width = tileWidth;
|
|
70
|
+
tileCanvas.height = tileHeight;
|
|
71
|
+
const ctx = tileCanvas.getContext('2d');
|
|
72
|
+
if (ctx) {
|
|
73
|
+
const scaleX = renderedCanvas.width / renderWidth;
|
|
74
|
+
const scaleY = renderedCanvas.height / renderHeight;
|
|
75
|
+
ctx.drawImage(renderedCanvas, gutterSize * scaleX, gutterSize * scaleY, tileWidth * scaleX, tileHeight * scaleY, 0, 0, tileWidth, tileHeight);
|
|
76
|
+
}
|
|
77
|
+
finish(tileCanvas);
|
|
78
|
+
};
|
|
79
|
+
const timeoutId = window.setTimeout(() => {
|
|
80
|
+
renderMap?.un('rendercomplete', handleRenderComplete);
|
|
81
|
+
getLogger('MapboxVectorTileImageryProvider').warning('Tile render timed out; returning empty tile.');
|
|
82
|
+
finish(emptyCanvas);
|
|
83
|
+
}, TIMEOUT_MS);
|
|
84
|
+
const wrappedHandleRenderComplete = () => {
|
|
85
|
+
window.clearTimeout(timeoutId);
|
|
86
|
+
handleRenderComplete();
|
|
87
|
+
};
|
|
88
|
+
renderMap.once('rendercomplete', wrappedHandleRenderComplete);
|
|
89
|
+
renderMap.render();
|
|
90
|
+
}
|
|
91
|
+
catch (e) {
|
|
92
|
+
getLogger('MapboxVectorTileImageryProvider').error(`Error rendering tile: ${e.message}`);
|
|
93
|
+
finish(emptyCanvas);
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
async function doRequestImage(x, y, level, cacheKey) {
|
|
98
|
+
const rectangle = tilingScheme.tileXYToRectangle(x, y, level);
|
|
99
|
+
const extent = rectangleToMercatorExtent(rectangle);
|
|
100
|
+
// Add gutters to prevent labels from being cut off
|
|
101
|
+
const gutterSize = getGutterSize(level);
|
|
102
|
+
const gutter = ((extent[2] - extent[0]) / tileWidth) * gutterSize;
|
|
103
|
+
const expandedExtent = buffer(extent, gutter);
|
|
104
|
+
isRendering = true;
|
|
105
|
+
if (fetchFeatures) {
|
|
106
|
+
await fetchFeatures(x, y, level, expandedExtent);
|
|
107
|
+
}
|
|
108
|
+
const renderedTile = await renderTile(level, expandedExtent, gutterSize);
|
|
109
|
+
isRendering = false;
|
|
110
|
+
const levelCache = getLevelCache(level);
|
|
111
|
+
levelCache.set(cacheKey, renderedTile);
|
|
112
|
+
levelCache.expireCache();
|
|
113
|
+
return renderedTile;
|
|
114
|
+
}
|
|
115
|
+
return {
|
|
116
|
+
get map() {
|
|
117
|
+
return renderMap;
|
|
118
|
+
},
|
|
119
|
+
get isRendering() {
|
|
120
|
+
return isRendering;
|
|
121
|
+
},
|
|
122
|
+
requestImage(x, y, level) {
|
|
123
|
+
const cacheKey = getTileCacheKey(x, y, level);
|
|
124
|
+
const levelCache = getLevelCache(level);
|
|
125
|
+
if (levelCache.containsKey(cacheKey)) {
|
|
126
|
+
return Promise.resolve(levelCache.get(cacheKey));
|
|
127
|
+
}
|
|
128
|
+
if (isRendering) {
|
|
129
|
+
return undefined;
|
|
130
|
+
}
|
|
131
|
+
return doRequestImage(x, y, level, cacheKey);
|
|
132
|
+
},
|
|
133
|
+
destroy() {
|
|
134
|
+
for (const cache of tileCacheByLevel.values()) {
|
|
135
|
+
cache.clear();
|
|
136
|
+
}
|
|
137
|
+
tileCacheByLevel.clear();
|
|
138
|
+
isRendering = false;
|
|
139
|
+
renderMap.setTarget(undefined);
|
|
140
|
+
renderMap.dispose();
|
|
141
|
+
},
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=olImageRenderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"olImageRenderer.js","sourceRoot":"","sources":["../../../../../src/layer/cesium/imageryProvider/olImageRenderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type VectorTileImageryProviderOptions } from './vectorTileImageryProvider.js';
|
|
2
|
+
import AbstractVcsImageryProvider from './abstractVcsImageryProvider.js';
|
|
3
|
+
import type TileProvider from '../../tileProvider/tileProvider.js';
|
|
4
|
+
export default class PanoramaDatasetImageryProvider extends AbstractVcsImageryProvider {
|
|
5
|
+
private _source;
|
|
6
|
+
private _olImageRenderer;
|
|
7
|
+
tileProvider: TileProvider;
|
|
8
|
+
constructor(options: VectorTileImageryProviderOptions);
|
|
9
|
+
requestImage(x: number, y: number, level: number): Promise<HTMLImageElement | HTMLCanvasElement> | undefined;
|
|
10
|
+
private _fetchFeatures;
|
|
11
|
+
destroy(): void;
|
|
12
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import VectorSource from 'ol/source/Vector.js';
|
|
2
|
+
import VectorLayer from 'ol/layer/Vector.js';
|
|
3
|
+
import { createOLImageRenderer, } from './olImageRenderer.js';
|
|
4
|
+
import Extent from '../../../util/extent.js';
|
|
5
|
+
import { mercatorProjection } from '../../../util/projection.js';
|
|
6
|
+
import AbstractVcsImageryProvider from './abstractVcsImageryProvider.js';
|
|
7
|
+
export default class PanoramaDatasetImageryProvider extends AbstractVcsImageryProvider {
|
|
8
|
+
_source = new VectorSource({ useSpatialIndex: false });
|
|
9
|
+
_olImageRenderer;
|
|
10
|
+
tileProvider;
|
|
11
|
+
constructor(options) {
|
|
12
|
+
super({
|
|
13
|
+
tilingScheme: options.tileProvider.tilingScheme,
|
|
14
|
+
tileSize: options.tileSize,
|
|
15
|
+
minLevel: 0,
|
|
16
|
+
maxLevel: 26,
|
|
17
|
+
});
|
|
18
|
+
this.tileProvider = options.tileProvider;
|
|
19
|
+
this._olImageRenderer = createOLImageRenderer({
|
|
20
|
+
tilingScheme: this.tileProvider.tilingScheme,
|
|
21
|
+
tileWidth: this.tileWidth,
|
|
22
|
+
tileHeight: this.tileHeight,
|
|
23
|
+
emptyCanvas: this.emptyCanvas,
|
|
24
|
+
fetchFeatures: this._fetchFeatures.bind(this),
|
|
25
|
+
});
|
|
26
|
+
this._olImageRenderer.map.addLayer(new VectorLayer({ source: this._source, declutter: true }));
|
|
27
|
+
}
|
|
28
|
+
requestImage(x, y, level) {
|
|
29
|
+
return this._olImageRenderer.requestImage(x, y, level);
|
|
30
|
+
}
|
|
31
|
+
async _fetchFeatures(_x, _y, level, extent) {
|
|
32
|
+
const vcsExtent = new Extent({
|
|
33
|
+
coordinates: extent,
|
|
34
|
+
projection: mercatorProjection.toJSON(),
|
|
35
|
+
});
|
|
36
|
+
const features = await this.tileProvider.getFeaturesForExtent(vcsExtent, level);
|
|
37
|
+
this._source.clear(true);
|
|
38
|
+
this._source.addFeatures(features);
|
|
39
|
+
}
|
|
40
|
+
destroy() {
|
|
41
|
+
this._source.dispose();
|
|
42
|
+
this._olImageRenderer.destroy();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=panoramaDatasetImageryProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"panoramaDatasetImageryProvider.js","sourceRoot":"","sources":["../../../../../src/layer/cesium/imageryProvider/panoramaDatasetImageryProvider.ts"],"names":[],"mappings":"AACA,OAAO,YAAY,MAAM,qBAAqB,CAAC;AAC/C,OAAO,WAAW,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EACL,qBAAqB,GAEtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,MAAM,MAAM,yBAAyB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,0BAA0B,MAAM,iCAAiC,CAAC;AAGzE,MAAM,CAAC,OAAO,OAAO,8BAA+B,SAAQ,0BAA0B;IAC5E,OAAO,GAAG,IAAI,YAAY,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;IAEvD,gBAAgB,CAAkB;IAE1C,YAAY,CAAe;IAE3B,YAAY,OAAyC;QACnD,KAAK,CAAC;YACJ,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,YAAY;YAC/C,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,EAAE;SACb,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QAEzC,IAAI,CAAC,gBAAgB,GAAG,qBAAqB,CAAC;YAC5C,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,YAAY;YAC5C,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;SAC9C,CAAC,CAAC;QACH,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAChC,IAAI,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAC3D,CAAC;IACJ,CAAC;IAED,YAAY,CACV,CAAS,EACT,CAAS,EACT,KAAa;QAEb,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC;IAEO,KAAK,CAAC,cAAc,CAC1B,EAAU,EACV,EAAU,EACV,KAAa,EACb,MAAgB;QAEhB,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC;YAC3B,WAAW,EAAE,MAAM;YACnB,UAAU,EAAE,kBAAkB,CAAC,MAAM,EAAE;SACxC,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAC3D,SAAS,EACT,KAAK,CACN,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IAED,OAAO;QACL,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACvB,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;IAClC,CAAC;CACF"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { type Cartographic
|
|
1
|
+
import { type Cartographic } from '@vcmap-cesium/engine';
|
|
2
2
|
import { type Extent } from 'ol/extent.js';
|
|
3
3
|
import type { Coordinate } from 'ol/coordinate.js';
|
|
4
4
|
import type { Size } from 'ol/size.js';
|
|
5
5
|
import type { Feature } from 'ol/index.js';
|
|
6
|
-
import type TileProvider from '
|
|
7
|
-
import CanvasTileRenderer from '
|
|
6
|
+
import type TileProvider from '../../tileProvider/tileProvider.js';
|
|
7
|
+
import CanvasTileRenderer from '../../../ol/render/canvas/canvasTileRenderer.js';
|
|
8
|
+
import AbstractVcsImageryProvider from './abstractVcsImageryProvider.js';
|
|
8
9
|
export declare function toContext(extent: Extent, center: Coordinate, context: CanvasRenderingContext2D, tileSize: Size): CanvasTileRenderer;
|
|
9
10
|
/**
|
|
10
11
|
* creates a canvas and draws the features on the canvas;
|
|
@@ -23,30 +24,10 @@ export type VectorTileImageryProviderOptions = {
|
|
|
23
24
|
/**
|
|
24
25
|
* implementation of Cesium ImageryProvider Interface
|
|
25
26
|
*/
|
|
26
|
-
declare class VectorTileImageryProvider {
|
|
27
|
+
declare class VectorTileImageryProvider extends AbstractVcsImageryProvider {
|
|
27
28
|
tileProvider: TileProvider;
|
|
28
|
-
private _tilingScheme;
|
|
29
|
-
private _tileSize;
|
|
30
|
-
private _errorEvent;
|
|
31
|
-
headers?: Record<string, string>;
|
|
32
|
-
emptyCanvas: HTMLCanvasElement;
|
|
33
|
-
minLevel: number;
|
|
34
|
-
maxLevel: number;
|
|
35
29
|
_reload: undefined | (() => void);
|
|
36
30
|
constructor(options: VectorTileImageryProviderOptions);
|
|
37
|
-
get _ready(): boolean;
|
|
38
|
-
get ready(): boolean;
|
|
39
|
-
get rectangle(): Rectangle;
|
|
40
|
-
get tileWidth(): number;
|
|
41
|
-
get tileHeight(): number;
|
|
42
|
-
get maximumLevel(): number;
|
|
43
|
-
get minimumLevel(): number;
|
|
44
|
-
get tilingScheme(): TilingScheme;
|
|
45
|
-
get tileDiscardPolicy(): undefined;
|
|
46
|
-
get errorEvent(): CesiumEvent;
|
|
47
|
-
get credit(): undefined;
|
|
48
|
-
get proxy(): undefined;
|
|
49
|
-
get hasAlphaChannel(): boolean;
|
|
50
31
|
/**
|
|
51
32
|
* Requests the image for a given tile. This function should
|
|
52
33
|
* not be called before returns true.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { Event as CesiumEvent, } from '@vcmap-cesium/engine';
|
|
2
1
|
import { getLogger } from '@vcsuite/logger';
|
|
3
2
|
import { compose, create as createTransform, scale as scaleTransform, } from 'ol/transform.js';
|
|
4
3
|
import { getCenter } from 'ol/extent.js';
|
|
5
|
-
import CanvasTileRenderer from '
|
|
6
|
-
import { rectangleToMercatorExtent } from '
|
|
4
|
+
import CanvasTileRenderer from '../../../ol/render/canvas/canvasTileRenderer.js';
|
|
5
|
+
import { rectangleToMercatorExtent } from '../../../util/math.js';
|
|
6
|
+
import AbstractVcsImageryProvider from './abstractVcsImageryProvider.js';
|
|
7
7
|
export function toContext(extent, center, context, tileSize) {
|
|
8
8
|
const { canvas } = context;
|
|
9
9
|
canvas.width = tileSize[0];
|
|
@@ -31,7 +31,7 @@ export function getCanvasFromFeatures(features, extent, deprecatedCenter, tileSi
|
|
|
31
31
|
}
|
|
32
32
|
const canvas = document.createElement('canvas');
|
|
33
33
|
canvas.width = tileSize[0];
|
|
34
|
-
canvas.height = tileSize[
|
|
34
|
+
canvas.height = tileSize[1];
|
|
35
35
|
const vectorContext = toContext(extent, getCenter(extent), canvas.getContext('2d'), tileSize);
|
|
36
36
|
features.forEach((feature) => {
|
|
37
37
|
const styleFunction = feature.getStyleFunction();
|
|
@@ -45,71 +45,19 @@ export function getCanvasFromFeatures(features, extent, deprecatedCenter, tileSi
|
|
|
45
45
|
/**
|
|
46
46
|
* implementation of Cesium ImageryProvider Interface
|
|
47
47
|
*/
|
|
48
|
-
class VectorTileImageryProvider {
|
|
48
|
+
class VectorTileImageryProvider extends AbstractVcsImageryProvider {
|
|
49
49
|
tileProvider;
|
|
50
|
-
_tilingScheme;
|
|
51
|
-
_tileSize;
|
|
52
|
-
_errorEvent = new CesiumEvent();
|
|
53
|
-
headers;
|
|
54
|
-
emptyCanvas;
|
|
55
|
-
minLevel = 0;
|
|
56
|
-
maxLevel = 26;
|
|
57
50
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
58
51
|
_reload = undefined;
|
|
59
52
|
constructor(options) {
|
|
53
|
+
super({
|
|
54
|
+
tilingScheme: options.tileProvider.tilingScheme,
|
|
55
|
+
tileSize: options.tileSize,
|
|
56
|
+
headers: options.headers,
|
|
57
|
+
minLevel: 0,
|
|
58
|
+
maxLevel: 26,
|
|
59
|
+
});
|
|
60
60
|
this.tileProvider = options.tileProvider;
|
|
61
|
-
this._tilingScheme = this.tileProvider.tilingScheme;
|
|
62
|
-
this._tileSize = options.tileSize;
|
|
63
|
-
this._errorEvent = new CesiumEvent();
|
|
64
|
-
this.emptyCanvas = document.createElement('canvas');
|
|
65
|
-
this.emptyCanvas.width = this.tileWidth;
|
|
66
|
-
this.emptyCanvas.height = this.tileHeight;
|
|
67
|
-
this.headers = options.headers;
|
|
68
|
-
}
|
|
69
|
-
// eslint-disable-next-line class-methods-use-this,@typescript-eslint/naming-convention
|
|
70
|
-
get _ready() {
|
|
71
|
-
return true;
|
|
72
|
-
}
|
|
73
|
-
// eslint-disable-next-line class-methods-use-this
|
|
74
|
-
get ready() {
|
|
75
|
-
return true;
|
|
76
|
-
}
|
|
77
|
-
get rectangle() {
|
|
78
|
-
return this._tilingScheme.rectangle;
|
|
79
|
-
}
|
|
80
|
-
get tileWidth() {
|
|
81
|
-
return this._tileSize[0];
|
|
82
|
-
}
|
|
83
|
-
get tileHeight() {
|
|
84
|
-
return this._tileSize[1];
|
|
85
|
-
}
|
|
86
|
-
get maximumLevel() {
|
|
87
|
-
return this.maxLevel;
|
|
88
|
-
}
|
|
89
|
-
get minimumLevel() {
|
|
90
|
-
return this.minLevel;
|
|
91
|
-
}
|
|
92
|
-
get tilingScheme() {
|
|
93
|
-
return this._tilingScheme;
|
|
94
|
-
}
|
|
95
|
-
// eslint-disable-next-line class-methods-use-this
|
|
96
|
-
get tileDiscardPolicy() {
|
|
97
|
-
return undefined;
|
|
98
|
-
}
|
|
99
|
-
get errorEvent() {
|
|
100
|
-
return this._errorEvent;
|
|
101
|
-
}
|
|
102
|
-
// eslint-disable-next-line class-methods-use-this
|
|
103
|
-
get credit() {
|
|
104
|
-
return undefined;
|
|
105
|
-
}
|
|
106
|
-
// eslint-disable-next-line class-methods-use-this
|
|
107
|
-
get proxy() {
|
|
108
|
-
return undefined;
|
|
109
|
-
}
|
|
110
|
-
// eslint-disable-next-line class-methods-use-this
|
|
111
|
-
get hasAlphaChannel() {
|
|
112
|
-
return true;
|
|
113
61
|
}
|
|
114
62
|
/**
|
|
115
63
|
* Requests the image for a given tile. This function should
|
|
@@ -130,7 +78,10 @@ class VectorTileImageryProvider {
|
|
|
130
78
|
}
|
|
131
79
|
const rectangle = this.tileProvider.tilingScheme.tileXYToRectangle(x, y, level);
|
|
132
80
|
const extent = rectangleToMercatorExtent(rectangle);
|
|
133
|
-
return getCanvasFromFeatures(features, extent, undefined,
|
|
81
|
+
return getCanvasFromFeatures(features, extent, undefined, [
|
|
82
|
+
this.tileWidth,
|
|
83
|
+
this.tileHeight,
|
|
84
|
+
]);
|
|
134
85
|
}
|
|
135
86
|
}
|
|
136
87
|
export default VectorTileImageryProvider;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vectorTileImageryProvider.js","sourceRoot":"","sources":["../../../../../src/layer/cesium/imageryProvider/vectorTileImageryProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import type { SplitDirection } from '@vcmap-cesium/engine';
|
|
|
3
3
|
import type LayerGroup from 'ol/layer/Group.js';
|
|
4
4
|
import type BaseCesiumMap from '../../map/baseCesiumMap.js';
|
|
5
5
|
import type { LayerImplementationOptions } from '../layer.js';
|
|
6
|
-
import MapboxStyleImageryProvider from './mapboxStyleImageryProvider.js';
|
|
6
|
+
import MapboxStyleImageryProvider from './imageryProvider/mapboxStyleImageryProvider.js';
|
|
7
7
|
import RasterLayerCesiumImpl from './rasterLayerCesiumImpl.js';
|
|
8
8
|
export type MapboxStyleLayerImplementationOptions = LayerImplementationOptions & {
|
|
9
9
|
styledMapboxLayerGroup: LayerGroup;
|