maplibre-gl 6.0.0 → 6.2.0
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/build/readme.md +0 -2
- package/dist/maplibre-gl-dev.mjs +433 -573
- package/dist/maplibre-gl-dev.mjs.map +1 -1
- package/dist/maplibre-gl-shared-dev.mjs +984 -850
- package/dist/maplibre-gl-shared-dev.mjs.map +1 -1
- package/dist/maplibre-gl-shared.mjs +2 -2
- package/dist/maplibre-gl-shared.mjs.map +1 -1
- package/dist/maplibre-gl-worker-dev.mjs +14 -12
- package/dist/maplibre-gl-worker-dev.mjs.map +1 -1
- package/dist/maplibre-gl-worker.mjs +2 -2
- package/dist/maplibre-gl-worker.mjs.map +1 -1
- package/dist/maplibre-gl.css +1 -1
- package/dist/maplibre-gl.d.ts +119 -42
- package/dist/maplibre-gl.mjs +22 -22
- package/dist/maplibre-gl.mjs.map +1 -1
- package/package.json +20 -22
- package/src/css/maplibre-gl.css +4 -0
- package/src/data/bucket/circle_bucket.ts +3 -2
- package/src/data/bucket/fill_bucket.ts +3 -2
- package/src/data/bucket/fill_extrusion_bucket.test.ts +22 -0
- package/src/data/bucket/fill_extrusion_bucket.ts +17 -4
- package/src/data/bucket/line_bucket.test.ts +5 -5
- package/src/data/bucket/line_bucket.ts +3 -2
- package/src/data/bucket/round_polygon_corners.test.ts +159 -0
- package/src/data/bucket/round_polygon_corners.ts +121 -0
- package/src/data/bucket/symbol_bucket.test.ts +7 -7
- package/src/data/dem_data.test.ts +23 -23
- package/src/data/feature_position_map.test.ts +1 -1
- package/src/data/segment.test.ts +14 -14
- package/src/geo/bounds.test.ts +4 -4
- package/src/geo/lng_lat_bounds.test.ts +1 -1
- package/src/geo/projection/covering_tiles.bench.ts +39 -0
- package/src/geo/projection/covering_tiles.test.ts +3 -7
- package/src/geo/projection/covering_tiles.ts +37 -2
- package/src/geo/projection/globe_covering_tiles_details_provider.ts +4 -4
- package/src/geo/projection/globe_projection.test.ts +2 -2
- package/src/geo/projection/globe_projection.ts +6 -15
- package/src/geo/projection/globe_transform.test.ts +3 -6
- package/src/geo/projection/globe_transform.ts +4 -7
- package/src/geo/projection/mercator_covering_tiles_details_provider.ts +4 -4
- package/src/geo/projection/mercator_projection.ts +1 -13
- package/src/geo/projection/mercator_transform.test.ts +1 -1
- package/src/geo/projection/mercator_transform.ts +2 -1
- package/src/geo/projection/mercator_utils.test.ts +8 -8
- package/src/geo/projection/projection.ts +0 -27
- package/src/geo/projection/projection_data.ts +8 -0
- package/src/geo/projection/projection_factory.ts +3 -3
- package/src/geo/projection/vertical_perspective_projection.ts +3 -60
- package/src/geo/projection/vertical_perspective_transform.ts +16 -23
- package/src/geo/transform_interface.ts +1 -2
- package/src/index.test.ts +7 -12
- package/src/index.ts +4 -2
- package/src/render/glyph_manager.test.ts +7 -22
- package/src/render/painter.test.ts +2 -0
- package/src/render/painter.ts +8 -11
- package/src/render/subdivision.bench.ts +39 -0
- package/src/render/subdivision.test.ts +22 -23
- package/src/render/subdivision.ts +46 -0
- package/src/render/terrain.test.ts +68 -34
- package/src/render/terrain.ts +69 -26
- package/src/shaders/glsl/_projection_globe.fragment.glsl +12 -0
- package/src/shaders/glsl/_projection_globe.fragment.glsl.g.ts +2 -0
- package/src/shaders/glsl/_projection_globe.vertex.glsl +29 -10
- package/src/shaders/glsl/_projection_globe.vertex.glsl.g.ts +1 -1
- package/src/shaders/glsl/_projection_mercator.fragment.glsl +4 -0
- package/src/shaders/glsl/_projection_mercator.fragment.glsl.g.ts +2 -0
- package/src/shaders/glsl/line.fragment.glsl +2 -0
- package/src/shaders/glsl/line.fragment.glsl.g.ts +1 -1
- package/src/shaders/glsl/line_gradient.fragment.glsl +2 -0
- package/src/shaders/glsl/line_gradient.fragment.glsl.g.ts +1 -1
- package/src/shaders/glsl/line_gradient_sdf.fragment.glsl +2 -0
- package/src/shaders/glsl/line_gradient_sdf.fragment.glsl.g.ts +1 -1
- package/src/shaders/glsl/line_pattern.fragment.glsl +2 -0
- package/src/shaders/glsl/line_pattern.fragment.glsl.g.ts +1 -1
- package/src/shaders/glsl/line_sdf.fragment.glsl +2 -0
- package/src/shaders/glsl/line_sdf.fragment.glsl.g.ts +1 -1
- package/src/shaders/shaders.ts +4 -6
- package/src/source/canvas_source.test.ts +1 -1
- package/src/source/geojson_source.test.ts +32 -4
- package/src/source/geojson_source.ts +41 -0
- package/src/source/geojson_source_diff.test.ts +2 -2
- package/src/source/geojson_worker_source.test.ts +9 -5
- package/src/source/image_source.test.ts +137 -62
- package/src/source/image_source.ts +49 -12
- package/src/source/raster_dem_tile_source.test.ts +2 -2
- package/src/source/raster_tile_source.test.ts +64 -9
- package/src/source/raster_tile_source.ts +2 -1
- package/src/source/rtl_text_plugin_main_thread.test.ts +14 -14
- package/src/source/source.test.ts +8 -8
- package/src/source/vector_tile_source.test.ts +1 -1
- package/src/source/vector_tile_worker_source.test.ts +7 -5
- package/src/source/video_source.test.ts +1 -1
- package/src/source/worker.test.ts +1 -1
- package/src/source/worker_tile.test.ts +10 -8
- package/src/style/light.test.ts +9 -9
- package/src/style/light.ts +3 -3
- package/src/style/load_glyph_range.test.ts +8 -8
- package/src/style/load_sprite.test.ts +1 -1
- package/src/style/properties.test.ts +94 -2
- package/src/style/properties.ts +30 -1
- package/src/style/sky.test.ts +9 -9
- package/src/style/sky.ts +2 -2
- package/src/style/style.test.ts +38 -36
- package/src/style/style.ts +3 -3
- package/src/style/style_layer/color_relief_style_layer.test.ts +1 -1
- package/src/style/style_layer/fill_extrusion_style_layer.ts +6 -3
- package/src/style/style_layer/fill_extrusion_style_layer_properties.g.ts +14 -1
- package/src/style/style_layer/raster_style_layer.test.ts +2 -2
- package/src/style/style_layer.test.ts +5 -51
- package/src/style/validate_style.test.ts +1 -1
- package/src/symbol/collision_index.test.ts +1 -1
- package/src/symbol/grid_index.test.ts +1 -1
- package/src/tile/terrain_tile_manager.test.ts +2 -2
- package/src/tile/tile_id.test.ts +5 -5
- package/src/tile/tile_manager.test.ts +113 -72
- package/src/tile/tile_manager.ts +2 -2
- package/src/tile/tile_manager_in_view_tiles.test.ts +2 -2
- package/src/ui/camera.test.ts +138 -135
- package/src/ui/control/geolocate_control.test.ts +7 -30
- package/src/ui/handler/dblclick_zoom.test.ts +2 -2
- package/src/ui/handler/mouse.ts +15 -7
- package/src/ui/handler/mouse_handler_interface.test.ts +21 -1
- package/src/ui/handler/scroll_zoom.test.ts +2 -0
- package/src/ui/handler_manager.test.ts +7 -7
- package/src/ui/hash.test.ts +1 -0
- package/src/ui/map.ts +45 -20
- package/src/ui/map_tests/map_basic.test.ts +11 -23
- package/src/ui/map_tests/map_calculate_camera_options.test.ts +6 -6
- package/src/ui/map_tests/map_events.test.ts +5 -7
- package/src/ui/map_tests/map_global_state.test.ts +3 -3
- package/src/ui/map_tests/map_images.test.ts +4 -3
- package/src/ui/map_tests/map_is_moving.test.ts +1 -1
- package/src/ui/map_tests/map_is_rotating.test.ts +1 -1
- package/src/ui/map_tests/map_layer.test.ts +2 -1
- package/src/ui/map_tests/map_options.test.ts +1 -5
- package/src/ui/map_tests/map_pitch.test.ts +6 -6
- package/src/ui/map_tests/map_refresh_tiles.test.ts +2 -2
- package/src/ui/map_tests/map_render.test.ts +1 -1
- package/src/ui/map_tests/map_set_lod_params.test.ts +1 -1
- package/src/ui/map_tests/map_style.test.ts +9 -1
- package/src/ui/map_tests/map_terrain.test.ts +41 -1
- package/src/ui/map_tests/map_zoom.test.ts +15 -15
- package/src/ui/marker.test.ts +71 -14
- package/src/ui/marker.ts +30 -6
- package/src/ui/popup.test.ts +3 -3
- package/src/util/actor.test.ts +6 -6
- package/src/util/ajax.test.ts +27 -39
- package/src/util/browser.test.ts +7 -9
- package/src/util/create_tile_mesh.test.ts +2 -2
- package/src/util/dispatcher.test.ts +1 -1
- package/src/util/evented.test.ts +4 -1
- package/src/util/fast_maths.test.ts +4 -4
- package/src/util/image_request.test.ts +6 -4
- package/src/util/primitives/bounding_volume_cache.ts +3 -1
- package/src/util/struct_array.test.ts +2 -2
- package/src/util/task_queue.test.ts +1 -1
- package/src/util/test/util.ts +1 -0
- package/src/util/time_control.test.ts +2 -2
- package/src/util/transferable_grid_index.test.ts +1 -1
- package/src/util/util.test.ts +27 -13
- package/src/util/verticalize_punctuation.test.ts +4 -4
- package/src/util/web_worker_transfer.test.ts +5 -5
- package/src/webgl/draw/draw_custom.test.ts +13 -13
- package/src/webgl/draw/draw_debug.test.ts +1 -1
- package/src/webgl/draw/draw_fill.test.ts +13 -12
- package/src/webgl/draw/draw_symbol.test.ts +17 -16
- package/src/webgl/program/program_uniforms.ts +0 -3
- package/src/webgl/program/projection_program.ts +12 -10
- package/src/webgl/program/terrain_program.test.ts +2 -2
- package/src/webgl/program.ts +6 -4
- package/src/webgl/render_to_texture.test.ts +5 -5
- package/src/webgl/state.test.ts +1 -1
- package/src/webgl/texture.test.ts +3 -3
- package/src/webgl/vertex_buffer.test.ts +1 -1
- package/build/rolldown_plugins.ts +0 -18
- package/src/geo/projection/globe_projection_error_measurement.ts +0 -229
- package/src/shaders/glsl/projection_error_measurement.fragment.glsl +0 -5
- package/src/shaders/glsl/projection_error_measurement.fragment.glsl.g.ts +0 -2
- package/src/shaders/glsl/projection_error_measurement.vertex.glsl +0 -22
- package/src/shaders/glsl/projection_error_measurement.vertex.glsl.g.ts +0 -2
- package/src/webgl/program/projection_error_measurement_program.ts +0 -23
|
@@ -343,16 +343,24 @@ describe('TileManager.removeTile', () => {
|
|
|
343
343
|
|
|
344
344
|
});
|
|
345
345
|
|
|
346
|
-
test('_tileLoaded after _removeTile skips tile.added', () => {
|
|
346
|
+
test('_tileLoaded after _removeTile skips tile.added', async () => {
|
|
347
347
|
const tileID = new OverscaledTileID(0, 0, 0, 0, 0);
|
|
348
348
|
|
|
349
349
|
const tileManager = createTileManager();
|
|
350
|
+
let releaseLoad: () => void;
|
|
351
|
+
const tileRegistered = new Promise<void>((resolve) => { releaseLoad = resolve; });
|
|
350
352
|
tileManager._source.loadTile = async () => {
|
|
353
|
+
await tileRegistered;
|
|
351
354
|
tileManager._removeTile(tileID.key);
|
|
352
355
|
};
|
|
353
356
|
tileManager.map = {painter: {crossTileSymbolIndex: '', tileExtentVAO: {}}} as any;
|
|
354
357
|
|
|
355
|
-
tileManager.
|
|
358
|
+
const abortPromise = tileManager.once('dataabort');
|
|
359
|
+
const tile = tileManager._addTile(tileID);
|
|
360
|
+
releaseLoad();
|
|
361
|
+
await abortPromise;
|
|
362
|
+
|
|
363
|
+
expect(tile.aborted).toBe(true);
|
|
356
364
|
});
|
|
357
365
|
|
|
358
366
|
test('fires dataabort event', async () => {
|
|
@@ -454,8 +462,11 @@ describe('TileManager / Source lifecycle', () => {
|
|
|
454
462
|
|
|
455
463
|
test('suppress 404 errors', () => {
|
|
456
464
|
const tileManager = createTileManager({status: 404, message: 'Not found'});
|
|
457
|
-
|
|
465
|
+
const errorListener = vi.fn();
|
|
466
|
+
tileManager.on('error', errorListener);
|
|
458
467
|
tileManager.onAdd(undefined);
|
|
468
|
+
|
|
469
|
+
expect(errorListener).not.toHaveBeenCalled();
|
|
459
470
|
});
|
|
460
471
|
|
|
461
472
|
test('loaded() true after source error', async () => {
|
|
@@ -588,6 +599,34 @@ describe('TileManager / Source lifecycle', () => {
|
|
|
588
599
|
|
|
589
600
|
});
|
|
590
601
|
|
|
602
|
+
test('reloads errored tiles as loading, not expired, on source data change', () => {
|
|
603
|
+
const transform = new MercatorTransform();
|
|
604
|
+
transform.resize(511, 511);
|
|
605
|
+
transform.setZoom(1);
|
|
606
|
+
|
|
607
|
+
const tileManager = createTileManager();
|
|
608
|
+
tileManager._source.loadTile = async (tile) => {
|
|
609
|
+
// the four z1 tiles error, the single z0 tile loads
|
|
610
|
+
tile.state = tile.tileID.canonical.z === 1 ? 'errored' : 'loaded';
|
|
611
|
+
};
|
|
612
|
+
|
|
613
|
+
tileManager.on('data', (e) => {
|
|
614
|
+
if (e.dataType === 'source' && e.sourceDataType === 'metadata') {
|
|
615
|
+
tileManager.update(transform);
|
|
616
|
+
// hold the reload in-flight so the state each tile is reloaded into stays observable
|
|
617
|
+
tileManager._source.loadTile = () => new Promise<void>(() => {});
|
|
618
|
+
tileManager.getSource().fire(new Event('data', {dataType: 'source', sourceDataType: 'content', sourceDataChanged: true}));
|
|
619
|
+
}
|
|
620
|
+
});
|
|
621
|
+
tileManager.onAdd(undefined);
|
|
622
|
+
|
|
623
|
+
// errored tiles have no texture; reloaded as 'expired' they'd count as renderable and
|
|
624
|
+
// crash the raster renderer, so only the z0 tile that had data should be renderable.
|
|
625
|
+
const renderableZooms = tileManager.getRenderableIds().map((id) => tileManager.getTileByID(id).tileID.canonical.z);
|
|
626
|
+
expect(renderableZooms).toEqual([0]);
|
|
627
|
+
|
|
628
|
+
});
|
|
629
|
+
|
|
591
630
|
});
|
|
592
631
|
|
|
593
632
|
describe('TileManager.update', () => {
|
|
@@ -773,7 +812,7 @@ describe('TileManager.update', () => {
|
|
|
773
812
|
]);
|
|
774
813
|
});
|
|
775
814
|
|
|
776
|
-
test('retains children tiles for pending parents', () => {
|
|
815
|
+
test('retains children tiles for pending parents', async () => {
|
|
777
816
|
const transform = new GlobeTransform();
|
|
778
817
|
transform.resize(511, 511);
|
|
779
818
|
transform.setZoom(1);
|
|
@@ -784,29 +823,28 @@ describe('TileManager.update', () => {
|
|
|
784
823
|
tile.state = (tile.tileID.key === new OverscaledTileID(0, 1, 0, 0, 0).key) ? 'loading' : 'loaded';
|
|
785
824
|
};
|
|
786
825
|
|
|
787
|
-
tileManager
|
|
788
|
-
if (e.sourceDataType === 'metadata') {
|
|
789
|
-
tileManager.update(transform);
|
|
790
|
-
expect(tileManager.getIds()).toEqual([
|
|
791
|
-
new OverscaledTileID(1, 1, 1, 1, 1).key,
|
|
792
|
-
new OverscaledTileID(1, 1, 1, 0, 1).key,
|
|
793
|
-
new OverscaledTileID(1, 1, 1, 1, 0).key,
|
|
794
|
-
new OverscaledTileID(1, 1, 1, 0, 0).key
|
|
795
|
-
]);
|
|
796
|
-
|
|
797
|
-
transform.setZoom(0);
|
|
798
|
-
tileManager.update(transform);
|
|
799
|
-
|
|
800
|
-
expect(tileManager.getIds()).toEqual([
|
|
801
|
-
new OverscaledTileID(0, 1, 0, 0, 0).key,
|
|
802
|
-
new OverscaledTileID(1, 1, 1, 1, 1).key,
|
|
803
|
-
new OverscaledTileID(1, 1, 1, 0, 1).key,
|
|
804
|
-
new OverscaledTileID(1, 1, 1, 1, 0).key,
|
|
805
|
-
new OverscaledTileID(1, 1, 1, 0, 0).key
|
|
806
|
-
]);
|
|
807
|
-
}
|
|
808
|
-
});
|
|
826
|
+
const metadataPromise = waitForEvent(tileManager, 'data', e => e.sourceDataType === 'metadata');
|
|
809
827
|
tileManager.onAdd(undefined);
|
|
828
|
+
await metadataPromise;
|
|
829
|
+
|
|
830
|
+
tileManager.update(transform);
|
|
831
|
+
expect(tileManager.getIds()).toEqual([
|
|
832
|
+
new OverscaledTileID(1, 1, 1, 1, 1).key,
|
|
833
|
+
new OverscaledTileID(1, 1, 1, 0, 1).key,
|
|
834
|
+
new OverscaledTileID(1, 1, 1, 1, 0).key,
|
|
835
|
+
new OverscaledTileID(1, 1, 1, 0, 0).key
|
|
836
|
+
]);
|
|
837
|
+
|
|
838
|
+
transform.setZoom(0);
|
|
839
|
+
tileManager.update(transform);
|
|
840
|
+
|
|
841
|
+
expect(tileManager.getIds()).toEqual([
|
|
842
|
+
new OverscaledTileID(0, 1, 0, 0, 0).key,
|
|
843
|
+
new OverscaledTileID(1, 1, 1, 1, 1).key,
|
|
844
|
+
new OverscaledTileID(1, 1, 1, 0, 1).key,
|
|
845
|
+
new OverscaledTileID(1, 1, 1, 1, 0).key,
|
|
846
|
+
new OverscaledTileID(1, 1, 1, 0, 0).key
|
|
847
|
+
]);
|
|
810
848
|
});
|
|
811
849
|
|
|
812
850
|
test('retains overscaled loaded children', async () => {
|
|
@@ -1108,7 +1146,7 @@ describe('TileManager._updateRetainedTiles', () => {
|
|
|
1108
1146
|
const secondGeneration = idealTile
|
|
1109
1147
|
.children(10)
|
|
1110
1148
|
.flatMap(child => child.children(10));
|
|
1111
|
-
expect(secondGeneration
|
|
1149
|
+
expect(secondGeneration).toHaveLength(16);
|
|
1112
1150
|
|
|
1113
1151
|
for (const id of secondGeneration) {
|
|
1114
1152
|
tileManager._inViewTiles.setTile(id.key, new Tile(id, undefined));
|
|
@@ -1746,7 +1784,7 @@ describe('TileManager.tilesIn', () => {
|
|
|
1746
1784
|
expect(round(tiles[1].queryGeometry)).toEqual([{x: -4096, y: 4050}, {x: 4096, y: 8146}]);
|
|
1747
1785
|
});
|
|
1748
1786
|
|
|
1749
|
-
test('reparsed overscaled tiles', () => {
|
|
1787
|
+
test('reparsed overscaled tiles', async () => {
|
|
1750
1788
|
const tileManager = createTileManager({
|
|
1751
1789
|
reparseOverscaled: true,
|
|
1752
1790
|
minzoom: 1,
|
|
@@ -1757,44 +1795,42 @@ describe('TileManager.tilesIn', () => {
|
|
|
1757
1795
|
tile.state = 'loaded';
|
|
1758
1796
|
};
|
|
1759
1797
|
|
|
1760
|
-
tileManager
|
|
1761
|
-
|
|
1762
|
-
|
|
1763
|
-
|
|
1764
|
-
|
|
1765
|
-
|
|
1766
|
-
|
|
1798
|
+
const metadataPromise = waitForEvent(tileManager, 'data', e => e.sourceDataType === 'metadata');
|
|
1799
|
+
tileManager.onAdd(undefined);
|
|
1800
|
+
await metadataPromise;
|
|
1801
|
+
|
|
1802
|
+
const transform = new MercatorTransform();
|
|
1803
|
+
transform.resize(1024, 1024);
|
|
1804
|
+
transform.setZoom(2);
|
|
1805
|
+
transform.setCenter(new LngLat(0, 1));
|
|
1806
|
+
tileManager.update(transform);
|
|
1767
1807
|
|
|
1768
|
-
|
|
1769
|
-
|
|
1770
|
-
|
|
1771
|
-
|
|
1772
|
-
|
|
1773
|
-
|
|
1774
|
-
|
|
1775
|
-
const tiles = tileManager.tilesIn([
|
|
1776
|
-
new Point(0, 0),
|
|
1777
|
-
new Point(1024, 512)
|
|
1778
|
-
], 1, true);
|
|
1779
|
-
|
|
1780
|
-
tiles.sort((a, b) => { return a.tile.tileID.canonical.x - b.tile.tileID.canonical.x; });
|
|
1781
|
-
for (const result of tiles) {
|
|
1782
|
-
delete result.tile.uid;
|
|
1783
|
-
}
|
|
1784
|
-
|
|
1785
|
-
expect(tiles[0].tile.tileID.key).toBe('012');
|
|
1786
|
-
expect(tiles[0].tile.tileSize).toBe(1024);
|
|
1787
|
-
expect(tiles[0].scale).toBe(1);
|
|
1788
|
-
expect(round(tiles[0].queryGeometry)).toEqual([{x: 4096, y: 4050}, {x: 12288, y: 8146}]);
|
|
1789
|
-
|
|
1790
|
-
expect(tiles[1].tile.tileID.key).toBe('112');
|
|
1791
|
-
expect(tiles[1].tile.tileSize).toBe(1024);
|
|
1792
|
-
expect(tiles[1].scale).toBe(1);
|
|
1793
|
-
expect(round(tiles[1].queryGeometry)).toEqual([{x: -4096, y: 4050}, {x: 4096, y: 8146}]);
|
|
1808
|
+
expect(tileManager.getIds()).toEqual([
|
|
1809
|
+
new OverscaledTileID(2, 0, 1, 1, 1).key,
|
|
1810
|
+
new OverscaledTileID(2, 0, 1, 0, 1).key,
|
|
1811
|
+
new OverscaledTileID(2, 0, 1, 1, 0).key,
|
|
1812
|
+
new OverscaledTileID(2, 0, 1, 0, 0).key
|
|
1813
|
+
]);
|
|
1794
1814
|
|
|
1795
|
-
|
|
1796
|
-
|
|
1797
|
-
|
|
1815
|
+
const tiles = tileManager.tilesIn([
|
|
1816
|
+
new Point(0, 0),
|
|
1817
|
+
new Point(1024, 512)
|
|
1818
|
+
], 1, true);
|
|
1819
|
+
|
|
1820
|
+
tiles.sort((a, b) => { return a.tile.tileID.canonical.x - b.tile.tileID.canonical.x; });
|
|
1821
|
+
for (const result of tiles) {
|
|
1822
|
+
delete result.tile.uid;
|
|
1823
|
+
}
|
|
1824
|
+
|
|
1825
|
+
expect(tiles[0].tile.tileID.key).toBe('012');
|
|
1826
|
+
expect(tiles[0].tile.tileSize).toBe(1024);
|
|
1827
|
+
expect(tiles[0].scale).toBe(1);
|
|
1828
|
+
expect(round(tiles[0].queryGeometry)).toEqual([{x: 4096, y: 4050}, {x: 12288, y: 8146}]);
|
|
1829
|
+
|
|
1830
|
+
expect(tiles[1].tile.tileID.key).toBe('112');
|
|
1831
|
+
expect(tiles[1].tile.tileSize).toBe(1024);
|
|
1832
|
+
expect(tiles[1].scale).toBe(1);
|
|
1833
|
+
expect(round(tiles[1].queryGeometry)).toEqual([{x: -4096, y: 4050}, {x: 4096, y: 8146}]);
|
|
1798
1834
|
});
|
|
1799
1835
|
|
|
1800
1836
|
test('overscaled tiles', async () => {
|
|
@@ -1815,6 +1851,13 @@ describe('TileManager.tilesIn', () => {
|
|
|
1815
1851
|
transform.resize(512, 512);
|
|
1816
1852
|
transform.setZoom(2.0);
|
|
1817
1853
|
tileManager.update(transform);
|
|
1854
|
+
|
|
1855
|
+
expect(tileManager.getIds()).toEqual([
|
|
1856
|
+
new OverscaledTileID(1, 0, 1, 1, 1).key,
|
|
1857
|
+
new OverscaledTileID(1, 0, 1, 0, 1).key,
|
|
1858
|
+
new OverscaledTileID(1, 0, 1, 1, 0).key,
|
|
1859
|
+
new OverscaledTileID(1, 0, 1, 0, 0).key
|
|
1860
|
+
]);
|
|
1818
1861
|
});
|
|
1819
1862
|
|
|
1820
1863
|
test('globe wrap', async () => {
|
|
@@ -2255,7 +2298,7 @@ describe('tile manager loaded', () => {
|
|
|
2255
2298
|
tileManager.update(tr);
|
|
2256
2299
|
|
|
2257
2300
|
await sourceLoadedPromise;
|
|
2258
|
-
expect(spy
|
|
2301
|
+
expect(spy).toHaveBeenCalledTimes(5); // 4 tiles + 1 source loaded
|
|
2259
2302
|
});
|
|
2260
2303
|
|
|
2261
2304
|
test('TileManager.loaded (tiles outside bounds, idle)', async () => {
|
|
@@ -2286,10 +2329,8 @@ describe('tile manager loaded', () => {
|
|
|
2286
2329
|
const sourceLoadedPromise = waitForEvent(tileManager, 'data', () => tileManager.loaded());
|
|
2287
2330
|
|
|
2288
2331
|
tileManager.on('data', (e) => {
|
|
2289
|
-
if (e.sourceDataType
|
|
2290
|
-
|
|
2291
|
-
// 'idle' emission when source bounds are outside of viewport bounds
|
|
2292
|
-
}
|
|
2332
|
+
if (e.sourceDataType === 'idle') return;
|
|
2333
|
+
expect(tileManager.loaded()).toBe(false);
|
|
2293
2334
|
});
|
|
2294
2335
|
|
|
2295
2336
|
tileManager.onAdd(undefined);
|
|
@@ -2490,7 +2531,7 @@ describe('TileManager::refreshTiles', () => {
|
|
|
2490
2531
|
|
|
2491
2532
|
tileManager._addTile(coord);
|
|
2492
2533
|
tileManager.refreshTiles([new CanonicalTileID(1, 0, 1)]);
|
|
2493
|
-
expect(spy).
|
|
2534
|
+
expect(spy).toHaveBeenCalledTimes(1);
|
|
2494
2535
|
expect(spy.mock.calls[0][1]).toBe('expired');
|
|
2495
2536
|
});
|
|
2496
2537
|
|
|
@@ -2521,7 +2562,7 @@ describe('TileManager::refreshTiles', () => {
|
|
|
2521
2562
|
|
|
2522
2563
|
tileManager._addTile(coord);
|
|
2523
2564
|
tileManager.refreshTiles([new CanonicalTileID(1, 0, 1)]);
|
|
2524
|
-
expect(spy).
|
|
2565
|
+
expect(spy).toHaveBeenCalledTimes(1);
|
|
2525
2566
|
expect(spy.mock.calls[0][1]).toBe('expired');
|
|
2526
2567
|
});
|
|
2527
2568
|
|
|
@@ -2537,7 +2578,7 @@ describe('TileManager::refreshTiles', () => {
|
|
|
2537
2578
|
|
|
2538
2579
|
tileManager._addTile(coord);
|
|
2539
2580
|
tileManager.refreshTiles([new CanonicalTileID(1, 0, 1)]);
|
|
2540
|
-
expect(spy).
|
|
2581
|
+
expect(spy).toHaveBeenCalledTimes(1);
|
|
2541
2582
|
expect(spy.mock.calls[0][1]).toBe('expired');
|
|
2542
2583
|
});
|
|
2543
2584
|
|
package/src/tile/tile_manager.ts
CHANGED
|
@@ -253,7 +253,7 @@ export class TileManager extends Evented {
|
|
|
253
253
|
|
|
254
254
|
/**
|
|
255
255
|
* Reload tiles based on the current state of the source.
|
|
256
|
-
* @param sourceDataChanged - If `true`, reload all tiles using a state of 'expired', otherwise reload only non-errored tiles using state of 'reloading'.
|
|
256
|
+
* @param sourceDataChanged - If `true`, reload all tiles using a state of 'expired' (errored tiles use 'loading' since they have nothing to show yet), otherwise reload only non-errored tiles using state of 'reloading'.
|
|
257
257
|
* @param shouldReloadTileOptions - Set of options associated with a `MapSourceDataChangedEvent` that can be passed back to the associated `Source` determine whether a tile should be reloaded.
|
|
258
258
|
*/
|
|
259
259
|
reload(
|
|
@@ -272,7 +272,7 @@ export class TileManager extends Evented {
|
|
|
272
272
|
if (shouldReloadTileOptions && !this._source.shouldReloadTile(tile, shouldReloadTileOptions)) {
|
|
273
273
|
continue;
|
|
274
274
|
} else if (sourceDataChanged) {
|
|
275
|
-
this._reloadTile(id, 'expired');
|
|
275
|
+
this._reloadTile(id, tile.state === 'errored' ? 'loading' : 'expired');
|
|
276
276
|
} else if (tile.state !== 'errored') {
|
|
277
277
|
this._reloadTile(id, 'reloading');
|
|
278
278
|
}
|
|
@@ -81,7 +81,7 @@ describe('InViewTiles', () => {
|
|
|
81
81
|
inViewTiles.handleWrapJump(1);
|
|
82
82
|
|
|
83
83
|
const tiles = inViewTiles.getAllTiles();
|
|
84
|
-
expect(tiles
|
|
84
|
+
expect(tiles).toHaveLength(1);
|
|
85
85
|
expect(tiles[0].tileID.wrap).toBe(1);
|
|
86
86
|
expect(inViewTiles.getTileById(tiles[0].tileID.key)).toBe(tiles[0]);
|
|
87
87
|
});
|
|
@@ -96,7 +96,7 @@ describe('InViewTiles', () => {
|
|
|
96
96
|
inViewTiles.handleWrapJump(-1);
|
|
97
97
|
|
|
98
98
|
const tiles = inViewTiles.getAllTiles();
|
|
99
|
-
expect(tiles
|
|
99
|
+
expect(tiles).toHaveLength(2);
|
|
100
100
|
|
|
101
101
|
const updatedTile1 = tiles.find(t => t.uid === tile1.uid);
|
|
102
102
|
const updatedTile2 = tiles.find(t => t.uid === tile2.uid);
|