maplibre-gl 2.1.0 → 2.1.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/build/{banner.js → banner.ts} +1 -1
- package/build/generate-query-test-fixtures.ts +123 -0
- package/build/generate-shaders.ts +35 -0
- package/build/generate-struct-arrays.ts +7 -7
- package/build/generate-style-code.ts +8 -8
- package/build/generate-style-spec.ts +5 -4
- package/build/generate-typings.ts +16 -0
- package/build/readme.md +8 -18
- package/build/release-notes.js +9 -13
- package/build/{rollup_plugin_minify_style_spec.js → rollup_plugin_minify_style_spec.ts} +4 -3
- package/build/{rollup_plugins.js → rollup_plugins.ts} +12 -26
- package/dist/maplibre-gl-dev.js +54885 -0
- package/dist/maplibre-gl.css +1 -1
- package/dist/maplibre-gl.d.ts +1537 -1011
- package/dist/maplibre-gl.js +3 -3
- package/dist/maplibre-gl.js.map +1 -1
- package/package.json +83 -107
- package/postinstall.js +5 -0
- package/src/css/maplibre-gl.css +28 -28
- package/src/data/{array_types.ts → array_types.g.ts} +0 -0
- package/src/data/bucket/circle_bucket.ts +1 -1
- package/src/data/bucket/fill_bucket.test.ts +1 -1
- package/src/data/bucket/fill_bucket.ts +4 -4
- package/src/data/bucket/fill_extrusion_bucket.ts +1 -1
- package/src/data/bucket/line_bucket.test.ts +1 -1
- package/src/data/bucket/line_bucket.ts +6 -6
- package/src/data/bucket/symbol_bucket.test.ts +16 -16
- package/src/data/bucket/symbol_bucket.ts +53 -53
- package/src/data/bucket.ts +43 -43
- package/src/data/dem_data.ts +12 -12
- package/src/data/evaluation_feature.ts +10 -10
- package/src/data/feature_index.ts +37 -37
- package/src/data/feature_position_map.ts +5 -5
- package/src/data/index_array_type.ts +1 -1
- package/src/data/load_geometry.test.ts +1 -1
- package/src/data/program_configuration.ts +46 -46
- package/src/data/segment.ts +14 -14
- package/src/geo/edge_insets.ts +2 -2
- package/src/geo/lng_lat.ts +4 -4
- package/src/geo/lng_lat_bounds.ts +35 -35
- package/src/geo/mercator_coordinate.ts +5 -5
- package/src/geo/transform.test.ts +1 -1
- package/src/geo/transform.ts +14 -14
- package/src/gl/context.ts +3 -3
- package/src/gl/types.ts +19 -19
- package/src/gl/value.ts +6 -6
- package/src/gl/vertex_buffer.test.ts +1 -1
- package/src/index.ts +24 -9
- package/src/render/draw_circle.ts +8 -8
- package/src/render/draw_collision_debug.ts +5 -5
- package/src/render/draw_line.ts +4 -4
- package/src/render/draw_symbol.ts +21 -21
- package/src/render/glyph_atlas.ts +12 -12
- package/src/render/glyph_manager.test.ts +10 -21
- package/src/render/glyph_manager.ts +33 -32
- package/src/render/image_manager.ts +4 -4
- package/src/render/painter.ts +11 -11
- package/src/render/program/background_program.ts +29 -29
- package/src/render/program/circle_program.ts +10 -10
- package/src/render/program/clipping_mask_program.ts +1 -1
- package/src/render/program/collision_program.ts +9 -9
- package/src/render/program/debug_program.ts +4 -4
- package/src/render/program/fill_extrusion_program.ts +31 -31
- package/src/render/program/fill_program.ts +29 -29
- package/src/render/program/heatmap_program.ts +12 -12
- package/src/render/program/hillshade_program.ts +12 -12
- package/src/render/program/line_program.ts +38 -38
- package/src/render/program/pattern.ts +28 -28
- package/src/render/program/raster_program.ts +21 -21
- package/src/render/program/symbol_program.ts +96 -96
- package/src/render/program.ts +25 -25
- package/src/render/texture.ts +9 -9
- package/src/render/uniform_binding.ts +1 -1
- package/src/render/vertex_array_object.ts +13 -13
- package/src/shaders/_prelude.fragment.glsl.g.ts +2 -0
- package/src/shaders/_prelude.vertex.glsl.g.ts +2 -0
- package/src/shaders/background.fragment.glsl.g.ts +2 -0
- package/src/shaders/background.vertex.glsl.g.ts +2 -0
- package/src/shaders/background_pattern.fragment.glsl.g.ts +2 -0
- package/src/shaders/background_pattern.vertex.glsl.g.ts +2 -0
- package/src/shaders/circle.fragment.glsl.g.ts +2 -0
- package/src/shaders/circle.vertex.glsl.g.ts +2 -0
- package/src/shaders/clipping_mask.fragment.glsl.g.ts +2 -0
- package/src/shaders/clipping_mask.vertex.glsl.g.ts +2 -0
- package/src/shaders/collision_box.fragment.glsl.g.ts +2 -0
- package/src/shaders/collision_box.vertex.glsl.g.ts +2 -0
- package/src/shaders/collision_circle.fragment.glsl.g.ts +2 -0
- package/src/shaders/collision_circle.vertex.glsl.g.ts +2 -0
- package/src/shaders/debug.fragment.glsl.g.ts +2 -0
- package/src/shaders/debug.vertex.glsl.g.ts +2 -0
- package/src/shaders/fill.fragment.glsl.g.ts +2 -0
- package/src/shaders/fill.vertex.glsl.g.ts +2 -0
- package/src/shaders/fill_extrusion.fragment.glsl.g.ts +2 -0
- package/src/shaders/fill_extrusion.vertex.glsl.g.ts +2 -0
- package/src/shaders/fill_extrusion_pattern.fragment.glsl.g.ts +2 -0
- package/src/shaders/fill_extrusion_pattern.vertex.glsl.g.ts +2 -0
- package/src/shaders/fill_outline.fragment.glsl.g.ts +2 -0
- package/src/shaders/fill_outline.vertex.glsl.g.ts +2 -0
- package/src/shaders/fill_outline_pattern.fragment.glsl.g.ts +2 -0
- package/src/shaders/fill_outline_pattern.vertex.glsl.g.ts +2 -0
- package/src/shaders/fill_pattern.fragment.glsl.g.ts +2 -0
- package/src/shaders/fill_pattern.vertex.glsl.g.ts +2 -0
- package/src/shaders/heatmap.fragment.glsl.g.ts +2 -0
- package/src/shaders/heatmap.vertex.glsl.g.ts +2 -0
- package/src/shaders/heatmap_texture.fragment.glsl.g.ts +2 -0
- package/src/shaders/heatmap_texture.vertex.glsl.g.ts +2 -0
- package/src/shaders/hillshade.fragment.glsl.g.ts +2 -0
- package/src/shaders/hillshade.vertex.glsl.g.ts +2 -0
- package/src/shaders/hillshade_prepare.fragment.glsl.g.ts +2 -0
- package/src/shaders/hillshade_prepare.vertex.glsl.g.ts +2 -0
- package/src/shaders/line.fragment.glsl.g.ts +2 -0
- package/src/shaders/line.vertex.glsl.g.ts +2 -0
- package/src/shaders/line_gradient.fragment.glsl.g.ts +2 -0
- package/src/shaders/line_gradient.vertex.glsl.g.ts +2 -0
- package/src/shaders/line_pattern.fragment.glsl.g.ts +2 -0
- package/src/shaders/line_pattern.vertex.glsl.g.ts +2 -0
- package/src/shaders/line_sdf.fragment.glsl.g.ts +2 -0
- package/src/shaders/line_sdf.vertex.glsl.g.ts +2 -0
- package/src/shaders/raster.fragment.glsl.g.ts +2 -0
- package/src/shaders/raster.vertex.glsl.g.ts +2 -0
- package/src/shaders/shaders.ts +52 -55
- package/src/shaders/symbol_icon.fragment.glsl.g.ts +2 -0
- package/src/shaders/symbol_icon.vertex.glsl.g.ts +2 -0
- package/src/shaders/symbol_sdf.fragment.glsl.g.ts +2 -0
- package/src/shaders/symbol_sdf.vertex.glsl.g.ts +2 -0
- package/src/shaders/symbol_text_and_icon.fragment.glsl.g.ts +2 -0
- package/src/shaders/symbol_text_and_icon.vertex.glsl.g.ts +2 -0
- package/src/source/canvas_source.test.ts +11 -12
- package/src/source/canvas_source.ts +4 -4
- package/src/source/geojson_worker_source.ts +23 -23
- package/src/source/geojson_wrapper.ts +8 -8
- package/src/source/image_source.test.ts +2 -2
- package/src/source/image_source.ts +6 -6
- package/src/source/pixels_to_tile_units.ts +6 -6
- package/src/source/query_features.ts +20 -20
- package/src/source/raster_dem_tile_source.test.ts +2 -2
- package/src/source/raster_tile_source.test.ts +2 -2
- package/src/source/rtl_text_plugin.ts +10 -10
- package/src/source/source.ts +29 -29
- package/src/source/source_cache.test.ts +32 -0
- package/src/source/source_cache.ts +7 -5
- package/src/source/source_state.ts +1 -1
- package/src/source/tile.test.ts +3 -3
- package/src/source/tile.ts +15 -15
- package/src/source/tile_cache.test.ts +6 -4
- package/src/source/tile_cache.ts +6 -6
- package/src/source/tile_id.test.ts +0 -1
- package/src/source/vector_tile_source.test.ts +16 -5
- package/src/source/vector_tile_source.ts +2 -3
- package/src/source/vector_tile_worker_source.test.ts +4 -4
- package/src/source/vector_tile_worker_source.ts +5 -5
- package/src/source/worker.test.ts +1 -1
- package/src/source/worker.ts +22 -22
- package/src/source/worker_source.ts +56 -56
- package/src/source/worker_tile.ts +4 -4
- package/src/style/evaluation_parameters.ts +3 -3
- package/src/style/format_section_override.test.ts +1 -1
- package/src/style/light.ts +10 -10
- package/src/style/load_glyph_range.test.ts +3 -5
- package/src/style/load_glyph_range.ts +6 -6
- package/src/style/load_sprite.ts +4 -4
- package/src/style/pauseable_placement.ts +1 -1
- package/src/style/properties.ts +69 -69
- package/src/style/query_utils.ts +7 -7
- package/src/style/style.test.ts +22 -15
- package/src/style/style.ts +29 -29
- package/src/style/style_glyph.ts +8 -8
- package/src/style/style_image.ts +58 -58
- package/src/style/style_layer/background_style_layer.ts +2 -2
- package/src/style/style_layer/{background_style_layer_properties.ts → background_style_layer_properties.g.ts} +0 -0
- package/src/style/style_layer/circle_style_layer.ts +10 -10
- package/src/style/style_layer/{circle_style_layer_properties.ts → circle_style_layer_properties.g.ts} +0 -0
- package/src/style/style_layer/custom_style_layer.ts +17 -17
- package/src/style/style_layer/fill_extrusion_style_layer.ts +10 -10
- package/src/style/style_layer/{fill_extrusion_style_layer_properties.ts → fill_extrusion_style_layer_properties.g.ts} +0 -0
- package/src/style/style_layer/fill_style_layer.ts +9 -9
- package/src/style/style_layer/{fill_style_layer_properties.ts → fill_style_layer_properties.g.ts} +0 -0
- package/src/style/style_layer/heatmap_style_layer.ts +2 -2
- package/src/style/style_layer/{heatmap_style_layer_properties.ts → heatmap_style_layer_properties.g.ts} +0 -0
- package/src/style/style_layer/hillshade_style_layer.ts +2 -2
- package/src/style/style_layer/{hillshade_style_layer_properties.ts → hillshade_style_layer_properties.g.ts} +0 -0
- package/src/style/style_layer/line_style_layer.ts +9 -9
- package/src/style/style_layer/{line_style_layer_properties.ts → line_style_layer_properties.g.ts} +0 -0
- package/src/style/style_layer/raster_style_layer.ts +2 -2
- package/src/style/style_layer/{raster_style_layer_properties.ts → raster_style_layer_properties.g.ts} +0 -0
- package/src/style/style_layer/symbol_style_layer.ts +7 -7
- package/src/style/style_layer/{symbol_style_layer_properties.ts → symbol_style_layer_properties.g.ts} +0 -0
- package/src/style/style_layer.ts +10 -10
- package/src/style/style_layer_index.ts +3 -3
- package/src/style/validate_style.ts +15 -15
- package/src/style-spec/error/validation_error.ts +1 -1
- package/src/style-spec/expression/compound_expression.ts +3 -3
- package/src/style-spec/expression/definitions/format.ts +11 -11
- package/src/style-spec/expression/definitions/interpolate.ts +5 -5
- package/src/style-spec/expression/definitions/match.ts +2 -2
- package/src/style-spec/expression/definitions/number_format.ts +11 -11
- package/src/style-spec/expression/expression.ts +8 -8
- package/src/style-spec/expression/index.ts +97 -97
- package/src/style-spec/expression/parsing_context.ts +11 -11
- package/src/style-spec/expression/types/collator.ts +9 -9
- package/src/style-spec/expression/types/resolved_image.ts +2 -2
- package/src/style-spec/expression/types.ts +14 -14
- package/src/style-spec/expression/values.ts +1 -1
- package/src/style-spec/feature_filter/index.ts +66 -66
- package/src/style-spec/function/convert.ts +3 -3
- package/src/style-spec/style-spec.ts +44 -44
- package/src/style-spec/util/color_spaces.ts +8 -8
- package/src/style-spec/util/result.ts +4 -4
- package/src/style-spec/validate/validate_filter.ts +58 -58
- package/src/style-spec/validate/validate_source.ts +63 -63
- package/src/style-spec/visit.ts +11 -11
- package/src/symbol/collision_feature.test.ts +1 -1
- package/src/symbol/collision_feature.ts +10 -10
- package/src/symbol/collision_index.ts +26 -26
- package/src/symbol/cross_tile_symbol_index.ts +17 -17
- package/src/symbol/get_anchors.ts +16 -16
- package/src/symbol/grid_index.ts +7 -7
- package/src/symbol/placement.ts +72 -72
- package/src/symbol/projection.ts +30 -30
- package/src/symbol/quads.ts +30 -30
- package/src/symbol/shaping.ts +160 -160
- package/src/symbol/symbol_layout.ts +119 -119
- package/src/symbol/symbol_size.ts +29 -29
- package/src/symbol/symbol_style_layer.test.ts +1 -1
- package/src/types/cancelable.ts +1 -1
- package/src/types/tilejson.ts +13 -13
- package/src/ui/anchor.ts +1 -1
- package/src/ui/camera.test.ts +9 -9
- package/src/ui/camera.ts +18 -18
- package/src/ui/control/attribution_control.test.ts +51 -16
- package/src/ui/control/attribution_control.ts +35 -16
- package/src/ui/control/control.ts +40 -40
- package/src/ui/control/fullscreen_control.ts +1 -1
- package/src/ui/control/geolocate_control.test.ts +1 -1
- package/src/ui/control/geolocate_control.ts +102 -102
- package/src/ui/control/logo_control.test.ts +5 -4
- package/src/ui/control/navigation_control.ts +3 -3
- package/src/ui/control/scale_control.test.ts +2 -2
- package/src/ui/control/scale_control.ts +5 -5
- package/src/ui/events.ts +289 -200
- package/src/ui/handler/box_zoom.test.ts +1 -1
- package/src/ui/handler/box_zoom.ts +1 -1
- package/src/ui/handler/dblclick_zoom.test.ts +1 -1
- package/src/ui/handler/drag_pan.test.ts +1 -1
- package/src/ui/handler/drag_rotate.test.ts +1 -1
- package/src/ui/handler/keyboard.test.ts +1 -1
- package/src/ui/handler/keyboard.ts +51 -51
- package/src/ui/handler/map_event.test.ts +1 -1
- package/src/ui/handler/map_event.ts +1 -1
- package/src/ui/handler/mouse.ts +1 -1
- package/src/ui/handler/mouse_rotate.test.ts +1 -1
- package/src/ui/handler/scroll_zoom.test.ts +3 -2
- package/src/ui/handler/scroll_zoom.ts +9 -9
- package/src/ui/handler/shim/drag_pan.ts +4 -4
- package/src/ui/handler/shim/drag_rotate.ts +1 -1
- package/src/ui/handler/shim/touch_zoom_rotate.ts +1 -1
- package/src/ui/handler/tap_recognizer.ts +4 -4
- package/src/ui/handler/touch_pan.ts +2 -2
- package/src/ui/handler/touch_zoom_rotate.test.ts +1 -1
- package/src/ui/handler/touch_zoom_rotate.ts +1 -1
- package/src/ui/handler_inertia.ts +6 -6
- package/src/ui/handler_manager.ts +44 -44
- package/src/ui/map/isMoving.test.ts +1 -1
- package/src/ui/map/isRotating.test.ts +1 -1
- package/src/ui/map/isZooming.test.ts +1 -1
- package/src/ui/map.test.ts +26 -14
- package/src/ui/map.ts +107 -102
- package/src/ui/map_events.test.ts +1 -1
- package/src/ui/marker.test.ts +12 -12
- package/src/ui/marker.ts +37 -37
- package/src/ui/popup.test.ts +7 -7
- package/src/ui/popup.ts +9 -9
- package/src/util/actor.test.ts +41 -10
- package/src/util/actor.ts +8 -8
- package/src/util/ajax.test.ts +29 -21
- package/src/util/ajax.ts +51 -30
- package/src/util/browser.ts +1 -1
- package/src/util/classify_rings.test.ts +1 -1
- package/src/util/color_ramp.ts +5 -5
- package/src/util/config.ts +2 -2
- package/src/util/dispatcher.ts +1 -1
- package/src/util/dom.ts +2 -2
- package/src/util/evented.ts +1 -1
- package/src/util/find_pole_of_inaccessibility.ts +3 -3
- package/src/util/image.ts +5 -5
- package/src/util/performance.ts +7 -7
- package/src/util/request_manager.ts +4 -4
- package/src/util/resolve_tokens.ts +4 -4
- package/src/util/struct_array.test.ts +1 -1
- package/src/util/struct_array.ts +15 -15
- package/src/util/task_queue.ts +3 -3
- package/src/util/tile_request_cache.ts +3 -3
- package/src/util/transferable_grid_index.ts +4 -4
- package/src/util/util.ts +8 -8
- package/src/util/web_worker.ts +4 -68
- package/src/util/web_worker_transfer.test.ts +3 -0
- package/src/util/web_worker_transfer.ts +21 -17
- package/src/util/worker_pool.ts +1 -1
- package/build/.eslintrc +0 -21
- package/build/glsl_to_js.js +0 -12
- package/build/post-ts-build.js +0 -43
- package/build/release-notes.md.ejs +0 -8
- package/build/test/build-tape.js +0 -17
- package/build/web_worker_replacement.js +0 -5
- package/dist/package.json +0 -1
- package/src/style-spec/validate_spec.test.ts +0 -29
- package/src/symbol/shaping.test.ts +0 -392
- package/src/types/glsl.d.ts +0 -4
|
@@ -3,7 +3,7 @@ import path from 'path';
|
|
|
3
3
|
import Protobuf from 'pbf';
|
|
4
4
|
import {VectorTile} from '@mapbox/vector-tile';
|
|
5
5
|
import SymbolBucket from './symbol_bucket';
|
|
6
|
-
import {CollisionBoxArray} from '../../data/array_types';
|
|
6
|
+
import {CollisionBoxArray} from '../../data/array_types.g';
|
|
7
7
|
import {performSymbolLayout} from '../../symbol/symbol_layout';
|
|
8
8
|
import {Placement} from '../../symbol/placement';
|
|
9
9
|
import Transform from '../../geo/transform';
|
|
@@ -11,16 +11,16 @@ import {OverscaledTileID} from '../../source/tile_id';
|
|
|
11
11
|
import Tile from '../../source/tile';
|
|
12
12
|
import CrossTileSymbolIndex from '../../symbol/cross_tile_symbol_index';
|
|
13
13
|
import FeatureIndex from '../../data/feature_index';
|
|
14
|
-
import {createSymbolBucket, createSymbolIconBucket} from '../../../test/
|
|
14
|
+
import {createSymbolBucket, createSymbolIconBucket} from '../../../test/unit/lib/create_symbol_layer';
|
|
15
15
|
import {RGBAImage} from '../../util/image';
|
|
16
16
|
import {ImagePosition} from '../../render/image_atlas';
|
|
17
17
|
import {IndexedFeature, PopulateParameters} from '../bucket';
|
|
18
18
|
import {StyleImage} from '../../style/style_image';
|
|
19
|
-
import glyphs from '../../../test/
|
|
19
|
+
import glyphs from '../../../test/unit/assets/fontstack-glyphs.json';
|
|
20
20
|
import {StyleGlyph} from '../../style/style_glyph';
|
|
21
21
|
|
|
22
22
|
// Load a point feature from fixture tile.
|
|
23
|
-
const vt = new VectorTile(new Protobuf(fs.readFileSync(path.resolve(__dirname, '../../../test/
|
|
23
|
+
const vt = new VectorTile(new Protobuf(fs.readFileSync(path.resolve(__dirname, '../../../test/unit/assets/mbsv5-6-18-23.vector.pbf'))));
|
|
24
24
|
const feature = vt.layers.place_label.feature(10);
|
|
25
25
|
|
|
26
26
|
/*eslint new-cap: 0*/
|
|
@@ -139,12 +139,12 @@ describe('SymbolBucket', () => {
|
|
|
139
139
|
const options = {iconDependencies: {}, glyphDependencies: {}} as PopulateParameters;
|
|
140
140
|
|
|
141
141
|
bucket.populate(
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
142
|
+
[
|
|
143
|
+
createIndexedFeature(0, 0, 'a'),
|
|
144
|
+
createIndexedFeature(1, 1, 'b'),
|
|
145
|
+
createIndexedFeature(2, 2, 'a')
|
|
146
|
+
] as any as IndexedFeature[],
|
|
147
|
+
options, undefined
|
|
148
148
|
);
|
|
149
149
|
|
|
150
150
|
const icons = options.iconDependencies as any;
|
|
@@ -179,12 +179,12 @@ describe('SymbolBucket', () => {
|
|
|
179
179
|
const options = {iconDependencies: {}, glyphDependencies: {}} as PopulateParameters;
|
|
180
180
|
|
|
181
181
|
bucket.populate(
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
182
|
+
[
|
|
183
|
+
createIndexedFeature(0, 0, 'a'),
|
|
184
|
+
createIndexedFeature(1, 1, 'b'),
|
|
185
|
+
createIndexedFeature(2, 2, 'a')
|
|
186
|
+
] as any as IndexedFeature[],
|
|
187
|
+
options, undefined
|
|
188
188
|
);
|
|
189
189
|
|
|
190
190
|
const icons = options.iconDependencies as any;
|
|
@@ -14,7 +14,7 @@ import {SymbolLayoutArray,
|
|
|
14
14
|
SymbolInstanceArray,
|
|
15
15
|
GlyphOffsetArray,
|
|
16
16
|
SymbolLineVertexArray
|
|
17
|
-
} from '../array_types';
|
|
17
|
+
} from '../array_types.g';
|
|
18
18
|
|
|
19
19
|
import Point from '@mapbox/point-geometry';
|
|
20
20
|
import SegmentVector from '../segment';
|
|
@@ -46,7 +46,7 @@ import type {
|
|
|
46
46
|
IndexedFeature,
|
|
47
47
|
PopulateParameters
|
|
48
48
|
} from '../bucket';
|
|
49
|
-
import type {CollisionBoxArray, CollisionBox, SymbolInstance} from '../array_types';
|
|
49
|
+
import type {CollisionBoxArray, CollisionBox, SymbolInstance} from '../array_types.g';
|
|
50
50
|
import type {StructArray, StructArrayMember, ViewType} from '../../util/struct_array';
|
|
51
51
|
import SymbolStyleLayer, {getOverlapMode} from '../../style/style_layer/symbol_style_layer';
|
|
52
52
|
import type Context from '../../gl/context';
|
|
@@ -59,41 +59,41 @@ import type {ImagePosition} from '../../render/image_atlas';
|
|
|
59
59
|
import type {VectorTileLayer} from '@mapbox/vector-tile';
|
|
60
60
|
|
|
61
61
|
export type SingleCollisionBox = {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
62
|
+
x1: number;
|
|
63
|
+
y1: number;
|
|
64
|
+
x2: number;
|
|
65
|
+
y2: number;
|
|
66
|
+
anchorPointX: number;
|
|
67
|
+
anchorPointY: number;
|
|
68
68
|
};
|
|
69
69
|
|
|
70
70
|
export type CollisionArrays = {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
71
|
+
textBox?: SingleCollisionBox;
|
|
72
|
+
verticalTextBox?: SingleCollisionBox;
|
|
73
|
+
iconBox?: SingleCollisionBox;
|
|
74
|
+
verticalIconBox?: SingleCollisionBox;
|
|
75
|
+
textFeatureIndex?: number;
|
|
76
|
+
verticalTextFeatureIndex?: number;
|
|
77
|
+
iconFeatureIndex?: number;
|
|
78
|
+
verticalIconFeatureIndex?: number;
|
|
79
79
|
};
|
|
80
80
|
|
|
81
81
|
export type SymbolFeature = {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
82
|
+
sortKey: number | void;
|
|
83
|
+
text: Formatted | void;
|
|
84
|
+
icon: ResolvedImage;
|
|
85
|
+
index: number;
|
|
86
|
+
sourceLayerIndex: number;
|
|
87
|
+
geometry: Array<Array<Point>>;
|
|
88
|
+
properties: any;
|
|
89
|
+
type: 'Point' | 'LineString' | 'Polygon';
|
|
90
|
+
id?: any;
|
|
91
91
|
};
|
|
92
92
|
|
|
93
93
|
export type SortKeyRange = {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
94
|
+
sortKey: number;
|
|
95
|
+
symbolInstanceStart: number;
|
|
96
|
+
symbolInstanceEnd: number;
|
|
97
97
|
};
|
|
98
98
|
|
|
99
99
|
// Opacity arrays are frequently updated but don't contain a lot of information, so we pack them
|
|
@@ -244,12 +244,12 @@ class CollisionBuffers {
|
|
|
244
244
|
collisionVertexBuffer: VertexBuffer;
|
|
245
245
|
|
|
246
246
|
constructor(LayoutArray: {
|
|
247
|
-
|
|
247
|
+
new (...args: any): StructArray;
|
|
248
248
|
},
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
249
|
+
layoutAttributes: Array<StructArrayMember>,
|
|
250
|
+
IndexArray: {
|
|
251
|
+
new (...args: any): TriangleIndexArray | LineIndexArray;
|
|
252
|
+
}) {
|
|
253
253
|
this.layoutVertexArray = new LayoutArray();
|
|
254
254
|
this.layoutAttributes = layoutAttributes;
|
|
255
255
|
this.indexArray = new IndexArray();
|
|
@@ -624,17 +624,17 @@ class SymbolBucket implements Bucket {
|
|
|
624
624
|
}
|
|
625
625
|
|
|
626
626
|
addSymbols(arrays: SymbolBuffers,
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
627
|
+
quads: Array<SymbolQuad>,
|
|
628
|
+
sizeVertex: any,
|
|
629
|
+
lineOffset: [number, number],
|
|
630
|
+
alongLine: boolean,
|
|
631
|
+
feature: SymbolFeature,
|
|
632
|
+
writingMode: WritingMode,
|
|
633
|
+
labelAnchor: Anchor,
|
|
634
|
+
lineStartIndex: number,
|
|
635
|
+
lineLength: number,
|
|
636
|
+
associatedIconIndex: number,
|
|
637
|
+
canonical: CanonicalTileID) {
|
|
638
638
|
const indexArray = arrays.indexArray;
|
|
639
639
|
const layoutVertexArray = arrays.layoutVertexArray;
|
|
640
640
|
|
|
@@ -766,15 +766,15 @@ class SymbolBucket implements Bucket {
|
|
|
766
766
|
// These flat arrays are meant to be quicker to iterate over than the source
|
|
767
767
|
// CollisionBoxArray
|
|
768
768
|
_deserializeCollisionBoxesForSymbol(
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
769
|
+
collisionBoxArray: CollisionBoxArray,
|
|
770
|
+
textStartIndex: number,
|
|
771
|
+
textEndIndex: number,
|
|
772
|
+
verticalTextStartIndex: number,
|
|
773
|
+
verticalTextEndIndex: number,
|
|
774
|
+
iconStartIndex: number,
|
|
775
|
+
iconEndIndex: number,
|
|
776
|
+
verticalIconStartIndex: number,
|
|
777
|
+
verticalIconEndIndex: number
|
|
778
778
|
): CollisionArrays {
|
|
779
779
|
|
|
780
780
|
const collisionArrays = {} as CollisionArrays;
|
package/src/data/bucket.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {CollisionBoxArray} from './array_types';
|
|
1
|
+
import type {CollisionBoxArray} from './array_types.g';
|
|
2
2
|
import type Style from '../style/style';
|
|
3
3
|
import type {TypedStyleLayer} from '../style/style_layer/typed_style_layer';
|
|
4
4
|
import type FeatureIndex from './feature_index';
|
|
@@ -10,46 +10,46 @@ import type {VectorTileFeature, VectorTileLayer} from '@mapbox/vector-tile';
|
|
|
10
10
|
import Point from '@mapbox/point-geometry';
|
|
11
11
|
|
|
12
12
|
export type BucketParameters<Layer extends TypedStyleLayer> = {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
13
|
+
index: number;
|
|
14
|
+
layers: Array<Layer>;
|
|
15
|
+
zoom: number;
|
|
16
|
+
pixelRatio: number;
|
|
17
|
+
overscaling: number;
|
|
18
|
+
collisionBoxArray: CollisionBoxArray;
|
|
19
|
+
sourceLayerIndex: number;
|
|
20
|
+
sourceID: string;
|
|
21
21
|
};
|
|
22
22
|
|
|
23
23
|
export type PopulateParameters = {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
24
|
+
featureIndex: FeatureIndex;
|
|
25
|
+
iconDependencies: {};
|
|
26
|
+
patternDependencies: {};
|
|
27
|
+
glyphDependencies: {};
|
|
28
|
+
availableImages: Array<string>;
|
|
29
29
|
};
|
|
30
30
|
|
|
31
31
|
export type IndexedFeature = {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
feature: VectorTileFeature;
|
|
33
|
+
id: number | string;
|
|
34
|
+
index: number;
|
|
35
|
+
sourceLayerIndex: number;
|
|
36
36
|
};
|
|
37
37
|
|
|
38
38
|
export type BucketFeature = {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
39
|
+
index: number;
|
|
40
|
+
sourceLayerIndex: number;
|
|
41
|
+
geometry: Array<Array<Point>>;
|
|
42
|
+
properties: any;
|
|
43
|
+
type: 1 | 2 | 3;
|
|
44
|
+
id?: any;
|
|
45
|
+
readonly patterns: {
|
|
46
|
+
[_: string]: {
|
|
47
|
+
'min': string;
|
|
48
|
+
'mid': string;
|
|
49
|
+
'max': string;
|
|
50
|
+
};
|
|
50
51
|
};
|
|
51
|
-
|
|
52
|
-
sortKey?: number;
|
|
52
|
+
sortKey?: number;
|
|
53
53
|
};
|
|
54
54
|
|
|
55
55
|
/**
|
|
@@ -76,24 +76,24 @@ export type BucketFeature = {
|
|
|
76
76
|
* @private
|
|
77
77
|
*/
|
|
78
78
|
export interface Bucket {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
79
|
+
layerIds: Array<string>;
|
|
80
|
+
hasPattern: boolean;
|
|
81
|
+
readonly layers: Array<any>;
|
|
82
|
+
readonly stateDependentLayers: Array<any>;
|
|
83
|
+
readonly stateDependentLayerIds: Array<string>;
|
|
84
|
+
populate(features: Array<IndexedFeature>, options: PopulateParameters, canonical: CanonicalTileID): void;
|
|
85
|
+
update(states: FeatureStates, vtLayer: VectorTileLayer, imagePositions: {[_: string]: ImagePosition}): void;
|
|
86
|
+
isEmpty(): boolean;
|
|
87
|
+
upload(context: Context): void;
|
|
88
|
+
uploadPending(): boolean;
|
|
89
|
+
/**
|
|
90
90
|
* Release the WebGL resources associated with the buffers. Note that because
|
|
91
91
|
* buckets are shared between layers having the same layout properties, they
|
|
92
92
|
* must be destroyed in groups (all buckets for a tile, or all symbol buckets).
|
|
93
93
|
*
|
|
94
94
|
* @private
|
|
95
95
|
*/
|
|
96
|
-
|
|
96
|
+
destroy(): void;
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
export function deserialize(input: Array<Bucket>, style: Style): {[_: string]: Bucket} {
|
package/src/data/dem_data.ts
CHANGED
|
@@ -95,21 +95,21 @@ export default class DEMData {
|
|
|
95
95
|
yMax = dy * this.dim + this.dim;
|
|
96
96
|
|
|
97
97
|
switch (dx) {
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
98
|
+
case -1:
|
|
99
|
+
xMin = xMax - 1;
|
|
100
|
+
break;
|
|
101
|
+
case 1:
|
|
102
|
+
xMax = xMin + 1;
|
|
103
|
+
break;
|
|
104
104
|
}
|
|
105
105
|
|
|
106
106
|
switch (dy) {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
107
|
+
case -1:
|
|
108
|
+
yMin = yMax - 1;
|
|
109
|
+
break;
|
|
110
|
+
case 1:
|
|
111
|
+
yMax = yMin + 1;
|
|
112
|
+
break;
|
|
113
113
|
}
|
|
114
114
|
|
|
115
115
|
const ox = -dx * this.dim;
|
|
@@ -3,17 +3,17 @@ import type Point from '@mapbox/point-geometry';
|
|
|
3
3
|
import type {VectorTileFeature} from '@mapbox/vector-tile';
|
|
4
4
|
|
|
5
5
|
type EvaluationFeature = {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
6
|
+
readonly type: 1 | 2 | 3 | 'Unknown' | 'Point' | 'MultiPoint' | 'LineString' | 'MultiLineString' | 'Polygon' | 'MultiPolygon';
|
|
7
|
+
readonly id?: any;
|
|
8
|
+
readonly properties: {[_: string]: any};
|
|
9
|
+
readonly patterns?: {
|
|
10
|
+
[_: string]: {
|
|
11
|
+
'min': string;
|
|
12
|
+
'mid': string;
|
|
13
|
+
'max': string;
|
|
14
|
+
};
|
|
14
15
|
};
|
|
15
|
-
|
|
16
|
-
geometry: Array<Array<Point>>;
|
|
16
|
+
geometry: Array<Array<Point>>;
|
|
17
17
|
};
|
|
18
18
|
|
|
19
19
|
/**
|
|
@@ -15,7 +15,7 @@ import EvaluationParameters from '../style/evaluation_parameters';
|
|
|
15
15
|
import SourceFeatureState from '../source/source_state';
|
|
16
16
|
import {polygonIntersectsBox} from '../util/intersection_tests';
|
|
17
17
|
import {PossiblyEvaluated} from '../style/properties';
|
|
18
|
-
import {FeatureIndexArray} from './array_types';
|
|
18
|
+
import {FeatureIndexArray} from './array_types.g';
|
|
19
19
|
import {mat4} from 'gl-matrix';
|
|
20
20
|
|
|
21
21
|
import type StyleLayer from '../style/style_layer';
|
|
@@ -26,18 +26,18 @@ import type {FeatureState} from '../style-spec/expression';
|
|
|
26
26
|
import type {VectorTileFeature, VectorTileLayer} from '@mapbox/vector-tile';
|
|
27
27
|
|
|
28
28
|
type QueryParameters = {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
29
|
+
scale: number;
|
|
30
|
+
pixelPosMatrix: mat4;
|
|
31
|
+
transform: Transform;
|
|
32
|
+
tileSize: number;
|
|
33
|
+
queryGeometry: Array<Point>;
|
|
34
|
+
cameraQueryGeometry: Array<Point>;
|
|
35
|
+
queryPadding: number;
|
|
36
|
+
params: {
|
|
37
|
+
filter: FilterSpecification;
|
|
38
|
+
layers: Array<string>;
|
|
39
|
+
availableImages: Array<string>;
|
|
40
|
+
};
|
|
41
41
|
};
|
|
42
42
|
|
|
43
43
|
class FeatureIndex {
|
|
@@ -104,10 +104,10 @@ class FeatureIndex {
|
|
|
104
104
|
|
|
105
105
|
// Finds non-symbol features in this tile at a particular position.
|
|
106
106
|
query(
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
107
|
+
args: QueryParameters,
|
|
108
|
+
styleLayers: {[_: string]: StyleLayer},
|
|
109
|
+
serializedLayers: {[_: string]: any},
|
|
110
|
+
sourceFeatureState: SourceFeatureState
|
|
111
111
|
): {[_: string]: Array<{featureIndex: number; feature: GeoJSONFeature}>} {
|
|
112
112
|
this.loadVTLayers();
|
|
113
113
|
|
|
@@ -123,10 +123,10 @@ class FeatureIndex {
|
|
|
123
123
|
|
|
124
124
|
const cameraBounds = getBounds(args.cameraQueryGeometry);
|
|
125
125
|
const matching3D = this.grid3D.query(
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
126
|
+
cameraBounds.minX - queryPadding, cameraBounds.minY - queryPadding, cameraBounds.maxX + queryPadding, cameraBounds.maxY + queryPadding,
|
|
127
|
+
(bx1, by1, bx2, by2) => {
|
|
128
|
+
return polygonIntersectsBox(args.cameraQueryGeometry, bx1 - queryPadding, by1 - queryPadding, bx2 + queryPadding, by2 + queryPadding);
|
|
129
|
+
});
|
|
130
130
|
|
|
131
131
|
for (const key of matching3D) {
|
|
132
132
|
matching.push(key);
|
|
@@ -171,11 +171,11 @@ class FeatureIndex {
|
|
|
171
171
|
|
|
172
172
|
loadMatchingFeature(
|
|
173
173
|
result: {
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
174
|
+
[_: string]: Array<{
|
|
175
|
+
featureIndex: number;
|
|
176
|
+
feature: GeoJSONFeature;
|
|
177
|
+
intersectionZ?: boolean | number;
|
|
178
|
+
}>;
|
|
179
179
|
},
|
|
180
180
|
bucketIndex: number,
|
|
181
181
|
sourceLayerIndex: number,
|
|
@@ -187,10 +187,10 @@ class FeatureIndex {
|
|
|
187
187
|
serializedLayers: {[_: string]: any},
|
|
188
188
|
sourceFeatureState?: SourceFeatureState,
|
|
189
189
|
intersectionTest?: (
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
190
|
+
feature: VectorTileFeature,
|
|
191
|
+
styleLayer: StyleLayer,
|
|
192
|
+
featureState: any,
|
|
193
|
+
id: string | number | void
|
|
194
194
|
) => boolean | number) {
|
|
195
195
|
|
|
196
196
|
const layerIDs = this.bucketLayerIDs[bucketIndex];
|
|
@@ -253,13 +253,13 @@ class FeatureIndex {
|
|
|
253
253
|
// Given a set of symbol indexes that have already been looked up,
|
|
254
254
|
// return a matching set of GeoJSONFeatures
|
|
255
255
|
lookupSymbolFeatures(symbolFeatureIndexes: Array<number>,
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
256
|
+
serializedLayers: {[_: string]: StyleLayer},
|
|
257
|
+
bucketIndex: number,
|
|
258
|
+
sourceLayerIndex: number,
|
|
259
|
+
filterSpec: FilterSpecification,
|
|
260
|
+
filterLayerIDs: Array<string>,
|
|
261
|
+
availableImages: Array<string>,
|
|
262
|
+
styleLayers: {[_: string]: StyleLayer}) {
|
|
263
263
|
const result = {};
|
|
264
264
|
this.loadVTLayers();
|
|
265
265
|
|
|
@@ -3,14 +3,14 @@ import {register} from '../util/web_worker_transfer';
|
|
|
3
3
|
import assert from 'assert';
|
|
4
4
|
|
|
5
5
|
type SerializedFeaturePositionMap = {
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
ids: Float64Array;
|
|
7
|
+
positions: Uint32Array;
|
|
8
8
|
};
|
|
9
9
|
|
|
10
10
|
type FeaturePosition = {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
index: number;
|
|
12
|
+
start: number;
|
|
13
|
+
end: number;
|
|
14
14
|
};
|
|
15
15
|
|
|
16
16
|
// A transferable data structure that maps feature ids to their indices and buffer offsets
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {LineIndexArray, TriangleIndexArray, LineStripIndexArray} from './array_types';
|
|
1
|
+
import {LineIndexArray, TriangleIndexArray, LineStripIndexArray} from './array_types.g';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* An index array stores Uint16 indices of vertexes in a corresponding vertex array. We use
|
|
@@ -5,7 +5,7 @@ import {VectorTile} from '@mapbox/vector-tile';
|
|
|
5
5
|
import loadGeometry from './load_geometry';
|
|
6
6
|
|
|
7
7
|
// Load a line feature from fixture tile.
|
|
8
|
-
const vt = new VectorTile(new Protobuf(fs.readFileSync(path.resolve(__dirname, '../../test/
|
|
8
|
+
const vt = new VectorTile(new Protobuf(fs.readFileSync(path.resolve(__dirname, '../../test/unit/assets/mbsv5-6-18-23.vector.pbf'))));
|
|
9
9
|
|
|
10
10
|
describe('loadGeometry', () => {
|
|
11
11
|
test('loadGeometry', () => {
|