@vcmap/core 6.3.1 → 6.3.3
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/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} +88 -97
- 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} +12 -26
- package/dist/src/layer/cesium/imageryProvider/vectorTileImageryProvider.js +88 -0
- 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/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 +1 -1
- 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} +111 -119
- 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} +35 -102
- 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/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 +0 -133
- 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,18 +1,41 @@
|
|
|
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;
|
|
9
10
|
canvas.height = height;
|
|
10
11
|
return canvas;
|
|
11
12
|
}
|
|
12
|
-
function areGridsAligned(tileGrid, tilingScheme) {
|
|
13
|
+
function areGridsAligned(tileGrid, tilingScheme, source) {
|
|
13
14
|
const olRectangle = mercatorExtentToRectangle(tileGrid.getTileCoordExtent([0, 0, 0]));
|
|
14
15
|
const cesiumRectangle = tilingScheme.tileXYToRectangle(0, 0, 0);
|
|
15
|
-
|
|
16
|
+
const rectanglesEqual = Rectangle.equalsEpsilon(cesiumRectangle, olRectangle, CesiumMath.EPSILON8);
|
|
17
|
+
if (rectanglesEqual) {
|
|
18
|
+
let width = 0;
|
|
19
|
+
let height = 0;
|
|
20
|
+
const numResolutions = tileGrid.getResolutions().length;
|
|
21
|
+
for (let i = 0; i < numResolutions; i++) {
|
|
22
|
+
// @ts-expect-error protected
|
|
23
|
+
const size = source.getTileSize(i);
|
|
24
|
+
if (!width) {
|
|
25
|
+
width = Math.round(size[0]);
|
|
26
|
+
}
|
|
27
|
+
else if (width !== Math.round(size[0])) {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
if (!height) {
|
|
31
|
+
height = Math.round(size[1]);
|
|
32
|
+
}
|
|
33
|
+
else if (height !== Math.round(size[1])) {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return rectanglesEqual;
|
|
16
39
|
}
|
|
17
40
|
function getTilingSchemeFromSource(source) {
|
|
18
41
|
const tileGrid = source.getTileGrid();
|
|
@@ -40,83 +63,73 @@ function getTilingSchemeFromSource(source) {
|
|
|
40
63
|
}
|
|
41
64
|
return tilingScheme;
|
|
42
65
|
}
|
|
43
|
-
|
|
66
|
+
function drawData(ctx, data, size, offsetX = 0, offsetY = 0) {
|
|
67
|
+
const imageData = ctx.createImageData(size[0], size[1]);
|
|
68
|
+
let usedData = data;
|
|
69
|
+
// this is a grey image
|
|
70
|
+
if (data.length === imageData.data.length / 2) {
|
|
71
|
+
usedData = new Uint8Array(imageData.data.length);
|
|
72
|
+
for (let i = 0; i < data.length; i++) {
|
|
73
|
+
const value = data[i];
|
|
74
|
+
if (i % 2 === 0) {
|
|
75
|
+
const pixelOffset = (i / 2) * 4;
|
|
76
|
+
usedData[pixelOffset] = value;
|
|
77
|
+
usedData[pixelOffset + 1] = value;
|
|
78
|
+
usedData[pixelOffset + 2] = value;
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
const pixelOffset = ((i - 1) / 2) * 4;
|
|
82
|
+
usedData[pixelOffset + 3] = value;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
imageData.data.set(usedData);
|
|
87
|
+
ctx.putImageData(imageData, offsetX, offsetY);
|
|
88
|
+
}
|
|
89
|
+
function getMaximumTileSize(source) {
|
|
90
|
+
let width = 0;
|
|
91
|
+
let height = 0;
|
|
92
|
+
const numResolutions = source.getTileGrid().getResolutions().length;
|
|
93
|
+
for (let i = 0; i < numResolutions; i++) {
|
|
94
|
+
// @ts-expect-error protected
|
|
95
|
+
const size = source.getTileSize(i);
|
|
96
|
+
if (width < size[0] && height < size[1]) {
|
|
97
|
+
width = Math.round(size[0]);
|
|
98
|
+
height = Math.round(size[1]);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return [width, height];
|
|
102
|
+
}
|
|
103
|
+
export default class COGImageryProvider extends AbstractVcsImageryProvider {
|
|
44
104
|
_source;
|
|
45
|
-
_emptyCanvas;
|
|
46
105
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
47
106
|
_reload = undefined;
|
|
48
107
|
_projection;
|
|
49
|
-
_tilingScheme;
|
|
50
108
|
_tileGrid;
|
|
51
109
|
_boundTileLoader;
|
|
52
|
-
tileWidth = 256;
|
|
53
|
-
tileHeight = 256;
|
|
54
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
|
+
});
|
|
55
119
|
this._source = _source;
|
|
56
|
-
this._emptyCanvas = createEmptyCanvas(this.tileWidth, this.tileHeight);
|
|
57
120
|
this._projection = this._source.getProjection();
|
|
58
121
|
this._tileGrid = this._source.getTileGrid();
|
|
59
|
-
this._tilingScheme
|
|
60
|
-
if (areGridsAligned(this._tileGrid, this._tilingScheme)) {
|
|
122
|
+
if (areGridsAligned(this._tileGrid, this._tilingScheme, this._source)) {
|
|
61
123
|
this._boundTileLoader = this._loadAlignedTile.bind(this);
|
|
62
124
|
}
|
|
63
125
|
else {
|
|
64
126
|
this._boundTileLoader = this._loadUnalignedTile.bind(this);
|
|
65
127
|
}
|
|
66
|
-
// @ts-expect-error protected
|
|
67
|
-
const [width, height] = this._source.getTileSize(0);
|
|
68
|
-
this.tileWidth = Math.round(width);
|
|
69
|
-
this.tileHeight = Math.round(height);
|
|
70
|
-
}
|
|
71
|
-
// eslint-disable-next-line class-methods-use-this,@typescript-eslint/naming-convention
|
|
72
|
-
get _ready() {
|
|
73
|
-
return true;
|
|
74
|
-
}
|
|
75
|
-
// eslint-disable-next-line class-methods-use-this
|
|
76
|
-
get ready() {
|
|
77
|
-
return true;
|
|
78
|
-
}
|
|
79
|
-
get rectangle() {
|
|
80
|
-
return this._tilingScheme.rectangle;
|
|
81
|
-
}
|
|
82
|
-
get tilingScheme() {
|
|
83
|
-
return this._tilingScheme;
|
|
84
|
-
}
|
|
85
|
-
errorEvent = new CesiumEvent();
|
|
86
|
-
// eslint-disable-next-line class-methods-use-this
|
|
87
|
-
get credit() {
|
|
88
|
-
return undefined;
|
|
89
|
-
}
|
|
90
|
-
// eslint-disable-next-line class-methods-use-this
|
|
91
|
-
get proxy() {
|
|
92
|
-
return undefined;
|
|
93
|
-
}
|
|
94
|
-
get maximumLevel() {
|
|
95
|
-
const tileGrid = this._source.getTileGrid();
|
|
96
|
-
if (tileGrid) {
|
|
97
|
-
return tileGrid.getMaxZoom();
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
return 18; // some arbitrary value
|
|
101
|
-
}
|
|
102
128
|
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
// a few tiles and tries to load them all at once -- this can
|
|
108
|
-
// freeze and/or crash the browser !
|
|
109
|
-
return 0;
|
|
110
|
-
//var tg = this._source.getTileGrid();
|
|
111
|
-
//return tg ? tg.getMinZoom() : 0;
|
|
112
|
-
}
|
|
113
|
-
// eslint-disable-next-line class-methods-use-this
|
|
114
|
-
get tileDiscardPolicy() {
|
|
115
|
-
return undefined;
|
|
116
|
-
}
|
|
117
|
-
// eslint-disable-next-line class-methods-use-this
|
|
118
|
-
get hasAlphaChannel() {
|
|
119
|
-
return true;
|
|
129
|
+
_getTileSizeForLevel(level) {
|
|
130
|
+
// @ts-expect-error protected
|
|
131
|
+
const [width, height] = this._source.getTileSize(level);
|
|
132
|
+
return [Math.round(width), Math.round(height)];
|
|
120
133
|
}
|
|
121
134
|
async _loadOLTile(x, y, level) {
|
|
122
135
|
const tile = this._source.getTile(level, x, y, 1, this._projection);
|
|
@@ -151,40 +164,17 @@ export default class COGImageryProvider {
|
|
|
151
164
|
}
|
|
152
165
|
return Promise.resolve(undefined);
|
|
153
166
|
}
|
|
154
|
-
_drawData(ctx, data, offsetX = 0, offsetY = 0) {
|
|
155
|
-
const imageData = ctx.createImageData(this.tileWidth, this.tileHeight);
|
|
156
|
-
let usedData = data;
|
|
157
|
-
// this is a grey image
|
|
158
|
-
if (data.length === imageData.data.length / 2) {
|
|
159
|
-
usedData = new Uint8Array(imageData.data.length);
|
|
160
|
-
for (let i = 0; i < data.length; i++) {
|
|
161
|
-
const value = data[i];
|
|
162
|
-
if (i % 2 === 0) {
|
|
163
|
-
const pixelOffset = (i / 2) * 4;
|
|
164
|
-
usedData[pixelOffset] = value;
|
|
165
|
-
usedData[pixelOffset + 1] = value;
|
|
166
|
-
usedData[pixelOffset + 2] = value;
|
|
167
|
-
}
|
|
168
|
-
else {
|
|
169
|
-
const pixelOffset = ((i - 1) / 2) * 4;
|
|
170
|
-
usedData[pixelOffset + 3] = value;
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
imageData.data.set(usedData);
|
|
175
|
-
ctx.putImageData(imageData, offsetX, offsetY);
|
|
176
|
-
}
|
|
177
167
|
async _loadAlignedTile(x, y, level) {
|
|
178
168
|
const tileData = await this._loadOLTile(x, y, level);
|
|
179
169
|
if (tileData) {
|
|
180
170
|
const canvas = createEmptyCanvas(this.tileWidth, this.tileHeight);
|
|
181
171
|
const ctx = canvas.getContext('2d');
|
|
182
172
|
if (ctx) {
|
|
183
|
-
|
|
173
|
+
drawData(ctx, tileData, [this.tileWidth, this.tileHeight]);
|
|
184
174
|
}
|
|
185
175
|
return canvas;
|
|
186
176
|
}
|
|
187
|
-
return this.
|
|
177
|
+
return this.emptyCanvas;
|
|
188
178
|
}
|
|
189
179
|
async _loadUnalignedTile(x, y, level) {
|
|
190
180
|
const rectangle = this._tilingScheme.tileXYToRectangle(x, y, level);
|
|
@@ -192,10 +182,11 @@ export default class COGImageryProvider {
|
|
|
192
182
|
const resolution = Math.max(getExtentWidth(extent) / this.tileWidth, getExtentHeight(extent) / this.tileHeight);
|
|
193
183
|
const levelResolution = this._tileGrid.getZForResolution(resolution);
|
|
194
184
|
const tileRange = this._tileGrid.getTileRangeForExtentAndZ(extent, levelResolution);
|
|
195
|
-
const
|
|
185
|
+
const [levelWidth, levelHeight] = this._getTileSizeForLevel(levelResolution);
|
|
186
|
+
const canvas = createEmptyCanvas(levelWidth * tileRange.getWidth(), levelHeight * tileRange.getHeight());
|
|
196
187
|
const ctx = canvas.getContext('2d');
|
|
197
188
|
if (!ctx) {
|
|
198
|
-
return this.
|
|
189
|
+
return this.emptyCanvas;
|
|
199
190
|
}
|
|
200
191
|
const promises = [];
|
|
201
192
|
const tileRangeExtent = createEmptyExtent();
|
|
@@ -208,15 +199,15 @@ export default class COGImageryProvider {
|
|
|
208
199
|
]));
|
|
209
200
|
promises.push(this._loadOLTile(partialX, partialY, levelResolution).then((tileData) => {
|
|
210
201
|
if (tileData) {
|
|
211
|
-
|
|
202
|
+
drawData(ctx, tileData, [levelWidth, levelHeight], (partialX - tileRange.minX) * levelWidth, (partialY - tileRange.minY) * levelHeight);
|
|
212
203
|
}
|
|
213
204
|
}));
|
|
214
205
|
}
|
|
215
206
|
}
|
|
216
207
|
await Promise.all(promises);
|
|
217
|
-
|
|
218
|
-
const
|
|
219
|
-
|
|
208
|
+
// TODO if canvas has same height and width early escape
|
|
209
|
+
const unitsPerPixelX = getExtentWidth(tileRangeExtent) / (levelWidth * tileRange.getWidth());
|
|
210
|
+
const unitsPerPixelY = getExtentHeight(tileRangeExtent) / (levelHeight * tileRange.getHeight());
|
|
220
211
|
const tileRangeTopLeft = getTopLeftExtent(tileRangeExtent);
|
|
221
212
|
const extentTopLeft = getTopLeftExtent(extent);
|
|
222
213
|
const windowX = Math.abs(tileRangeTopLeft[0] - extentTopLeft[0]) / unitsPerPixelX;
|
|
@@ -229,7 +220,7 @@ export default class COGImageryProvider {
|
|
|
229
220
|
windowCtx.drawImage(canvas, windowX, windowY, windowWidth, windowHeight, 0, 0, this.tileWidth, this.tileHeight);
|
|
230
221
|
return windowCanvas;
|
|
231
222
|
}
|
|
232
|
-
return this.
|
|
223
|
+
return this.emptyCanvas;
|
|
233
224
|
}
|
|
234
225
|
requestImage(x, y, level) {
|
|
235
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"}
|