maplibre-gl 3.1.0 → 3.2.0-pre.2
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/README.md +7 -7
- package/build/generate-doc-images.ts +73 -0
- package/build/generate-docs.ts +100 -0
- package/build/generate-struct-arrays.ts +9 -12
- package/dist/maplibre-gl-csp-worker.js +1 -1
- package/dist/maplibre-gl-csp-worker.js.map +1 -1
- package/dist/maplibre-gl-csp.js +1 -1
- package/dist/maplibre-gl-csp.js.map +1 -1
- package/dist/maplibre-gl-dev.js +3303 -3398
- package/dist/maplibre-gl-dev.js.map +1 -1
- package/dist/maplibre-gl.d.ts +3899 -3531
- package/dist/maplibre-gl.js +3 -3
- package/dist/maplibre-gl.js.map +1 -1
- package/package.json +28 -25
- package/src/data/array_types.g.ts +14 -48
- package/src/data/bucket/circle_bucket.ts +11 -14
- package/src/data/bucket/fill_bucket.test.ts +6 -6
- package/src/data/bucket/fill_bucket.ts +10 -12
- package/src/data/bucket/fill_extrusion_bucket.ts +11 -13
- package/src/data/bucket/heatmap_bucket.ts +3 -6
- package/src/data/bucket/line_attributes.ts +1 -2
- package/src/data/bucket/line_attributes_ext.ts +1 -2
- package/src/data/bucket/line_bucket.test.ts +5 -5
- package/src/data/bucket/line_bucket.ts +18 -21
- package/src/data/bucket/pattern_attributes.ts +1 -3
- package/src/data/bucket/pattern_bucket_features.ts +3 -3
- package/src/data/bucket/symbol_bucket.test.ts +5 -5
- package/src/data/bucket/symbol_bucket.ts +12 -15
- package/src/data/bucket.ts +7 -11
- package/src/data/dem_data.test.ts +1 -1
- package/src/data/dem_data.ts +1 -1
- package/src/data/evaluation_feature.ts +4 -5
- package/src/data/extent.ts +1 -4
- package/src/data/feature_index.ts +14 -13
- package/src/data/feature_position_map.test.ts +4 -4
- package/src/data/feature_position_map.ts +1 -1
- package/src/data/index_array_type.ts +0 -1
- package/src/data/load_geometry.test.ts +1 -1
- package/src/data/load_geometry.ts +3 -4
- package/src/data/program_configuration.ts +6 -11
- package/src/data/segment.ts +9 -6
- package/src/geo/edge_insets.test.ts +1 -1
- package/src/geo/edge_insets.ts +36 -26
- package/src/geo/lng_lat.test.ts +1 -1
- package/src/geo/lng_lat.ts +61 -44
- package/src/geo/lng_lat_bounds.test.ts +2 -2
- package/src/geo/lng_lat_bounds.ts +88 -68
- package/src/geo/mercator_coordinate.test.ts +2 -2
- package/src/geo/mercator_coordinate.ts +34 -27
- package/src/geo/transform.test.ts +3 -3
- package/src/geo/transform.ts +58 -79
- package/src/gl/color_mode.ts +1 -3
- package/src/gl/context.ts +12 -11
- package/src/gl/cull_face_mode.ts +1 -3
- package/src/gl/depth_mode.ts +1 -3
- package/src/gl/framebuffer.ts +5 -4
- package/src/gl/index_buffer.ts +5 -4
- package/src/gl/render_pool.test.ts +2 -2
- package/src/gl/render_pool.ts +5 -5
- package/src/gl/state.test.ts +1 -1
- package/src/gl/stencil_mode.ts +1 -3
- package/src/gl/value.ts +1 -1
- package/src/gl/vertex_buffer.test.ts +2 -2
- package/src/gl/vertex_buffer.ts +8 -14
- package/src/index.test.ts +2 -2
- package/src/index.ts +121 -113
- package/src/render/draw_background.ts +7 -9
- package/src/render/draw_circle.ts +13 -15
- package/src/render/draw_collision_debug.ts +11 -13
- package/src/render/draw_custom.ts +6 -8
- package/src/render/draw_debug.test.ts +4 -4
- package/src/render/draw_debug.ts +8 -10
- package/src/render/draw_fill.test.ts +13 -13
- package/src/render/draw_fill.ts +9 -11
- package/src/render/draw_fill_extrusion.ts +10 -12
- package/src/render/draw_heatmap.ts +12 -14
- package/src/render/draw_hillshade.ts +10 -12
- package/src/render/draw_line.ts +9 -9
- package/src/render/draw_raster.ts +9 -11
- package/src/render/draw_symbol.test.ts +16 -16
- package/src/render/draw_symbol.ts +15 -16
- package/src/render/draw_terrain.ts +11 -11
- package/src/render/glyph_atlas.ts +10 -1
- package/src/render/glyph_manager.test.ts +3 -3
- package/src/render/glyph_manager.ts +7 -7
- package/src/render/image_atlas.ts +6 -3
- package/src/render/image_manager.ts +3 -5
- package/src/render/line_atlas.test.ts +1 -1
- package/src/render/line_atlas.ts +19 -14
- package/src/render/painter.ts +85 -65
- package/src/render/program/background_program.ts +2 -2
- package/src/render/program/circle_program.ts +5 -5
- package/src/render/program/clipping_mask_program.ts +1 -1
- package/src/render/program/collision_program.ts +4 -4
- package/src/render/program/debug_program.ts +1 -1
- package/src/render/program/fill_extrusion_program.ts +3 -3
- package/src/render/program/fill_program.ts +3 -3
- package/src/render/program/heatmap_program.ts +5 -5
- package/src/render/program/hillshade_program.ts +7 -7
- package/src/render/program/line_program.ts +6 -6
- package/src/render/program/pattern.ts +3 -3
- package/src/render/program/raster_program.ts +2 -2
- package/src/render/program/symbol_program.ts +2 -2
- package/src/render/program/terrain_program.ts +1 -1
- package/src/render/program.ts +18 -16
- package/src/render/render_to_texture.test.ts +15 -15
- package/src/render/render_to_texture.ts +10 -10
- package/src/render/terrain.test.ts +38 -7
- package/src/render/terrain.ts +103 -67
- package/src/render/texture.ts +5 -4
- package/src/render/uniform_binding.test.ts +1 -1
- package/src/render/uniform_binding.ts +7 -1
- package/src/render/update_pattern_positions_in_program.ts +5 -5
- package/src/render/vertex_array_object.ts +9 -8
- package/src/shaders/encode_attribute.ts +0 -2
- package/src/shaders/shaders.ts +1 -3
- package/src/source/canvas_source.test.ts +6 -6
- package/src/source/canvas_source.ts +46 -60
- package/src/source/geojson_source.test.ts +5 -5
- package/src/source/geojson_source.ts +75 -59
- package/src/source/geojson_source_diff.ts +39 -2
- package/src/source/geojson_worker_source.test.ts +3 -3
- package/src/source/geojson_worker_source.ts +20 -26
- package/src/source/geojson_wrapper.test.ts +3 -3
- package/src/source/geojson_wrapper.ts +2 -4
- package/src/source/image_source.test.ts +9 -8
- package/src/source/image_source.ts +49 -35
- package/src/source/load_tilejson.ts +2 -2
- package/src/source/pixels_to_tile_units.ts +2 -3
- package/src/source/query_features.test.ts +3 -3
- package/src/source/query_features.ts +50 -19
- package/src/source/raster_dem_tile_source.test.ts +3 -3
- package/src/source/raster_dem_tile_source.ts +23 -10
- package/src/source/raster_dem_tile_worker_source.test.ts +2 -2
- package/src/source/raster_dem_tile_worker_source.ts +3 -5
- package/src/source/raster_tile_source.test.ts +3 -3
- package/src/source/raster_tile_source.ts +38 -11
- package/src/source/rtl_text_plugin.ts +4 -1
- package/src/source/source.ts +67 -59
- package/src/source/source_cache.test.ts +7 -7
- package/src/source/source_cache.ts +17 -38
- package/src/source/source_state.ts +2 -5
- package/src/source/terrain_source_cache.test.ts +8 -8
- package/src/source/terrain_source_cache.ts +42 -27
- package/src/source/tile.test.ts +3 -3
- package/src/source/tile.ts +32 -38
- package/src/source/tile_bounds.ts +2 -4
- package/src/source/tile_cache.test.ts +2 -2
- package/src/source/tile_cache.ts +20 -30
- package/src/source/tile_id.ts +11 -2
- package/src/source/vector_tile_source.test.ts +3 -3
- package/src/source/vector_tile_source.ts +34 -24
- package/src/source/vector_tile_worker_source.test.ts +4 -4
- package/src/source/vector_tile_worker_source.ts +11 -23
- package/src/source/video_source.test.ts +5 -5
- package/src/source/video_source.ts +21 -28
- package/src/source/worker.ts +6 -8
- package/src/source/worker_source.ts +6 -8
- package/src/source/worker_tile.test.ts +5 -5
- package/src/source/worker_tile.ts +13 -16
- package/src/style/create_style_layer.ts +31 -26
- package/src/style/evaluation_parameters.ts +5 -4
- package/src/style/format_section_override.test.ts +2 -2
- package/src/style/format_section_override.ts +1 -1
- package/src/style/light.test.ts +2 -2
- package/src/style/light.ts +3 -5
- package/src/style/load_glyph_range.test.ts +1 -1
- package/src/style/load_glyph_range.ts +3 -3
- package/src/style/load_sprite.test.ts +1 -1
- package/src/style/load_sprite.ts +3 -3
- package/src/style/parse_glyph_pbf.ts +1 -1
- package/src/style/pauseable_placement.ts +7 -9
- package/src/style/properties.ts +4 -53
- package/src/style/query_utils.ts +3 -3
- package/src/style/style.test.ts +22 -19
- package/src/style/style.ts +118 -84
- package/src/style/style_glyph.ts +6 -0
- package/src/style/style_image.ts +39 -33
- package/src/style/style_layer/background_style_layer.ts +2 -4
- package/src/style/style_layer/circle_style_layer.ts +7 -6
- package/src/style/style_layer/custom_style_layer.ts +23 -48
- package/src/style/style_layer/fill_extrusion_style_layer.ts +4 -6
- package/src/style/style_layer/fill_style_layer.ts +5 -7
- package/src/style/style_layer/heatmap_style_layer.ts +8 -7
- package/src/style/style_layer/hillshade_style_layer.ts +2 -4
- package/src/style/style_layer/line_style_layer.ts +6 -8
- package/src/style/style_layer/overlap_mode.test.ts +3 -3
- package/src/style/style_layer/overlap_mode.ts +3 -0
- package/src/style/style_layer/raster_style_layer.ts +2 -4
- package/src/style/style_layer/symbol_style_layer.ts +6 -8
- package/src/style/style_layer/typed_style_layer.ts +7 -7
- package/src/style/style_layer.test.ts +5 -5
- package/src/style/style_layer.ts +7 -6
- package/src/style/style_layer_index.test.ts +1 -1
- package/src/style/style_layer_index.ts +3 -5
- package/src/style/zoom_history.ts +1 -3
- package/src/symbol/anchor.test.ts +1 -1
- package/src/symbol/anchor.ts +1 -3
- package/src/symbol/check_max_angle.test.ts +8 -2
- package/src/symbol/check_max_angle.ts +10 -13
- package/src/symbol/clip_line.test.ts +1 -1
- package/src/symbol/clip_line.ts +6 -9
- package/src/symbol/collision_feature.test.ts +2 -2
- package/src/symbol/collision_feature.ts +7 -12
- package/src/symbol/collision_index.test.ts +2 -2
- package/src/symbol/collision_index.ts +5 -11
- package/src/symbol/cross_tile_symbol_index.test.ts +2 -2
- package/src/symbol/cross_tile_symbol_index.ts +5 -7
- package/src/symbol/get_anchors.ts +2 -2
- package/src/symbol/grid_index.test.ts +1 -1
- package/src/symbol/grid_index.ts +4 -5
- package/src/symbol/merge_lines.test.ts +1 -1
- package/src/symbol/merge_lines.ts +1 -1
- package/src/symbol/opacity_state.ts +1 -3
- package/src/symbol/path_interpolator.test.ts +1 -1
- package/src/symbol/path_interpolator.ts +1 -3
- package/src/symbol/placement.ts +9 -9
- package/src/symbol/projection.ts +61 -34
- package/src/symbol/quads.ts +7 -11
- package/src/symbol/shaping.ts +1 -1
- package/src/symbol/symbol_layout.ts +9 -12
- package/src/symbol/symbol_size.ts +1 -1
- package/src/symbol/symbol_style_layer.test.ts +4 -4
- package/src/symbol/transform_text.ts +2 -2
- package/src/types/callback.ts +14 -14
- package/src/types/cancelable.ts +3 -0
- package/src/types/transferable.ts +3 -0
- package/src/ui/anchor.ts +4 -0
- package/src/ui/camera.test.ts +6 -6
- package/src/ui/camera.ts +392 -361
- package/src/ui/control/attribution_control.test.ts +1 -1
- package/src/ui/control/attribution_control.ts +34 -30
- package/src/ui/control/control.ts +14 -20
- package/src/ui/control/fullscreen_control.test.ts +1 -1
- package/src/ui/control/fullscreen_control.ts +21 -26
- package/src/ui/control/geolocate_control.test.ts +5 -5
- package/src/ui/control/geolocate_control.ts +181 -194
- package/src/ui/control/logo_control.ts +20 -16
- package/src/ui/control/navigation_control.test.ts +1 -1
- package/src/ui/control/navigation_control.ts +46 -42
- package/src/ui/control/scale_control.test.ts +1 -1
- package/src/ui/control/scale_control.ts +30 -21
- package/src/ui/control/terrain_control.test.ts +1 -1
- package/src/ui/control/terrain_control.ts +14 -18
- package/src/ui/default_locale.ts +1 -3
- package/src/ui/events.ts +570 -1281
- package/src/ui/handler/box_zoom.test.ts +2 -2
- package/src/ui/handler/box_zoom.ts +16 -11
- package/src/ui/handler/click_zoom.ts +11 -3
- package/src/ui/handler/cooperative_gestures.test.ts +3 -3
- package/src/ui/handler/dblclick_zoom.test.ts +1 -1
- package/src/ui/handler/drag_handler.ts +30 -22
- package/src/ui/handler/drag_move_state_manager.ts +1 -1
- package/src/ui/handler/drag_pan.test.ts +2 -2
- package/src/ui/handler/drag_rotate.test.ts +3 -3
- package/src/ui/handler/keyboard.test.ts +2 -2
- package/src/ui/handler/keyboard.ts +22 -13
- package/src/ui/handler/map_event.test.ts +2 -2
- 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 +3 -3
- package/src/ui/handler/scroll_zoom.test.ts +3 -3
- package/src/ui/handler/scroll_zoom.ts +45 -52
- package/src/ui/handler/shim/dblclick_zoom.ts +12 -6
- package/src/ui/handler/shim/drag_pan.ts +34 -14
- package/src/ui/handler/shim/drag_rotate.ts +20 -12
- package/src/ui/handler/shim/two_fingers_touch.ts +24 -18
- package/src/ui/handler/tap_drag_zoom.test.ts +113 -0
- package/src/ui/handler/tap_drag_zoom.ts +18 -10
- package/src/ui/handler/tap_recognizer.ts +1 -1
- package/src/ui/handler/tap_zoom.ts +4 -3
- package/src/ui/handler/touch_pan.ts +3 -2
- package/src/ui/handler/transform-provider.ts +4 -6
- package/src/ui/handler/two_fingers_touch.test.ts +3 -3
- package/src/ui/handler/two_fingers_touch.ts +64 -47
- package/src/ui/handler_inertia.ts +4 -4
- package/src/ui/handler_manager.ts +86 -52
- package/src/ui/hash.test.ts +1 -1
- package/src/ui/hash.ts +21 -28
- package/src/ui/map/isMoving.test.ts +3 -3
- package/src/ui/map/isRotating.test.ts +3 -3
- package/src/ui/map/isZooming.test.ts +3 -3
- package/src/ui/map.test.ts +97 -8
- package/src/ui/map.ts +856 -702
- package/src/ui/map_events.test.ts +1 -1
- package/src/ui/marker.test.ts +35 -15
- package/src/ui/marker.ts +220 -141
- package/src/ui/popup.test.ts +2 -2
- package/src/ui/popup.ts +179 -147
- package/src/util/actor.test.ts +7 -7
- package/src/util/actor.ts +25 -22
- package/src/util/ajax.ts +37 -17
- package/src/util/browser.test.ts +1 -1
- package/src/util/browser.ts +2 -6
- package/src/util/classify_rings.test.ts +1 -1
- package/src/util/classify_rings.ts +1 -1
- package/src/util/color_ramp.ts +0 -2
- package/src/util/config.ts +6 -3
- package/src/util/debug.ts +0 -2
- package/src/util/dictionary_coder.ts +1 -4
- package/src/util/dispatcher.test.ts +3 -3
- package/src/util/dispatcher.ts +4 -9
- package/src/util/dom.ts +1 -1
- package/src/util/evented.ts +23 -18
- package/src/util/find_pole_of_inaccessibility.test.ts +1 -1
- package/src/util/find_pole_of_inaccessibility.ts +4 -5
- package/src/util/global_worker_pool.ts +2 -3
- package/src/util/image.ts +10 -4
- package/src/util/image_request.test.ts +3 -3
- package/src/util/image_request.ts +15 -14
- package/src/util/is_char_in_unicode_block.ts +1 -3
- package/src/util/offscreen_canvas_supported.ts +1 -1
- package/src/util/performance.ts +1 -2
- package/src/util/request_manager.ts +4 -0
- package/src/util/resolve_tokens.test.ts +1 -1
- package/src/util/resolve_tokens.ts +3 -6
- package/src/util/script_detection.ts +1 -4
- package/src/util/smart_wrap.ts +3 -5
- package/src/util/struct_array.ts +18 -14
- package/src/util/style.ts +2 -2
- package/src/util/task_queue.test.ts +1 -1
- package/src/util/task_queue.ts +1 -3
- package/src/util/test/mock_webgl.ts +6 -0
- package/src/util/test/util.ts +2 -2
- package/src/util/throttle.test.ts +1 -1
- package/src/util/throttle.ts +1 -2
- package/src/util/throttled_invoker.ts +1 -5
- package/src/util/transferable_grid_index.test.ts +1 -1
- package/src/util/transferable_grid_index.ts +1 -3
- package/src/util/util.test.ts +1 -14
- package/src/util/util.ts +44 -107
- package/src/util/vectortile_to_geojson.ts +13 -3
- package/src/util/verticalize_punctuation.ts +1 -1
- package/src/util/web_worker.ts +2 -2
- package/src/util/web_worker_transfer.ts +11 -8
- package/src/util/webp_supported.ts +2 -4
- package/src/util/worker_pool.test.ts +1 -1
- package/src/util/worker_pool.ts +4 -5
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
import {Event, ErrorEvent, Evented} from '../util/evented';
|
|
2
2
|
|
|
3
3
|
import {extend} from '../util/util';
|
|
4
|
-
import EXTENT from '../data/extent';
|
|
4
|
+
import {EXTENT} from '../data/extent';
|
|
5
5
|
import {ResourceType} from '../util/request_manager';
|
|
6
|
-
import browser from '../util/browser';
|
|
6
|
+
import {browser} from '../util/browser';
|
|
7
7
|
|
|
8
8
|
import type {Source} from './source';
|
|
9
|
-
import type Map from '../ui/map';
|
|
10
|
-
import type Dispatcher from '../util/dispatcher';
|
|
11
|
-
import type Tile from './tile';
|
|
12
|
-
import type Actor from '../util/actor';
|
|
9
|
+
import type {Map} from '../ui/map';
|
|
10
|
+
import type {Dispatcher} from '../util/dispatcher';
|
|
11
|
+
import type {Tile} from './tile';
|
|
12
|
+
import type {Actor} from '../util/actor';
|
|
13
13
|
import type {Callback} from '../types/callback';
|
|
14
14
|
import type {GeoJSONSourceSpecification, PromoteIdSpecification} from '@maplibre/maplibre-gl-style-spec';
|
|
15
15
|
import type {GeoJSONSourceDiff} from './geojson_source_diff';
|
|
16
|
+
import type {Options, ClusterProperties} from 'supercluster';
|
|
16
17
|
|
|
17
18
|
export type GeoJSONSourceOptions = GeoJSONSourceSpecification & {
|
|
18
|
-
workerOptions?:
|
|
19
|
-
collectResourceTiming
|
|
19
|
+
workerOptions?: WorkerOptions;
|
|
20
|
+
collectResourceTiming?: boolean;
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
export type GeoJsonSourceOptions = {
|
|
@@ -38,23 +39,28 @@ export type WorkerOptions = {
|
|
|
38
39
|
linemetrics?: boolean;
|
|
39
40
|
generateId?: boolean;
|
|
40
41
|
};
|
|
41
|
-
superclusterOptions?:
|
|
42
|
-
|
|
43
|
-
miniPoints?: number;
|
|
44
|
-
extent?: number;
|
|
45
|
-
radius?: number;
|
|
46
|
-
log?: boolean;
|
|
47
|
-
generateId?: boolean;
|
|
48
|
-
};
|
|
49
|
-
clusterProperties?: any;
|
|
42
|
+
superclusterOptions?: Options<any, any>;
|
|
43
|
+
clusterProperties?: ClusterProperties;
|
|
50
44
|
fliter?: any;
|
|
51
45
|
promoteId?: any;
|
|
52
46
|
collectResourceTiming?: boolean;
|
|
53
47
|
}
|
|
54
48
|
|
|
49
|
+
/**
|
|
50
|
+
* The cluster options to set
|
|
51
|
+
*/
|
|
55
52
|
export type SetClusterOptions = {
|
|
53
|
+
/**
|
|
54
|
+
* Whether or not to cluster
|
|
55
|
+
*/
|
|
56
56
|
cluster?: boolean;
|
|
57
|
+
/**
|
|
58
|
+
* The cluster's max zoom
|
|
59
|
+
*/
|
|
57
60
|
clusterMaxZoom?: number;
|
|
61
|
+
/**
|
|
62
|
+
* The cluster's radius
|
|
63
|
+
*/
|
|
58
64
|
clusterRadius?: number;
|
|
59
65
|
}
|
|
60
66
|
|
|
@@ -62,13 +68,18 @@ export type SetClusterOptions = {
|
|
|
62
68
|
* A source containing GeoJSON.
|
|
63
69
|
* (See the [Style Specification](https://maplibre.org/maplibre-style-spec/#sources-geojson) for detailed documentation of options.)
|
|
64
70
|
*
|
|
71
|
+
* @group Sources
|
|
72
|
+
*
|
|
65
73
|
* @example
|
|
74
|
+
* ```ts
|
|
66
75
|
* map.addSource('some id', {
|
|
67
76
|
* type: 'geojson',
|
|
68
77
|
* data: 'https://d2ad6b4ur7yvpq.cloudfront.net/naturalearth-3.3.0/ne_10m_ports.geojson'
|
|
69
78
|
* });
|
|
79
|
+
* ```
|
|
70
80
|
*
|
|
71
81
|
* @example
|
|
82
|
+
* ```ts
|
|
72
83
|
* map.addSource('some id', {
|
|
73
84
|
* type: 'geojson',
|
|
74
85
|
* data: {
|
|
@@ -86,8 +97,10 @@ export type SetClusterOptions = {
|
|
|
86
97
|
* }]
|
|
87
98
|
* }
|
|
88
99
|
* });
|
|
100
|
+
* ```
|
|
89
101
|
*
|
|
90
102
|
* @example
|
|
103
|
+
* ```ts
|
|
91
104
|
* map.getSource('some id').setData({
|
|
92
105
|
* "type": "FeatureCollection",
|
|
93
106
|
* "features": [{
|
|
@@ -99,12 +112,13 @@ export type SetClusterOptions = {
|
|
|
99
112
|
* }
|
|
100
113
|
* }]
|
|
101
114
|
* });
|
|
102
|
-
*
|
|
103
|
-
* @see [
|
|
104
|
-
* @see [
|
|
105
|
-
* @see [Create
|
|
115
|
+
* ```
|
|
116
|
+
* @see [Draw GeoJSON points](https://maplibre.org/maplibre-gl-js/docs/examples/geojson-markers/)
|
|
117
|
+
* @see [Add a GeoJSON line](https://maplibre.org/maplibre-gl-js/docs/examples/geojson-line/)
|
|
118
|
+
* @see [Create a heatmap from points](https://maplibre.org/maplibre-gl-js/docs/examples/heatmap/)
|
|
119
|
+
* @see [Create and style clusters](https://maplibre.org/maplibre-gl-js/docs/examples/cluster/)
|
|
106
120
|
*/
|
|
107
|
-
class GeoJSONSource extends Evented implements Source {
|
|
121
|
+
export class GeoJSONSource extends Evented implements Source {
|
|
108
122
|
type: 'geojson';
|
|
109
123
|
id: string;
|
|
110
124
|
minzoom: number;
|
|
@@ -125,7 +139,7 @@ class GeoJSONSource extends Evented implements Source {
|
|
|
125
139
|
_removed: boolean;
|
|
126
140
|
|
|
127
141
|
/**
|
|
128
|
-
* @
|
|
142
|
+
* @hidden
|
|
129
143
|
*/
|
|
130
144
|
constructor(id: string, options: GeoJSONSourceOptions, dispatcher: Dispatcher, eventedParent: Evented) {
|
|
131
145
|
super();
|
|
@@ -192,9 +206,9 @@ class GeoJSONSource extends Evented implements Source {
|
|
|
192
206
|
}
|
|
193
207
|
}
|
|
194
208
|
|
|
195
|
-
load() {
|
|
209
|
+
load = () => {
|
|
196
210
|
this._updateWorkerData();
|
|
197
|
-
}
|
|
211
|
+
};
|
|
198
212
|
|
|
199
213
|
onAdd(map: Map) {
|
|
200
214
|
this.map = map;
|
|
@@ -204,10 +218,10 @@ class GeoJSONSource extends Evented implements Source {
|
|
|
204
218
|
/**
|
|
205
219
|
* Sets the GeoJSON data and re-renders the map.
|
|
206
220
|
*
|
|
207
|
-
* @param
|
|
208
|
-
* @returns
|
|
221
|
+
* @param data - A GeoJSON data object or a URL to one. The latter is preferable in the case of large GeoJSON files.
|
|
222
|
+
* @returns `this`
|
|
209
223
|
*/
|
|
210
|
-
setData(data: GeoJSON.GeoJSON | string) {
|
|
224
|
+
setData(data: GeoJSON.GeoJSON | string): this {
|
|
211
225
|
this._data = data;
|
|
212
226
|
this._updateWorkerData();
|
|
213
227
|
|
|
@@ -226,10 +240,10 @@ class GeoJSONSource extends Evented implements Source {
|
|
|
226
240
|
*
|
|
227
241
|
* Updates are applied on a best-effort basis, updating an ID that does not exist will not result in an error.
|
|
228
242
|
*
|
|
229
|
-
* @param
|
|
230
|
-
* @returns
|
|
243
|
+
* @param diff - The changes that need to be applied.
|
|
244
|
+
* @returns `this`
|
|
231
245
|
*/
|
|
232
|
-
updateData(diff: GeoJSONSourceDiff) {
|
|
246
|
+
updateData(diff: GeoJSONSourceDiff): this {
|
|
233
247
|
this._updateWorkerData(diff);
|
|
234
248
|
|
|
235
249
|
return this;
|
|
@@ -237,14 +251,15 @@ class GeoJSONSource extends Evented implements Source {
|
|
|
237
251
|
|
|
238
252
|
/**
|
|
239
253
|
* To disable/enable clustering on the source options
|
|
240
|
-
* @param
|
|
241
|
-
* @returns
|
|
254
|
+
* @param options - The options to set
|
|
255
|
+
* @returns `this`
|
|
242
256
|
* @example
|
|
257
|
+
* ```ts
|
|
243
258
|
* map.getSource('some id').setClusterOptions({cluster: false});
|
|
244
259
|
* map.getSource('some id').setClusterOptions({cluster: false, clusterRadius: 50, clusterMaxZoom: 14});
|
|
245
|
-
*
|
|
260
|
+
* ```
|
|
246
261
|
*/
|
|
247
|
-
setClusterOptions(options:SetClusterOptions) {
|
|
262
|
+
setClusterOptions(options: SetClusterOptions): this {
|
|
248
263
|
this.workerOptions.cluster = options.cluster;
|
|
249
264
|
if (options) {
|
|
250
265
|
if (options.clusterRadius !== undefined) this.workerOptions.superclusterOptions.radius = options.clusterRadius;
|
|
@@ -257,11 +272,11 @@ class GeoJSONSource extends Evented implements Source {
|
|
|
257
272
|
/**
|
|
258
273
|
* For clustered sources, fetches the zoom at which the given cluster expands.
|
|
259
274
|
*
|
|
260
|
-
* @param clusterId The value of the cluster's `cluster_id` property.
|
|
261
|
-
* @param callback A callback to be called when the zoom value is retrieved (`(error, zoom) => { ... }`).
|
|
262
|
-
* @returns
|
|
275
|
+
* @param clusterId - The value of the cluster's `cluster_id` property.
|
|
276
|
+
* @param callback - A callback to be called when the zoom value is retrieved (`(error, zoom) => { ... }`).
|
|
277
|
+
* @returns `this`
|
|
263
278
|
*/
|
|
264
|
-
getClusterExpansionZoom(clusterId: number, callback: Callback<number>) {
|
|
279
|
+
getClusterExpansionZoom(clusterId: number, callback: Callback<number>): this {
|
|
265
280
|
this.actor.send('geojson.getClusterExpansionZoom', {clusterId, source: this.id}, callback);
|
|
266
281
|
return this;
|
|
267
282
|
}
|
|
@@ -269,11 +284,11 @@ class GeoJSONSource extends Evented implements Source {
|
|
|
269
284
|
/**
|
|
270
285
|
* For clustered sources, fetches the children of the given cluster on the next zoom level (as an array of GeoJSON features).
|
|
271
286
|
*
|
|
272
|
-
* @param clusterId The value of the cluster's `cluster_id` property.
|
|
273
|
-
* @param callback A callback to be called when the features are retrieved (`(error, features) => { ... }`).
|
|
274
|
-
* @returns
|
|
287
|
+
* @param clusterId - The value of the cluster's `cluster_id` property.
|
|
288
|
+
* @param callback - A callback to be called when the features are retrieved (`(error, features) => { ... }`).
|
|
289
|
+
* @returns `this`
|
|
275
290
|
*/
|
|
276
|
-
getClusterChildren(clusterId: number, callback: Callback<Array<GeoJSON.Feature>>) {
|
|
291
|
+
getClusterChildren(clusterId: number, callback: Callback<Array<GeoJSON.Feature>>): this {
|
|
277
292
|
this.actor.send('geojson.getClusterChildren', {clusterId, source: this.id}, callback);
|
|
278
293
|
return this;
|
|
279
294
|
}
|
|
@@ -281,29 +296,31 @@ class GeoJSONSource extends Evented implements Source {
|
|
|
281
296
|
/**
|
|
282
297
|
* For clustered sources, fetches the original points that belong to the cluster (as an array of GeoJSON features).
|
|
283
298
|
*
|
|
284
|
-
* @param clusterId The value of the cluster's `cluster_id` property.
|
|
285
|
-
* @param limit The maximum number of features to return.
|
|
286
|
-
* @param offset The number of features to skip (e.g. for pagination).
|
|
287
|
-
* @param callback A callback to be called when the features are retrieved (`(error, features) => { ... }`).
|
|
288
|
-
* @returns
|
|
299
|
+
* @param clusterId - The value of the cluster's `cluster_id` property.
|
|
300
|
+
* @param limit - The maximum number of features to return.
|
|
301
|
+
* @param offset - The number of features to skip (e.g. for pagination).
|
|
302
|
+
* @param callback - A callback to be called when the features are retrieved (`(error, features) => { ... }`).
|
|
303
|
+
* @returns `this`
|
|
289
304
|
* @example
|
|
290
|
-
*
|
|
305
|
+
* Retrieve cluster leaves on click
|
|
306
|
+
* ```ts
|
|
291
307
|
* map.on('click', 'clusters', function(e) {
|
|
292
|
-
*
|
|
308
|
+
* let features = map.queryRenderedFeatures(e.point, {
|
|
293
309
|
* layers: ['clusters']
|
|
294
310
|
* });
|
|
295
311
|
*
|
|
296
|
-
*
|
|
297
|
-
*
|
|
298
|
-
*
|
|
312
|
+
* let clusterId = features[0].properties.cluster_id;
|
|
313
|
+
* let pointCount = features[0].properties.point_count;
|
|
314
|
+
* let clusterSource = map.getSource('clusters');
|
|
299
315
|
*
|
|
300
316
|
* clusterSource.getClusterLeaves(clusterId, pointCount, 0, function(error, features) {
|
|
301
317
|
* // Print cluster leaves in the console
|
|
302
318
|
* console.log('Cluster leaves:', error, features);
|
|
303
319
|
* })
|
|
304
320
|
* });
|
|
321
|
+
* ```
|
|
305
322
|
*/
|
|
306
|
-
getClusterLeaves(clusterId: number, limit: number, offset: number, callback: Callback<Array<GeoJSON.Feature>>) {
|
|
323
|
+
getClusterLeaves(clusterId: number, limit: number, offset: number, callback: Callback<Array<GeoJSON.Feature>>): this {
|
|
307
324
|
this.actor.send('geojson.getClusterLeaves', {
|
|
308
325
|
source: this.id,
|
|
309
326
|
clusterId,
|
|
@@ -313,10 +330,11 @@ class GeoJSONSource extends Evented implements Source {
|
|
|
313
330
|
return this;
|
|
314
331
|
}
|
|
315
332
|
|
|
316
|
-
|
|
333
|
+
/**
|
|
317
334
|
* Responsible for invoking WorkerSource's geojson.loadData target, which
|
|
318
335
|
* handles loading the geojson data and preparing to serve it up as tiles,
|
|
319
336
|
* using geojson-vt or supercluster as appropriate.
|
|
337
|
+
* @param diff - the diff object
|
|
320
338
|
*/
|
|
321
339
|
_updateWorkerData(diff?: GeoJSONSourceDiff) {
|
|
322
340
|
const options = extend({}, this.workerOptions);
|
|
@@ -419,16 +437,14 @@ class GeoJSONSource extends Evented implements Source {
|
|
|
419
437
|
this.actor.send('removeSource', {type: this.type, source: this.id});
|
|
420
438
|
}
|
|
421
439
|
|
|
422
|
-
serialize() {
|
|
440
|
+
serialize = (): GeoJSONSourceSpecification => {
|
|
423
441
|
return extend({}, this._options, {
|
|
424
442
|
type: this.type,
|
|
425
443
|
data: this._data
|
|
426
444
|
});
|
|
427
|
-
}
|
|
445
|
+
};
|
|
428
446
|
|
|
429
447
|
hasTransition() {
|
|
430
448
|
return false;
|
|
431
449
|
}
|
|
432
450
|
}
|
|
433
|
-
|
|
434
|
-
export default GeoJSONSource;
|
|
@@ -1,16 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A way to indentify a feature, either by string or by number
|
|
3
|
+
*/
|
|
1
4
|
export type GeoJSONFeatureId = number | string;
|
|
2
|
-
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* The geojson source diff object
|
|
8
|
+
*/
|
|
9
|
+
export type GeoJSONSourceDiff = {
|
|
10
|
+
/**
|
|
11
|
+
* When set to `true` it will remove all features
|
|
12
|
+
*/
|
|
3
13
|
removeAll?: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* An array of features IDs to remove
|
|
16
|
+
*/
|
|
4
17
|
remove?: Array<GeoJSONFeatureId>;
|
|
18
|
+
/**
|
|
19
|
+
* An array of features to add
|
|
20
|
+
*/
|
|
5
21
|
add?: Array<GeoJSON.Feature>;
|
|
22
|
+
/**
|
|
23
|
+
* An array of update objects
|
|
24
|
+
*/
|
|
6
25
|
update?: Array<GeoJSONFeatureDiff>;
|
|
7
26
|
}
|
|
8
27
|
|
|
9
|
-
|
|
28
|
+
/**
|
|
29
|
+
* A geojson feature diff object
|
|
30
|
+
*/
|
|
31
|
+
export type GeoJSONFeatureDiff = {
|
|
32
|
+
/**
|
|
33
|
+
* The feature ID
|
|
34
|
+
*/
|
|
10
35
|
id: GeoJSONFeatureId;
|
|
36
|
+
/**
|
|
37
|
+
* If it's a new geometry, place it here
|
|
38
|
+
*/
|
|
11
39
|
newGeometry?: GeoJSON.Geometry;
|
|
40
|
+
/**
|
|
41
|
+
* Setting to `true` will remove all preperties
|
|
42
|
+
*/
|
|
12
43
|
removeAllProperties?: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* The properties keys to remove
|
|
46
|
+
*/
|
|
13
47
|
removeProperties?: Array<string>;
|
|
48
|
+
/**
|
|
49
|
+
* The properties to add or update along side their values
|
|
50
|
+
*/
|
|
14
51
|
addOrUpdateProperties?: Array<{key: string; value: any}>;
|
|
15
52
|
}
|
|
16
53
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import GeoJSONWorkerSource,
|
|
2
|
-
import StyleLayerIndex from '../style/style_layer_index';
|
|
1
|
+
import {GeoJSONWorkerSource, LoadGeoJSONParameters} from './geojson_worker_source';
|
|
2
|
+
import {StyleLayerIndex} from '../style/style_layer_index';
|
|
3
3
|
import {OverscaledTileID} from './tile_id';
|
|
4
4
|
import perf from '../util/performance';
|
|
5
5
|
import {LayerSpecification} from '@maplibre/maplibre-gl-style-spec';
|
|
6
|
-
import Actor from '../util/actor';
|
|
6
|
+
import {Actor} from '../util/actor';
|
|
7
7
|
import {WorkerTileParameters} from './worker_source';
|
|
8
8
|
import {setPerformance} from '../util/test/util';
|
|
9
9
|
import {type FakeServer, fakeServer} from 'nise';
|
|
@@ -2,11 +2,11 @@ import {getJSON} from '../util/ajax';
|
|
|
2
2
|
|
|
3
3
|
import {RequestPerformance} from '../util/performance';
|
|
4
4
|
import rewind from '@mapbox/geojson-rewind';
|
|
5
|
-
import GeoJSONWrapper from './geojson_wrapper';
|
|
5
|
+
import {GeoJSONWrapper} from './geojson_wrapper';
|
|
6
6
|
import vtpbf from 'vt-pbf';
|
|
7
|
-
import Supercluster from 'supercluster';
|
|
7
|
+
import Supercluster, {type Options, type ClusterProperties} from 'supercluster';
|
|
8
8
|
import geojsonvt from 'geojson-vt';
|
|
9
|
-
import VectorTileWorkerSource from './vector_tile_worker_source';
|
|
9
|
+
import {VectorTileWorkerSource} from './vector_tile_worker_source';
|
|
10
10
|
import {createExpression} from '@maplibre/maplibre-gl-style-spec';
|
|
11
11
|
|
|
12
12
|
import type {
|
|
@@ -14,8 +14,8 @@ import type {
|
|
|
14
14
|
WorkerTileCallback,
|
|
15
15
|
} from '../source/worker_source';
|
|
16
16
|
|
|
17
|
-
import type Actor from '../util/actor';
|
|
18
|
-
import type StyleLayerIndex from '../style/style_layer_index';
|
|
17
|
+
import type {Actor} from '../util/actor';
|
|
18
|
+
import type {StyleLayerIndex} from '../style/style_layer_index';
|
|
19
19
|
|
|
20
20
|
import type {LoadVectorDataCallback} from './vector_tile_worker_source';
|
|
21
21
|
import type {RequestParameters, ResponseCallback} from '../util/ajax';
|
|
@@ -25,13 +25,16 @@ import {isUpdateableGeoJSON, type GeoJSONSourceDiff, applySourceDiff, toUpdateab
|
|
|
25
25
|
|
|
26
26
|
export type LoadGeoJSONParameters = {
|
|
27
27
|
request?: RequestParameters;
|
|
28
|
+
/**
|
|
29
|
+
* Literal GeoJSON data. Must be provided if `request.url` is not.
|
|
30
|
+
*/
|
|
28
31
|
data?: string;
|
|
29
32
|
dataDiff?: GeoJSONSourceDiff;
|
|
30
33
|
source: string;
|
|
31
34
|
cluster: boolean;
|
|
32
|
-
superclusterOptions?: any
|
|
35
|
+
superclusterOptions?: Options<any, any>;
|
|
33
36
|
geojsonVtOptions?: any;
|
|
34
|
-
clusterProperties?:
|
|
37
|
+
clusterProperties?: ClusterProperties;
|
|
35
38
|
filter?: Array<unknown>;
|
|
36
39
|
promoteId?: string;
|
|
37
40
|
};
|
|
@@ -82,10 +85,8 @@ function loadGeoJSONTile(params: WorkerTileParameters, callback: LoadVectorDataC
|
|
|
82
85
|
* representation. To do so, create it with
|
|
83
86
|
* `new GeoJSONWorkerSource(actor, layerIndex, customLoadGeoJSONFunction)`.
|
|
84
87
|
* For a full example, see [mapbox-gl-topojson](https://github.com/developmentseed/mapbox-gl-topojson).
|
|
85
|
-
*
|
|
86
|
-
* @private
|
|
87
88
|
*/
|
|
88
|
-
class GeoJSONWorkerSource extends VectorTileWorkerSource {
|
|
89
|
+
export class GeoJSONWorkerSource extends VectorTileWorkerSource {
|
|
89
90
|
_pendingCallback: Callback<{
|
|
90
91
|
resourceTiming?: {[_: string]: Array<PerformanceResourceTiming>};
|
|
91
92
|
abandoned?: boolean;
|
|
@@ -95,10 +96,9 @@ class GeoJSONWorkerSource extends VectorTileWorkerSource {
|
|
|
95
96
|
_dataUpdateable = new Map<GeoJSONFeatureId, GeoJSON.Feature>();
|
|
96
97
|
|
|
97
98
|
/**
|
|
98
|
-
* @param
|
|
99
|
+
* @param loadGeoJSON - Optional method for custom loading/parsing of
|
|
99
100
|
* GeoJSON based on parameters passed from the main-thread Source.
|
|
100
101
|
* See {@link GeoJSONWorkerSource#loadGeoJSON}.
|
|
101
|
-
* @private
|
|
102
102
|
*/
|
|
103
103
|
constructor(actor: Actor, layerIndex: StyleLayerIndex, availableImages: Array<string>, loadGeoJSON?: LoadGeoJSON | null) {
|
|
104
104
|
super(actor, layerIndex, availableImages, loadGeoJSONTile);
|
|
@@ -119,9 +119,8 @@ class GeoJSONWorkerSource extends VectorTileWorkerSource {
|
|
|
119
119
|
* When a `loadData` request comes in while a previous one is being processed,
|
|
120
120
|
* the previous one is aborted.
|
|
121
121
|
*
|
|
122
|
-
* @param params
|
|
123
|
-
* @param callback
|
|
124
|
-
* @private
|
|
122
|
+
* @param params - the parameters
|
|
123
|
+
* @param callback - the callback for completion or error
|
|
125
124
|
*/
|
|
126
125
|
loadData(params: LoadGeoJSONParameters, callback: Callback<{
|
|
127
126
|
resourceTiming?: {[_: string]: Array<PerformanceResourceTiming>};
|
|
@@ -188,9 +187,8 @@ class GeoJSONWorkerSource extends VectorTileWorkerSource {
|
|
|
188
187
|
* If the tile is loaded, uses the implementation in VectorTileWorkerSource.
|
|
189
188
|
* Otherwise, such as after a setData() call, we load the tile fresh.
|
|
190
189
|
*
|
|
191
|
-
* @param params
|
|
192
|
-
* @param
|
|
193
|
-
* @private
|
|
190
|
+
* @param params - the parameters
|
|
191
|
+
* @param callback - the callback for completion or error
|
|
194
192
|
*/
|
|
195
193
|
reloadTile(params: WorkerTileParameters, callback: WorkerTileCallback) {
|
|
196
194
|
const loaded = this.loaded,
|
|
@@ -210,11 +208,9 @@ class GeoJSONWorkerSource extends VectorTileWorkerSource {
|
|
|
210
208
|
* GeoJSON is loaded and parsed from `params.url` if it exists, or else
|
|
211
209
|
* expected as a literal (string or object) `params.data`.
|
|
212
210
|
*
|
|
213
|
-
* @param params
|
|
214
|
-
* @param
|
|
215
|
-
* @
|
|
216
|
-
* @returns {Cancelable} A Cancelable object.
|
|
217
|
-
* @private
|
|
211
|
+
* @param params - the parameters
|
|
212
|
+
* @param callback - the callback for completion or error
|
|
213
|
+
* @returns A Cancelable object.
|
|
218
214
|
*/
|
|
219
215
|
loadGeoJSON = (params: LoadGeoJSONParameters, callback: ResponseCallback<any>): Cancelable => {
|
|
220
216
|
const {promoteId} = params;
|
|
@@ -297,7 +293,7 @@ class GeoJSONWorkerSource extends VectorTileWorkerSource {
|
|
|
297
293
|
}
|
|
298
294
|
}
|
|
299
295
|
|
|
300
|
-
function getSuperclusterOptions({superclusterOptions, clusterProperties}:
|
|
296
|
+
function getSuperclusterOptions({superclusterOptions, clusterProperties}: LoadGeoJSONParameters) {
|
|
301
297
|
if (!clusterProperties || !superclusterOptions) return superclusterOptions;
|
|
302
298
|
|
|
303
299
|
const mapExpressions = {};
|
|
@@ -335,5 +331,3 @@ function getSuperclusterOptions({superclusterOptions, clusterProperties}: { supe
|
|
|
335
331
|
|
|
336
332
|
return superclusterOptions;
|
|
337
333
|
}
|
|
338
|
-
|
|
339
|
-
export default GeoJSONWorkerSource;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import {GeoJSONWrapper} from './geojson_wrapper';
|
|
2
2
|
|
|
3
3
|
describe('geojsonwrapper', () => {
|
|
4
4
|
test('linestring', () => {
|
|
@@ -8,7 +8,7 @@ describe('geojsonwrapper', () => {
|
|
|
8
8
|
tags: {hello: 'world'}
|
|
9
9
|
}];
|
|
10
10
|
|
|
11
|
-
const wrap = new
|
|
11
|
+
const wrap = new GeoJSONWrapper(features as any);
|
|
12
12
|
const feature = wrap.feature(0);
|
|
13
13
|
|
|
14
14
|
expect(feature).toBeTruthy();
|
|
@@ -25,7 +25,7 @@ describe('geojsonwrapper', () => {
|
|
|
25
25
|
tags: {}
|
|
26
26
|
}];
|
|
27
27
|
|
|
28
|
-
const wrap = new
|
|
28
|
+
const wrap = new GeoJSONWrapper(features as any);
|
|
29
29
|
const feature = wrap.feature(0);
|
|
30
30
|
expect(feature.loadGeometry()).toEqual([[{x: 0, y: 1}]]);
|
|
31
31
|
});
|
|
@@ -3,7 +3,7 @@ import Point from '@mapbox/point-geometry';
|
|
|
3
3
|
import mvt from '@mapbox/vector-tile';
|
|
4
4
|
import type {VectorTileFeature, VectorTileLayer, VectorTile} from '@mapbox/vector-tile';
|
|
5
5
|
const toGeoJSON = mvt.VectorTileFeature.prototype.toGeoJSON;
|
|
6
|
-
import EXTENT from '../data/extent';
|
|
6
|
+
import {EXTENT} from '../data/extent';
|
|
7
7
|
|
|
8
8
|
// The feature type used by geojson-vt and supercluster. Should be extracted to
|
|
9
9
|
// global type and used in module definitions for those two modules.
|
|
@@ -70,7 +70,7 @@ class FeatureWrapper implements VectorTileFeature {
|
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
-
class GeoJSONWrapper implements VectorTile, VectorTileLayer {
|
|
73
|
+
export class GeoJSONWrapper implements VectorTile, VectorTileLayer {
|
|
74
74
|
layers: {[_: string]: VectorTileLayer};
|
|
75
75
|
name: string;
|
|
76
76
|
extent: number;
|
|
@@ -89,5 +89,3 @@ class GeoJSONWrapper implements VectorTile, VectorTileLayer {
|
|
|
89
89
|
return new FeatureWrapper(this._features[i]);
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
|
-
|
|
93
|
-
export default GeoJSONWrapper;
|
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
import ImageSource from './image_source';
|
|
1
|
+
import {ImageSource} from './image_source';
|
|
2
2
|
import {Evented} from '../util/evented';
|
|
3
|
-
import Transform from '../geo/transform';
|
|
3
|
+
import {Transform} from '../geo/transform';
|
|
4
4
|
import {extend} from '../util/util';
|
|
5
5
|
import {fakeXhr} from 'nise';
|
|
6
6
|
import {RequestManager} from '../util/request_manager';
|
|
7
|
-
import Dispatcher from '../util/dispatcher';
|
|
7
|
+
import {Dispatcher} from '../util/dispatcher';
|
|
8
8
|
import {stubAjaxGetImage} from '../util/test/util';
|
|
9
|
-
import Tile from './tile';
|
|
9
|
+
import {Tile} from './tile';
|
|
10
10
|
import {OverscaledTileID} from './tile_id';
|
|
11
|
-
import VertexBuffer from '../gl/vertex_buffer';
|
|
12
|
-
import SegmentVector from '../data/segment';
|
|
13
|
-
import Texture from '../render/texture';
|
|
11
|
+
import {VertexBuffer} from '../gl/vertex_buffer';
|
|
12
|
+
import {SegmentVector} from '../data/segment';
|
|
13
|
+
import {Texture} from '../render/texture';
|
|
14
|
+
import type {ImageSourceSpecification} from '@maplibre/maplibre-gl-style-spec';
|
|
14
15
|
|
|
15
16
|
function createSource(options) {
|
|
16
17
|
options = extend({
|
|
@@ -177,7 +178,7 @@ describe('ImageSource', () => {
|
|
|
177
178
|
test('serialize url and coordinates', () => {
|
|
178
179
|
const source = createSource({url: '/image.png'});
|
|
179
180
|
|
|
180
|
-
const serialized = source.serialize();
|
|
181
|
+
const serialized = source.serialize() as ImageSourceSpecification;
|
|
181
182
|
expect(serialized.type).toBe('image');
|
|
182
183
|
expect(serialized.url).toBe('/image.png');
|
|
183
184
|
expect(serialized.coordinates).toEqual([[0, 0], [1, 0], [1, 1], [0, 1]]);
|