@mapgis/mapbox-gl 16.0.1 → 16.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/dist/mapbox-gl.js +3 -3
- package/dist/mapbox-gl.js.map +1 -1
- package/package.json +1 -1
- package/.flowconfig +0 -61
- package/LICENSE.txt +0 -84
- package/README.md +0 -34
- package/build/banner.js +0 -4
- package/build/check-bundle-size.js +0 -140
- package/build/generate-access-token-script.js +0 -11
- package/build/generate-flow-typed-style-spec.js +0 -188
- package/build/generate-release-list.js +0 -21
- package/build/generate-struct-arrays.js +0 -237
- package/build/generate-style-code.js +0 -159
- package/build/mapbox-gl.js.flow +0 -3
- package/build/print-release-url.js +0 -6
- package/build/rollup_plugin_minify_style_spec.js +0 -20
- package/build/rollup_plugins.js +0 -80
- package/build/run-node +0 -3
- package/build/run-tap +0 -8
- package/build/test/build-tape.js +0 -19
- package/flow-typed/gl.js +0 -5
- package/flow-typed/jsdom.js +0 -18
- package/flow-typed/mapbox-gl-supported.js +0 -9
- package/flow-typed/mapbox-unitbezier.js +0 -14
- package/flow-typed/offscreen-canvas.js +0 -9
- package/flow-typed/pbf.js +0 -25
- package/flow-typed/point-geometry.js +0 -44
- package/flow-typed/potpack.js +0 -12
- package/flow-typed/sinon.js +0 -28
- package/flow-typed/vector-tile.js +0 -41
- package/src/css/mapbox-gl.css +0 -798
- package/src/css/svg/mapboxgl-ctrl-attrib.svg +0 -3
- package/src/css/svg/mapboxgl-ctrl-compass.svg +0 -4
- package/src/css/svg/mapboxgl-ctrl-fullscreen.svg +0 -3
- package/src/css/svg/mapboxgl-ctrl-geolocate.svg +0 -5
- package/src/css/svg/mapboxgl-ctrl-logo.svg +0 -20
- package/src/css/svg/mapboxgl-ctrl-shrink.svg +0 -3
- package/src/css/svg/mapboxgl-ctrl-zoom-in.svg +0 -3
- package/src/css/svg/mapboxgl-ctrl-zoom-out.svg +0 -3
- package/src/data/array_types.js +0 -1095
- package/src/data/bucket/circle_attributes.js +0 -9
- package/src/data/bucket/circle_bucket.js +0 -204
- package/src/data/bucket/fill_attributes.js +0 -9
- package/src/data/bucket/fill_bucket.js +0 -233
- package/src/data/bucket/fill_extrusion_attributes.js +0 -10
- package/src/data/bucket/fill_extrusion_bucket.js +0 -289
- package/src/data/bucket/heatmap_bucket.js +0 -17
- package/src/data/bucket/line_attributes.js +0 -10
- package/src/data/bucket/line_bucket.js +0 -556
- package/src/data/bucket/pattern_attributes.js +0 -10
- package/src/data/bucket/pattern_bucket_features.js +0 -60
- package/src/data/bucket/symbol_attributes.js +0 -117
- package/src/data/bucket/symbol_bucket.js +0 -972
- package/src/data/bucket.js +0 -123
- package/src/data/dem_data.js +0 -125
- package/src/data/extent.js +0 -18
- package/src/data/feature_index.js +0 -321
- package/src/data/feature_position_map.js +0 -125
- package/src/data/index_array_type.js +0 -16
- package/src/data/load_geometry.js +0 -48
- package/src/data/pos_attributes.js +0 -6
- package/src/data/program_configuration.js +0 -687
- package/src/data/raster_bounds_attributes.js +0 -7
- package/src/data/segment.js +0 -76
- package/src/geo/edge_insets.js +0 -102
- package/src/geo/lng_lat.js +0 -165
- package/src/geo/lng_lat_bounds.js +0 -267
- package/src/geo/mercator_coordinate.js +0 -153
- package/src/geo/transform.js +0 -864
- package/src/gl/color_mode.js +0 -34
- package/src/gl/context.js +0 -298
- package/src/gl/cull_face_mode.js +0 -26
- package/src/gl/depth_mode.js +0 -29
- package/src/gl/framebuffer.js +0 -44
- package/src/gl/index_buffer.js +0 -55
- package/src/gl/stencil_mode.js +0 -30
- package/src/gl/types.js +0 -84
- package/src/gl/value.js +0 -520
- package/src/gl/vertex_buffer.js +0 -119
- package/src/index.js +0 -201
- package/src/render/draw_background.js +0 -57
- package/src/render/draw_circle.js +0 -113
- package/src/render/draw_collision_debug.js +0 -49
- package/src/render/draw_custom.js +0 -49
- package/src/render/draw_debug.js +0 -127
- package/src/render/draw_fill.js +0 -126
- package/src/render/draw_fill_extrusion.js +0 -96
- package/src/render/draw_heatmap.js +0 -140
- package/src/render/draw_hillshade.js +0 -108
- package/src/render/draw_line.js +0 -98
- package/src/render/draw_raster.js +0 -125
- package/src/render/draw_symbol.js +0 -394
- package/src/render/glyph_atlas.js +0 -71
- package/src/render/glyph_manager.js +0 -182
- package/src/render/image_atlas.js +0 -149
- package/src/render/image_manager.js +0 -306
- package/src/render/line_atlas.js +0 -210
- package/src/render/painter.js +0 -653
- package/src/render/program/background_program.js +0 -103
- package/src/render/program/circle_program.js +0 -69
- package/src/render/program/clipping_mask_program.js +0 -20
- package/src/render/program/collision_program.js +0 -49
- package/src/render/program/debug_program.js +0 -35
- package/src/render/program/fill_extrusion_program.js +0 -122
- package/src/render/program/fill_program.js +0 -126
- package/src/render/program/heatmap_program.js +0 -83
- package/src/render/program/hillshade_program.js +0 -122
- package/src/render/program/line_program.js +0 -207
- package/src/render/program/pattern.js +0 -102
- package/src/render/program/program_uniforms.js +0 -42
- package/src/render/program/raster_program.js +0 -92
- package/src/render/program/symbol_program.js +0 -224
- package/src/render/program.js +0 -168
- package/src/render/texture.js +0 -122
- package/src/render/uniform_binding.js +0 -147
- package/src/render/vertex_array_object.js +0 -163
- package/src/shaders/README.md +0 -42
- package/src/shaders/_prelude.fragment.glsl +0 -17
- package/src/shaders/_prelude.vertex.glsl +0 -73
- package/src/shaders/background.fragment.glsl +0 -10
- package/src/shaders/background.vertex.glsl +0 -7
- package/src/shaders/background_pattern.fragment.glsl +0 -28
- package/src/shaders/background_pattern.vertex.glsl +0 -20
- package/src/shaders/circle.fragment.glsl +0 -39
- package/src/shaders/circle.vertex.glsl +0 -64
- package/src/shaders/clipping_mask.fragment.glsl +0 -3
- package/src/shaders/clipping_mask.vertex.glsl +0 -7
- package/src/shaders/collision_box.fragment.glsl +0 -21
- package/src/shaders/collision_box.vertex.glsl +0 -27
- package/src/shaders/collision_circle.fragment.glsl +0 -34
- package/src/shaders/collision_circle.vertex.glsl +0 -36
- package/src/shaders/debug.fragment.glsl +0 -9
- package/src/shaders/debug.vertex.glsl +0 -12
- package/src/shaders/encode_attribute.js +0 -17
- package/src/shaders/fill.fragment.glsl +0 -13
- package/src/shaders/fill.vertex.glsl +0 -13
- package/src/shaders/fill_extrusion.fragment.glsl +0 -9
- package/src/shaders/fill_extrusion.vertex.glsl +0 -66
- package/src/shaders/fill_extrusion_pattern.fragment.glsl +0 -45
- package/src/shaders/fill_extrusion_pattern.vertex.glsl +0 -79
- package/src/shaders/fill_outline.fragment.glsl +0 -17
- package/src/shaders/fill_outline.vertex.glsl +0 -17
- package/src/shaders/fill_outline_pattern.fragment.glsl +0 -43
- package/src/shaders/fill_outline_pattern.vertex.glsl +0 -44
- package/src/shaders/fill_pattern.fragment.glsl +0 -36
- package/src/shaders/fill_pattern.vertex.glsl +0 -39
- package/src/shaders/heatmap.fragment.glsl +0 -22
- package/src/shaders/heatmap.vertex.glsl +0 -54
- package/src/shaders/heatmap_texture.fragment.glsl +0 -14
- package/src/shaders/heatmap_texture.vertex.glsl +0 -11
- package/src/shaders/hillshade.fragment.glsl +0 -52
- package/src/shaders/hillshade.vertex.glsl +0 -11
- package/src/shaders/hillshade_prepare.fragment.glsl +0 -74
- package/src/shaders/hillshade_prepare.vertex.glsl +0 -15
- package/src/shaders/index.js +0 -20
- package/src/shaders/line.fragment.glsl +0 -30
- package/src/shaders/line.vertex.glsl +0 -85
- package/src/shaders/line_gradient.fragment.glsl +0 -34
- package/src/shaders/line_gradient.vertex.glsl +0 -87
- package/src/shaders/line_pattern.fragment.glsl +0 -74
- package/src/shaders/line_pattern.vertex.glsl +0 -99
- package/src/shaders/line_sdf.fragment.glsl +0 -45
- package/src/shaders/line_sdf.vertex.glsl +0 -98
- package/src/shaders/raster.fragment.glsl +0 -52
- package/src/shaders/raster.vertex.glsl +0 -21
- package/src/shaders/shaders.js +0 -180
- package/src/shaders/symbol_icon.fragment.glsl +0 -17
- package/src/shaders/symbol_icon.vertex.glsl +0 -94
- package/src/shaders/symbol_sdf.fragment.glsl +0 -52
- package/src/shaders/symbol_sdf.vertex.glsl +0 -115
- package/src/shaders/symbol_text_and_icon.fragment.glsl +0 -68
- package/src/shaders/symbol_text_and_icon.vertex.glsl +0 -116
- package/src/source/canvas_source.js +0 -238
- package/src/source/geojson_helper.js +0 -92
- package/src/source/geojson_source.js +0 -374
- package/src/source/geojson_worker_source.js +0 -357
- package/src/source/geojson_wrapper.js +0 -94
- package/src/source/image_source.js +0 -307
- package/src/source/load_tilejson.js +0 -39
- package/src/source/mbtiles_source.js +0 -115
- package/src/source/offline_database.js +0 -61
- package/src/source/offline_database_root.js +0 -62
- package/src/source/pixels_to_tile_units.js +0 -21
- package/src/source/query_features.js +0 -208
- package/src/source/raster_dem_tile_source.js +0 -138
- package/src/source/raster_dem_tile_worker_source.js +0 -62
- package/src/source/raster_tile_offline_source.js +0 -136
- package/src/source/raster_tile_source.js +0 -177
- package/src/source/rtl_text_plugin.js +0 -138
- package/src/source/source.js +0 -137
- package/src/source/source_cache.js +0 -957
- package/src/source/source_state.js +0 -159
- package/src/source/tile.js +0 -465
- package/src/source/tile_bounds.js +0 -38
- package/src/source/tile_cache.js +0 -212
- package/src/source/tile_id.js +0 -402
- package/src/source/vector_tile_source.js +0 -192
- package/src/source/vector_tile_worker_source.js +0 -216
- package/src/source/video_source.js +0 -203
- package/src/source/worker.js +0 -237
- package/src/source/worker_source.js +0 -106
- package/src/source/worker_tile.js +0 -224
- package/src/style/create_style_layer.js +0 -36
- package/src/style/evaluation_parameters.js +0 -62
- package/src/style/light.js +0 -130
- package/src/style/load_glyph_range.js +0 -38
- package/src/style/load_sprite.js +0 -67
- package/src/style/parse_glyph_pbf.js +0 -44
- package/src/style/pauseable_placement.js +0 -132
- package/src/style/properties.js +0 -753
- package/src/style/query_utils.js +0 -43
- package/src/style/style.js +0 -1361
- package/src/style/style_glyph.js +0 -17
- package/src/style/style_image.js +0 -137
- package/src/style/style_layer/background_style_layer.js +0 -21
- package/src/style/style_layer/background_style_layer_properties.js +0 -40
- package/src/style/style_layer/circle_style_layer.js +0 -98
- package/src/style/style_layer/circle_style_layer_properties.js +0 -63
- package/src/style/style_layer/custom_style_layer.js +0 -223
- package/src/style/style_layer/fill_extrusion_style_layer.js +0 -224
- package/src/style/style_layer/fill_extrusion_style_layer_properties.js +0 -50
- package/src/style/style_layer/fill_style_layer.js +0 -67
- package/src/style/style_layer/fill_style_layer_properties.js +0 -55
- package/src/style/style_layer/heatmap_style_layer.js +0 -69
- package/src/style/style_layer/heatmap_style_layer_properties.js +0 -44
- package/src/style/style_layer/hillshade_style_layer.js +0 -25
- package/src/style/style_layer/hillshade_style_layer_properties.js +0 -46
- package/src/style/style_layer/layer_properties.js.ejs +0 -69
- package/src/style/style_layer/line_style_layer.js +0 -151
- package/src/style/style_layer/line_style_layer_properties.js +0 -71
- package/src/style/style_layer/raster_style_layer.js +0 -21
- package/src/style/style_layer/raster_style_layer_properties.js +0 -50
- package/src/style/style_layer/symbol_style_layer.js +0 -190
- package/src/style/style_layer/symbol_style_layer_properties.js +0 -153
- package/src/style/style_layer/typed_style_layer.js +0 -17
- package/src/style/style_layer.js +0 -281
- package/src/style/style_layer_index.js +0 -80
- package/src/style/validate_style.js +0 -42
- package/src/style/zoom_history.js +0 -44
- package/src/style-spec/.eslintrc +0 -5
- package/src/style-spec/CHANGELOG.md +0 -438
- package/src/style-spec/README.md +0 -59
- package/src/style-spec/bin/gl-style-composite +0 -9
- package/src/style-spec/bin/gl-style-format +0 -22
- package/src/style-spec/bin/gl-style-migrate +0 -9
- package/src/style-spec/bin/gl-style-validate +0 -50
- package/src/style-spec/composite.js +0 -50
- package/src/style-spec/declass.js +0 -42
- package/src/style-spec/deref.js +0 -52
- package/src/style-spec/diff.js +0 -393
- package/src/style-spec/dist/.gitkeep +0 -0
- package/src/style-spec/empty.js +0 -29
- package/src/style-spec/error/parsing_error.js +0 -16
- package/src/style-spec/error/validation_error.js +0 -18
- package/src/style-spec/expression/compound_expression.js +0 -162
- package/src/style-spec/expression/definitions/assertion.js +0 -130
- package/src/style-spec/expression/definitions/at.js +0 -70
- package/src/style-spec/expression/definitions/case.js +0 -85
- package/src/style-spec/expression/definitions/coalesce.js +0 -93
- package/src/style-spec/expression/definitions/coercion.js +0 -133
- package/src/style-spec/expression/definitions/collator.js +0 -78
- package/src/style-spec/expression/definitions/comparison.js +0 -184
- package/src/style-spec/expression/definitions/format.js +0 -144
- package/src/style-spec/expression/definitions/format_section_override.js +0 -54
- package/src/style-spec/expression/definitions/image.js +0 -52
- package/src/style-spec/expression/definitions/in.js +0 -92
- package/src/style-spec/expression/definitions/index.js +0 -561
- package/src/style-spec/expression/definitions/interpolate.js +0 -267
- package/src/style-spec/expression/definitions/length.js +0 -61
- package/src/style-spec/expression/definitions/let.js +0 -72
- package/src/style-spec/expression/definitions/literal.js +0 -77
- package/src/style-spec/expression/definitions/match.js +0 -158
- package/src/style-spec/expression/definitions/number_format.js +0 -142
- package/src/style-spec/expression/definitions/step.js +0 -120
- package/src/style-spec/expression/definitions/var.js +0 -46
- package/src/style-spec/expression/definitions/within.js +0 -333
- package/src/style-spec/expression/evaluation_context.js +0 -59
- package/src/style-spec/expression/expression.js +0 -27
- package/src/style-spec/expression/index.js +0 -392
- package/src/style-spec/expression/is_constant.js +0 -59
- package/src/style-spec/expression/parsing_context.js +0 -233
- package/src/style-spec/expression/parsing_error.js +0 -13
- package/src/style-spec/expression/runtime_error.js +0 -17
- package/src/style-spec/expression/scope.js +0 -36
- package/src/style-spec/expression/stops.js +0 -39
- package/src/style-spec/expression/types/collator.js +0 -61
- package/src/style-spec/expression/types/formatted.js +0 -73
- package/src/style-spec/expression/types/resolved_image.js +0 -29
- package/src/style-spec/expression/types.js +0 -106
- package/src/style-spec/expression/values.js +0 -123
- package/src/style-spec/feature_filter/README.md +0 -55
- package/src/style-spec/feature_filter/convert.js +0 -208
- package/src/style-spec/feature_filter/index.js +0 -165
- package/src/style-spec/format.js +0 -51
- package/src/style-spec/function/convert.js +0 -254
- package/src/style-spec/function/index.js +0 -262
- package/src/style-spec/group_by_layout.js +0 -75
- package/src/style-spec/migrate/expressions.js +0 -39
- package/src/style-spec/migrate/v8.js +0 -203
- package/src/style-spec/migrate/v9.js +0 -26
- package/src/style-spec/migrate.js +0 -36
- package/src/style-spec/package.json +0 -41
- package/src/style-spec/read_style.js +0 -14
- package/src/style-spec/reference/latest.js +0 -3
- package/src/style-spec/reference/v8.json +0 -5808
- package/src/style-spec/rollup.config.js +0 -45
- package/src/style-spec/style-spec.js +0 -122
- package/src/style-spec/types.js +0 -438
- package/src/style-spec/util/color.js +0 -95
- package/src/style-spec/util/color_spaces.js +0 -139
- package/src/style-spec/util/deep_equal.js +0 -28
- package/src/style-spec/util/extend.js +0 -10
- package/src/style-spec/util/get_type.js +0 -17
- package/src/style-spec/util/interpolate.js +0 -22
- package/src/style-spec/util/properties.js +0 -15
- package/src/style-spec/util/ref_properties.js +0 -2
- package/src/style-spec/util/result.js +0 -19
- package/src/style-spec/util/unbundle_jsonlint.js +0 -24
- package/src/style-spec/validate/latest.js +0 -11
- package/src/style-spec/validate/validate.js +0 -75
- package/src/style-spec/validate/validate_array.js +0 -52
- package/src/style-spec/validate/validate_boolean.js +0 -15
- package/src/style-spec/validate/validate_color.js +0 -20
- package/src/style-spec/validate/validate_constants.js +0 -13
- package/src/style-spec/validate/validate_enum.js +0 -21
- package/src/style-spec/validate/validate_expression.js +0 -43
- package/src/style-spec/validate/validate_filter.js +0 -111
- package/src/style-spec/validate/validate_formatted.js +0 -11
- package/src/style-spec/validate/validate_function.js +0 -207
- package/src/style-spec/validate/validate_glyphs_url.js +0 -21
- package/src/style-spec/validate/validate_image.js +0 -11
- package/src/style-spec/validate/validate_layer.js +0 -134
- package/src/style-spec/validate/validate_layout_property.js +0 -6
- package/src/style-spec/validate/validate_light.js +0 -47
- package/src/style-spec/validate/validate_number.js +0 -29
- package/src/style-spec/validate/validate_object.js +0 -61
- package/src/style-spec/validate/validate_paint_property.js +0 -6
- package/src/style-spec/validate/validate_property.js +0 -64
- package/src/style-spec/validate/validate_source.js +0 -111
- package/src/style-spec/validate/validate_string.js +0 -15
- package/src/style-spec/validate_mapbox_api_supported.js +0 -171
- package/src/style-spec/validate_style.js +0 -39
- package/src/style-spec/validate_style.min.js +0 -78
- package/src/style-spec/visit.js +0 -77
- package/src/symbol/anchor.js +0 -26
- package/src/symbol/check_max_angle.js +0 -81
- package/src/symbol/clip_line.js +0 -71
- package/src/symbol/collision_feature.js +0 -217
- package/src/symbol/collision_index.js +0 -372
- package/src/symbol/cross_tile_symbol_index.js +0 -301
- package/src/symbol/get_anchors.js +0 -167
- package/src/symbol/grid_index.js +0 -335
- package/src/symbol/mergelines.js +0 -82
- package/src/symbol/one_em.js +0 -4
- package/src/symbol/opacity_state.js +0 -27
- package/src/symbol/placement.js +0 -1062
- package/src/symbol/projection.js +0 -450
- package/src/symbol/quads.js +0 -334
- package/src/symbol/shaping.js +0 -816
- package/src/symbol/symbol_layout.js +0 -772
- package/src/symbol/symbol_size.js +0 -113
- package/src/symbol/transform_text.js +0 -29
- package/src/types/callback.js +0 -17
- package/src/types/cancelable.js +0 -3
- package/src/types/tilejson.js +0 -17
- package/src/types/transferable.js +0 -3
- package/src/types/window.js +0 -172
- package/src/ui/anchor.js +0 -32
- package/src/ui/bind_handlers.js +0 -202
- package/src/ui/camera.js +0 -1152
- package/src/ui/control/attribution_control.js +0 -189
- package/src/ui/control/fps_control.js +0 -185
- package/src/ui/control/fullscreen_control.js +0 -147
- package/src/ui/control/geolocate_control.js +0 -594
- package/src/ui/control/logo_control.js +0 -92
- package/src/ui/control/navigation_control.js +0 -148
- package/src/ui/control/scale_control.js +0 -142
- package/src/ui/crs.js +0 -64
- package/src/ui/default_locale.js +0 -20
- package/src/ui/events.js +0 -806
- package/src/ui/handler/box_zoom.js +0 -175
- package/src/ui/handler/dblclick_zoom.js +0 -139
- package/src/ui/handler/drag_pan.js +0 -416
- package/src/ui/handler/drag_rotate.js +0 -378
- package/src/ui/handler/keyboard.js +0 -161
- package/src/ui/handler/scroll_zoom.js +0 -333
- package/src/ui/handler/touch_zoom_rotate.js +0 -293
- package/src/ui/hash.js +0 -147
- package/src/ui/map.js +0 -2883
- package/src/ui/marker.js +0 -607
- package/src/ui/offline_map.js +0 -91
- package/src/ui/popup.js +0 -530
- package/src/util/actor.js +0 -212
- package/src/util/ajax.js +0 -371
- package/src/util/browser/web_worker.js +0 -10
- package/src/util/browser/window.js +0 -5
- package/src/util/browser.js +0 -70
- package/src/util/classify_rings.js +0 -52
- package/src/util/color_ramp.js +0 -28
- package/src/util/config.js +0 -30
- package/src/util/debug.js +0 -12
- package/src/util/dictionary_coder.js +0 -30
- package/src/util/dispatcher.js +0 -70
- package/src/util/dom.js +0 -144
- package/src/util/evented.js +0 -174
- package/src/util/find_pole_of_inaccessibility.js +0 -129
- package/src/util/global_worker_pool.js +0 -17
- package/src/util/image.js +0 -142
- package/src/util/intersection_tests.js +0 -208
- package/src/util/is_char_in_unicode_block.js +0 -311
- package/src/util/mapbox.js +0 -486
- package/src/util/offscreen_canvas_supported.js +0 -14
- package/src/util/performance.js +0 -112
- package/src/util/primitives.js +0 -145
- package/src/util/resolve_tokens.js +0 -16
- package/src/util/script_detection.js +0 -328
- package/src/util/sku_token.js +0 -42
- package/src/util/smart_wrap.js +0 -55
- package/src/util/struct_array.js +0 -243
- package/src/util/struct_array.js.ejs +0 -112
- package/src/util/struct_array_layout.js.ejs +0 -98
- package/src/util/task_queue.js +0 -68
- package/src/util/throttle.js +0 -28
- package/src/util/throttled_invoker.js +0 -46
- package/src/util/tile_cover.js +0 -101
- package/src/util/tile_request_cache.js +0 -172
- package/src/util/util.js +0 -504
- package/src/util/vectortile_to_geojson.js +0 -54
- package/src/util/verticalize_punctuation.js +0 -114
- package/src/util/web_worker.js +0 -91
- package/src/util/web_worker_transfer.js +0 -266
- package/src/util/webp_supported.js +0 -69
- package/src/util/window.js +0 -102
- package/src/util/worker_pool.js +0 -47
package/src/data/bucket.js
DELETED
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
// @flow
|
|
2
|
-
|
|
3
|
-
import type {CollisionBoxArray} from './array_types';
|
|
4
|
-
import type Style from '../style/style';
|
|
5
|
-
import type {TypedStyleLayer} from '../style/style_layer/typed_style_layer';
|
|
6
|
-
import type FeatureIndex from './feature_index';
|
|
7
|
-
import type Context from '../gl/context';
|
|
8
|
-
import type {FeatureStates} from '../source/source_state';
|
|
9
|
-
import type {ImagePosition} from '../render/image_atlas';
|
|
10
|
-
import type {CanonicalTileID} from '../source/tile_id';
|
|
11
|
-
|
|
12
|
-
export type BucketParameters<Layer: TypedStyleLayer> = {
|
|
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
|
-
}
|
|
22
|
-
|
|
23
|
-
export type PopulateParameters = {
|
|
24
|
-
featureIndex: FeatureIndex,
|
|
25
|
-
iconDependencies: {},
|
|
26
|
-
patternDependencies: {},
|
|
27
|
-
glyphDependencies: {},
|
|
28
|
-
availableImages: Array<string>
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export type IndexedFeature = {
|
|
32
|
-
feature: VectorTileFeature,
|
|
33
|
-
id: number | string,
|
|
34
|
-
index: number,
|
|
35
|
-
sourceLayerIndex: number,
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export type BucketFeature = {|
|
|
39
|
-
index: number,
|
|
40
|
-
sourceLayerIndex: number,
|
|
41
|
-
geometry: Array<Array<Point>>,
|
|
42
|
-
properties: Object,
|
|
43
|
-
type: 1 | 2 | 3,
|
|
44
|
-
id?: any,
|
|
45
|
-
+patterns: {[_: string]: {"min": string, "mid": string, "max": string}},
|
|
46
|
-
sortKey?: number
|
|
47
|
-
|};
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* The `Bucket` interface is the single point of knowledge about turning vector
|
|
51
|
-
* tiles into WebGL buffers.
|
|
52
|
-
*
|
|
53
|
-
* `Bucket` is an abstract interface. An implementation exists for each style layer type.
|
|
54
|
-
* Create a bucket via the `StyleLayer#createBucket` method.
|
|
55
|
-
*
|
|
56
|
-
* The concrete bucket types, using layout options from the style layer,
|
|
57
|
-
* transform feature geometries into vertex and index data for use by the
|
|
58
|
-
* vertex shader. They also (via `ProgramConfiguration`) use feature
|
|
59
|
-
* properties and the zoom level to populate the attributes needed for
|
|
60
|
-
* data-driven styling.
|
|
61
|
-
*
|
|
62
|
-
* Buckets are designed to be built on a worker thread and then serialized and
|
|
63
|
-
* transferred back to the main thread for rendering. On the worker side, a
|
|
64
|
-
* bucket's vertex, index, and attribute data is stored in `bucket.arrays:
|
|
65
|
-
* ArrayGroup`. When a bucket's data is serialized and sent back to the main
|
|
66
|
-
* thread, is gets deserialized (using `new Bucket(serializedBucketData)`, with
|
|
67
|
-
* the array data now stored in `bucket.buffers: BufferGroup`. BufferGroups
|
|
68
|
-
* hold the same data as ArrayGroups, but are tuned for consumption by WebGL.
|
|
69
|
-
*
|
|
70
|
-
* @private
|
|
71
|
-
*/
|
|
72
|
-
export interface Bucket {
|
|
73
|
-
layerIds: Array<string>;
|
|
74
|
-
hasPattern: boolean;
|
|
75
|
-
+layers: Array<any>;
|
|
76
|
-
+stateDependentLayers: Array<any>;
|
|
77
|
-
+stateDependentLayerIds: Array<string>;
|
|
78
|
-
populate(features: Array<IndexedFeature>, options: PopulateParameters, canonical: CanonicalTileID): void;
|
|
79
|
-
update(states: FeatureStates, vtLayer: VectorTileLayer, imagePositions: {[_: string]: ImagePosition}): void;
|
|
80
|
-
isEmpty(): boolean;
|
|
81
|
-
|
|
82
|
-
upload(context: Context): void;
|
|
83
|
-
uploadPending(): boolean;
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Release the WebGL resources associated with the buffers. Note that because
|
|
87
|
-
* buckets are shared between layers having the same layout properties, they
|
|
88
|
-
* must be destroyed in groups (all buckets for a tile, or all symbol buckets).
|
|
89
|
-
*
|
|
90
|
-
* @private
|
|
91
|
-
*/
|
|
92
|
-
destroy(): void;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
export function deserialize(input: Array<Bucket>, style: Style): {[_: string]: Bucket} {
|
|
96
|
-
const output = {};
|
|
97
|
-
|
|
98
|
-
// Guard against the case where the map's style has been set to null while
|
|
99
|
-
// this bucket has been parsing.
|
|
100
|
-
if (!style) return output;
|
|
101
|
-
|
|
102
|
-
for (const bucket of input) {
|
|
103
|
-
const layers = bucket.layerIds
|
|
104
|
-
.map((id) => style.getLayer(id))
|
|
105
|
-
.filter(Boolean);
|
|
106
|
-
|
|
107
|
-
if (layers.length === 0) {
|
|
108
|
-
continue;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
// look up StyleLayer objects from layer ids (since we don't
|
|
112
|
-
// want to waste time serializing/copying them from the worker)
|
|
113
|
-
(bucket: any).layers = layers;
|
|
114
|
-
if ((bucket: any).stateDependentLayerIds) {
|
|
115
|
-
(bucket: any).stateDependentLayers = (bucket: any).stateDependentLayerIds.map((lId) => layers.filter((l) => l.id === lId)[0]);
|
|
116
|
-
}
|
|
117
|
-
for (const layer of layers) {
|
|
118
|
-
output[layer.id] = bucket;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
return output;
|
|
123
|
-
}
|
package/src/data/dem_data.js
DELETED
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
// @flow
|
|
2
|
-
import {RGBAImage} from '../util/image';
|
|
3
|
-
|
|
4
|
-
import {warnOnce} from '../util/util';
|
|
5
|
-
import {register} from '../util/web_worker_transfer';
|
|
6
|
-
|
|
7
|
-
// DEMData is a data structure for decoding, backfilling, and storing elevation data for processing in the hillshade shaders
|
|
8
|
-
// data can be populated either from a pngraw image tile or from serliazed data sent back from a worker. When data is initially
|
|
9
|
-
// loaded from a image tile, we decode the pixel values using the appropriate decoding formula, but we store the
|
|
10
|
-
// elevation data as an Int32 value. we add 65536 (2^16) to eliminate negative values and enable the use of
|
|
11
|
-
// integer overflow when creating the texture used in the hillshadePrepare step.
|
|
12
|
-
|
|
13
|
-
// DEMData also handles the backfilling of data from a tile's neighboring tiles. This is necessary because we use a pixel's 8
|
|
14
|
-
// surrounding pixel values to compute the slope at that pixel, and we cannot accurately calculate the slope at pixels on a
|
|
15
|
-
// tile's edge without backfilling from neighboring tiles.
|
|
16
|
-
|
|
17
|
-
export default class DEMData {
|
|
18
|
-
uid: string;
|
|
19
|
-
data: Uint32Array;
|
|
20
|
-
stride: number;
|
|
21
|
-
dim: number;
|
|
22
|
-
encoding: "mapbox" | "terrarium";
|
|
23
|
-
|
|
24
|
-
// RGBAImage data has uniform 1px padding on all sides: square tile edge size defines stride
|
|
25
|
-
// and dim is calculated as stride - 2.
|
|
26
|
-
constructor(uid: string, data: RGBAImage, encoding: "mapbox" | "terrarium") {
|
|
27
|
-
this.uid = uid;
|
|
28
|
-
if (data.height !== data.width) throw new RangeError('DEM tiles must be square');
|
|
29
|
-
if (encoding && encoding !== "mapbox" && encoding !== "terrarium") return warnOnce(
|
|
30
|
-
`"${encoding}" is not a valid encoding type. Valid types include "mapbox" and "terrarium".`
|
|
31
|
-
);
|
|
32
|
-
this.stride = data.height;
|
|
33
|
-
const dim = this.dim = data.height - 2;
|
|
34
|
-
this.data = new Uint32Array(data.data.buffer);
|
|
35
|
-
this.encoding = encoding || 'mapbox';
|
|
36
|
-
|
|
37
|
-
// in order to avoid flashing seams between tiles, here we are initially populating a 1px border of pixels around the image
|
|
38
|
-
// with the data of the nearest pixel from the image. this data is eventually replaced when the tile's neighboring
|
|
39
|
-
// tiles are loaded and the accurate data can be backfilled using DEMData#backfillBorder
|
|
40
|
-
for (let x = 0; x < dim; x++) {
|
|
41
|
-
// left vertical border
|
|
42
|
-
this.data[this._idx(-1, x)] = this.data[this._idx(0, x)];
|
|
43
|
-
// right vertical border
|
|
44
|
-
this.data[this._idx(dim, x)] = this.data[this._idx(dim - 1, x)];
|
|
45
|
-
// left horizontal border
|
|
46
|
-
this.data[this._idx(x, -1)] = this.data[this._idx(x, 0)];
|
|
47
|
-
// right horizontal border
|
|
48
|
-
this.data[this._idx(x, dim)] = this.data[this._idx(x, dim - 1)];
|
|
49
|
-
}
|
|
50
|
-
// corners
|
|
51
|
-
this.data[this._idx(-1, -1)] = this.data[this._idx(0, 0)];
|
|
52
|
-
this.data[this._idx(dim, -1)] = this.data[this._idx(dim - 1, 0)];
|
|
53
|
-
this.data[this._idx(-1, dim)] = this.data[this._idx(0, dim - 1)];
|
|
54
|
-
this.data[this._idx(dim, dim)] = this.data[this._idx(dim - 1, dim - 1)];
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
get(x: number, y: number) {
|
|
58
|
-
const pixels = new Uint8Array(this.data.buffer);
|
|
59
|
-
const index = this._idx(x, y) * 4;
|
|
60
|
-
const unpack = this.encoding === "terrarium" ? this._unpackTerrarium : this._unpackMapbox;
|
|
61
|
-
return unpack(pixels[index], pixels[index + 1], pixels[index + 2]);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
getUnpackVector() {
|
|
65
|
-
return this.encoding === "terrarium" ? [256.0, 1.0, 1.0 / 256.0, 32768.0] : [6553.6, 25.6, 0.1, 10000.0];
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
_idx(x: number, y: number) {
|
|
69
|
-
if (x < -1 || x >= this.dim + 1 || y < -1 || y >= this.dim + 1) throw new RangeError('out of range source coordinates for DEM data');
|
|
70
|
-
return (y + 1) * this.stride + (x + 1);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
_unpackMapbox(r: number, g: number, b: number) {
|
|
74
|
-
// unpacking formula for mapbox.terrain-rgb:
|
|
75
|
-
// https://www.mapbox.com/help/access-elevation-data/#mapbox-terrain-rgb
|
|
76
|
-
return ((r * 256 * 256 + g * 256.0 + b) / 10.0 - 10000.0);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
_unpackTerrarium(r: number, g: number, b: number) {
|
|
80
|
-
// unpacking formula for mapzen terrarium:
|
|
81
|
-
// https://aws.amazon.com/public-datasets/terrain/
|
|
82
|
-
return ((r * 256 + g + b / 256) - 32768.0);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
getPixels() {
|
|
86
|
-
return new RGBAImage({width: this.stride, height: this.stride}, new Uint8Array(this.data.buffer));
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
backfillBorder(borderTile: DEMData, dx: number, dy: number) {
|
|
90
|
-
if (this.dim !== borderTile.dim) throw new Error('dem dimension mismatch');
|
|
91
|
-
|
|
92
|
-
let xMin = dx * this.dim,
|
|
93
|
-
xMax = dx * this.dim + this.dim,
|
|
94
|
-
yMin = dy * this.dim,
|
|
95
|
-
yMax = dy * this.dim + this.dim;
|
|
96
|
-
|
|
97
|
-
switch (dx) {
|
|
98
|
-
case -1:
|
|
99
|
-
xMin = xMax - 1;
|
|
100
|
-
break;
|
|
101
|
-
case 1:
|
|
102
|
-
xMax = xMin + 1;
|
|
103
|
-
break;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
switch (dy) {
|
|
107
|
-
case -1:
|
|
108
|
-
yMin = yMax - 1;
|
|
109
|
-
break;
|
|
110
|
-
case 1:
|
|
111
|
-
yMax = yMin + 1;
|
|
112
|
-
break;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
const ox = -dx * this.dim;
|
|
116
|
-
const oy = -dy * this.dim;
|
|
117
|
-
for (let y = yMin; y < yMax; y++) {
|
|
118
|
-
for (let x = xMin; x < xMax; x++) {
|
|
119
|
-
this.data[this._idx(x, y)] = borderTile.data[this._idx(x + ox, y + oy)];
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
register('DEMData', DEMData);
|
package/src/data/extent.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
// @flow
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* The maximum value of a coordinate in the internal tile coordinate system. Coordinates of
|
|
5
|
-
* all source features normalized to this extent upon load.
|
|
6
|
-
*
|
|
7
|
-
* The value is a consequence of the following:
|
|
8
|
-
*
|
|
9
|
-
* * Vertex buffer store positions as signed 16 bit integers.
|
|
10
|
-
* * One bit is lost for signedness to support tile buffers.
|
|
11
|
-
* * One bit is lost because the line vertex buffer used to pack 1 bit of other data into the int.
|
|
12
|
-
* * One bit is lost to support features extending past the extent on the right edge of the tile.
|
|
13
|
-
* * This leaves us with 2^13 = 8192
|
|
14
|
-
*
|
|
15
|
-
* @private
|
|
16
|
-
* @readonly
|
|
17
|
-
*/
|
|
18
|
-
export default 8192;
|
|
@@ -1,321 +0,0 @@
|
|
|
1
|
-
// @flow
|
|
2
|
-
|
|
3
|
-
import Point from '@mapbox/point-geometry';
|
|
4
|
-
|
|
5
|
-
import loadGeometry from './load_geometry';
|
|
6
|
-
import EXTENT from './extent';
|
|
7
|
-
import featureFilter from '../style-spec/feature_filter';
|
|
8
|
-
import Grid from 'grid-index';
|
|
9
|
-
import DictionaryCoder from '../util/dictionary_coder';
|
|
10
|
-
import vt from '@mapbox/vector-tile';
|
|
11
|
-
import Protobuf from 'pbf';
|
|
12
|
-
import GeoJSONFeature from '../util/vectortile_to_geojson';
|
|
13
|
-
import {arraysIntersect, mapObject} from '../util/util';
|
|
14
|
-
import {OverscaledTileID, CanonicalTileID} from '../source/tile_id';
|
|
15
|
-
import {register} from '../util/web_worker_transfer';
|
|
16
|
-
import EvaluationParameters from '../style/evaluation_parameters';
|
|
17
|
-
import SourceFeatureState from '../source/source_state';
|
|
18
|
-
import {polygonIntersectsBox} from '../util/intersection_tests';
|
|
19
|
-
import {PossiblyEvaluated} from '../style/properties';
|
|
20
|
-
|
|
21
|
-
import type StyleLayer from '../style/style_layer';
|
|
22
|
-
import type {FeatureFilter} from '../style-spec/feature_filter';
|
|
23
|
-
import type Transform from '../geo/transform';
|
|
24
|
-
import type {FilterSpecification, PromoteIdSpecification} from '../style-spec/types';
|
|
25
|
-
|
|
26
|
-
import {FeatureIndexArray} from './array_types';
|
|
27
|
-
|
|
28
|
-
type QueryParameters = {
|
|
29
|
-
scale: number,
|
|
30
|
-
pixelPosMatrix: Float32Array,
|
|
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
|
-
}
|
|
42
|
-
|
|
43
|
-
class FeatureIndex {
|
|
44
|
-
tileID: OverscaledTileID;
|
|
45
|
-
x: number;
|
|
46
|
-
y: number;
|
|
47
|
-
z: number;
|
|
48
|
-
grid: Grid;
|
|
49
|
-
grid3D: Grid;
|
|
50
|
-
featureIndexArray: FeatureIndexArray;
|
|
51
|
-
promoteId: ?PromoteIdSpecification;
|
|
52
|
-
|
|
53
|
-
rawTileData: ArrayBuffer;
|
|
54
|
-
bucketLayerIDs: Array<Array<string>>;
|
|
55
|
-
|
|
56
|
-
vtLayers: {[_: string]: VectorTileLayer};
|
|
57
|
-
sourceLayerCoder: DictionaryCoder;
|
|
58
|
-
|
|
59
|
-
constructor(tileID: OverscaledTileID, promoteId?: ?PromoteIdSpecification) {
|
|
60
|
-
this.tileID = tileID;
|
|
61
|
-
this.x = tileID.canonical.x;
|
|
62
|
-
this.y = tileID.canonical.y;
|
|
63
|
-
this.z = tileID.canonical.z;
|
|
64
|
-
this.grid = new Grid(EXTENT, 16, 0);
|
|
65
|
-
this.grid3D = new Grid(EXTENT, 16, 0);
|
|
66
|
-
this.featureIndexArray = new FeatureIndexArray();
|
|
67
|
-
this.promoteId = promoteId;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
insert(feature: VectorTileFeature, geometry: Array<Array<Point>>, featureIndex: number, sourceLayerIndex: number, bucketIndex: number, is3D?: boolean) {
|
|
71
|
-
const key = this.featureIndexArray.length;
|
|
72
|
-
this.featureIndexArray.emplaceBack(featureIndex, sourceLayerIndex, bucketIndex);
|
|
73
|
-
|
|
74
|
-
const grid = is3D ? this.grid3D : this.grid;
|
|
75
|
-
|
|
76
|
-
for (let r = 0; r < geometry.length; r++) {
|
|
77
|
-
const ring = geometry[r];
|
|
78
|
-
|
|
79
|
-
const bbox = [Infinity, Infinity, -Infinity, -Infinity];
|
|
80
|
-
for (let i = 0; i < ring.length; i++) {
|
|
81
|
-
const p = ring[i];
|
|
82
|
-
bbox[0] = Math.min(bbox[0], p.x);
|
|
83
|
-
bbox[1] = Math.min(bbox[1], p.y);
|
|
84
|
-
bbox[2] = Math.max(bbox[2], p.x);
|
|
85
|
-
bbox[3] = Math.max(bbox[3], p.y);
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
if (bbox[0] < EXTENT &&
|
|
89
|
-
bbox[1] < EXTENT &&
|
|
90
|
-
bbox[2] >= 0 &&
|
|
91
|
-
bbox[3] >= 0) {
|
|
92
|
-
grid.insert(key, bbox[0], bbox[1], bbox[2], bbox[3]);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
loadVTLayers(): {[_: string]: VectorTileLayer} {
|
|
98
|
-
if (!this.vtLayers) {
|
|
99
|
-
this.vtLayers = new vt.VectorTile(new Protobuf(this.rawTileData)).layers;
|
|
100
|
-
this.sourceLayerCoder = new DictionaryCoder(this.vtLayers ? Object.keys(this.vtLayers).sort() : ['_geojsonTileLayer']);
|
|
101
|
-
}
|
|
102
|
-
return this.vtLayers;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
// Finds non-symbol features in this tile at a particular position.
|
|
106
|
-
query(args: QueryParameters,
|
|
107
|
-
styleLayers: {[_: string]: StyleLayer},
|
|
108
|
-
serializedLayers: {[_: string]: Object},
|
|
109
|
-
sourceFeatureState: SourceFeatureState):
|
|
110
|
-
{[_: string]: Array<{ featureIndex: number, feature: GeoJSONFeature }>}
|
|
111
|
-
{
|
|
112
|
-
this.loadVTLayers();
|
|
113
|
-
|
|
114
|
-
const params = args.params || {},
|
|
115
|
-
pixelsToTileUnits = EXTENT / args.tileSize / args.scale,
|
|
116
|
-
filter = featureFilter(params.filter);
|
|
117
|
-
|
|
118
|
-
const queryGeometry = args.queryGeometry;
|
|
119
|
-
const queryPadding = args.queryPadding * pixelsToTileUnits;
|
|
120
|
-
|
|
121
|
-
const bounds = getBounds(queryGeometry);
|
|
122
|
-
const matching = this.grid.query(bounds.minX - queryPadding, bounds.minY - queryPadding, bounds.maxX + queryPadding, bounds.maxY + queryPadding);
|
|
123
|
-
|
|
124
|
-
const cameraBounds = getBounds(args.cameraQueryGeometry);
|
|
125
|
-
const matching3D = this.grid3D.query(
|
|
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
|
-
|
|
131
|
-
for (const key of matching3D) {
|
|
132
|
-
matching.push(key);
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
matching.sort(topDownFeatureComparator);
|
|
136
|
-
|
|
137
|
-
const result = {};
|
|
138
|
-
let previousIndex;
|
|
139
|
-
for (let k = 0; k < matching.length; k++) {
|
|
140
|
-
const index = matching[k];
|
|
141
|
-
|
|
142
|
-
// don't check the same feature more than once
|
|
143
|
-
if (index === previousIndex) continue;
|
|
144
|
-
previousIndex = index;
|
|
145
|
-
|
|
146
|
-
const match = this.featureIndexArray.get(index);
|
|
147
|
-
let featureGeometry = null;
|
|
148
|
-
this.loadMatchingFeature(
|
|
149
|
-
result,
|
|
150
|
-
match.bucketIndex,
|
|
151
|
-
match.sourceLayerIndex,
|
|
152
|
-
match.featureIndex,
|
|
153
|
-
filter,
|
|
154
|
-
params.layers,
|
|
155
|
-
params.availableImages,
|
|
156
|
-
styleLayers,
|
|
157
|
-
serializedLayers,
|
|
158
|
-
sourceFeatureState,
|
|
159
|
-
(feature: VectorTileFeature, styleLayer: StyleLayer, featureState: Object) => {
|
|
160
|
-
if (!featureGeometry) {
|
|
161
|
-
featureGeometry = loadGeometry(feature);
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
return styleLayer.queryIntersectsFeature(queryGeometry, feature, featureState, featureGeometry, this.z, args.transform, pixelsToTileUnits, args.pixelPosMatrix);
|
|
165
|
-
}
|
|
166
|
-
);
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
return result;
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
loadMatchingFeature(
|
|
173
|
-
result: {[_: string]: Array<{ featureIndex: number, feature: GeoJSONFeature }>},
|
|
174
|
-
bucketIndex: number,
|
|
175
|
-
sourceLayerIndex: number,
|
|
176
|
-
featureIndex: number,
|
|
177
|
-
filter: FeatureFilter,
|
|
178
|
-
filterLayerIDs: Array<string>,
|
|
179
|
-
availableImages: Array<string>,
|
|
180
|
-
styleLayers: {[_: string]: StyleLayer},
|
|
181
|
-
serializedLayers: {[_: string]: Object},
|
|
182
|
-
sourceFeatureState?: SourceFeatureState,
|
|
183
|
-
intersectionTest?: (feature: VectorTileFeature, styleLayer: StyleLayer, featureState: Object, id: string | number | void) => boolean | number) {
|
|
184
|
-
|
|
185
|
-
const layerIDs = this.bucketLayerIDs[bucketIndex];
|
|
186
|
-
if (filterLayerIDs && !arraysIntersect(filterLayerIDs, layerIDs))
|
|
187
|
-
return;
|
|
188
|
-
|
|
189
|
-
const sourceLayerName = this.sourceLayerCoder.decode(sourceLayerIndex);
|
|
190
|
-
const sourceLayer = this.vtLayers[sourceLayerName];
|
|
191
|
-
const feature = sourceLayer.feature(featureIndex);
|
|
192
|
-
|
|
193
|
-
if (!filter.filter(new EvaluationParameters(this.tileID.overscaledZ), feature))
|
|
194
|
-
return;
|
|
195
|
-
|
|
196
|
-
const id = this.getId(feature, sourceLayerName);
|
|
197
|
-
const tilecrs = new CanonicalTileID(0, 0, 0)
|
|
198
|
-
|
|
199
|
-
for (let l = 0; l < layerIDs.length; l++) {
|
|
200
|
-
const layerID = layerIDs[l];
|
|
201
|
-
|
|
202
|
-
if (filterLayerIDs && filterLayerIDs.indexOf(layerID) < 0) {
|
|
203
|
-
continue;
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
const styleLayer = styleLayers[layerID];
|
|
207
|
-
|
|
208
|
-
if (!styleLayer) continue;
|
|
209
|
-
|
|
210
|
-
let featureState = {};
|
|
211
|
-
if (id !== undefined && sourceFeatureState) {
|
|
212
|
-
// `feature-state` expression evaluation requires feature state to be available
|
|
213
|
-
featureState = sourceFeatureState.getState(styleLayer.sourceLayer || '_geojsonTileLayer', id);
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
const serializedLayer = serializedLayers[layerID];
|
|
217
|
-
|
|
218
|
-
serializedLayer.paint = evaluateProperties(serializedLayer.paint, styleLayer.paint, feature, featureState, availableImages);
|
|
219
|
-
serializedLayer.layout = evaluateProperties(serializedLayer.layout, styleLayer.layout, feature, featureState, availableImages);
|
|
220
|
-
|
|
221
|
-
const intersectionZ = !intersectionTest || intersectionTest(feature, styleLayer, featureState);
|
|
222
|
-
if (!intersectionZ) {
|
|
223
|
-
// Only applied for non-symbol features
|
|
224
|
-
continue;
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
const geojsonFeature = new GeoJSONFeature(feature, this.z, this.x, this.y, id, tilecrs.getCRS().getEpsgCode());
|
|
228
|
-
(geojsonFeature: any).layer = serializedLayer;
|
|
229
|
-
let layerResult = result[layerID];
|
|
230
|
-
if (layerResult === undefined) {
|
|
231
|
-
layerResult = result[layerID] = [];
|
|
232
|
-
}
|
|
233
|
-
layerResult.push({featureIndex, feature: geojsonFeature, intersectionZ});
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
// Given a set of symbol indexes that have already been looked up,
|
|
238
|
-
// return a matching set of GeoJSONFeatures
|
|
239
|
-
lookupSymbolFeatures(symbolFeatureIndexes: Array<number>,
|
|
240
|
-
serializedLayers: {[string]: StyleLayer},
|
|
241
|
-
bucketIndex: number,
|
|
242
|
-
sourceLayerIndex: number,
|
|
243
|
-
filterSpec: FilterSpecification,
|
|
244
|
-
filterLayerIDs: Array<string>,
|
|
245
|
-
availableImages: Array<string>,
|
|
246
|
-
styleLayers: {[_: string]: StyleLayer}) {
|
|
247
|
-
const result = {};
|
|
248
|
-
this.loadVTLayers();
|
|
249
|
-
|
|
250
|
-
const filter = featureFilter(filterSpec);
|
|
251
|
-
|
|
252
|
-
for (const symbolFeatureIndex of symbolFeatureIndexes) {
|
|
253
|
-
this.loadMatchingFeature(
|
|
254
|
-
result,
|
|
255
|
-
bucketIndex,
|
|
256
|
-
sourceLayerIndex,
|
|
257
|
-
symbolFeatureIndex,
|
|
258
|
-
filter,
|
|
259
|
-
filterLayerIDs,
|
|
260
|
-
availableImages,
|
|
261
|
-
styleLayers,
|
|
262
|
-
serializedLayers
|
|
263
|
-
);
|
|
264
|
-
|
|
265
|
-
}
|
|
266
|
-
return result;
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
hasLayer(id: string) {
|
|
270
|
-
for (const layerIDs of this.bucketLayerIDs) {
|
|
271
|
-
for (const layerID of layerIDs) {
|
|
272
|
-
if (id === layerID) return true;
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
return false;
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
getId(feature: VectorTileFeature, sourceLayerId: string): string | number | void {
|
|
280
|
-
let id = feature.id;
|
|
281
|
-
if (this.promoteId) {
|
|
282
|
-
const propName = typeof this.promoteId === 'string' ? this.promoteId : this.promoteId[sourceLayerId];
|
|
283
|
-
id = feature.properties[propName];
|
|
284
|
-
if (typeof id === 'boolean') id = Number(id);
|
|
285
|
-
}
|
|
286
|
-
return id;
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
register(
|
|
291
|
-
'FeatureIndex',
|
|
292
|
-
FeatureIndex,
|
|
293
|
-
{omit: ['rawTileData', 'sourceLayerCoder']}
|
|
294
|
-
);
|
|
295
|
-
|
|
296
|
-
export default FeatureIndex;
|
|
297
|
-
|
|
298
|
-
function evaluateProperties(serializedProperties, styleLayerProperties, feature, featureState, availableImages) {
|
|
299
|
-
return mapObject(serializedProperties, (property, key) => {
|
|
300
|
-
const prop = styleLayerProperties instanceof PossiblyEvaluated ? styleLayerProperties.get(key) : null;
|
|
301
|
-
return prop && prop.evaluate ? prop.evaluate(feature, featureState, availableImages) : prop;
|
|
302
|
-
});
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
function getBounds(geometry: Array<Point>) {
|
|
306
|
-
let minX = Infinity;
|
|
307
|
-
let minY = Infinity;
|
|
308
|
-
let maxX = -Infinity;
|
|
309
|
-
let maxY = -Infinity;
|
|
310
|
-
for (const p of geometry) {
|
|
311
|
-
minX = Math.min(minX, p.x);
|
|
312
|
-
minY = Math.min(minY, p.y);
|
|
313
|
-
maxX = Math.max(maxX, p.x);
|
|
314
|
-
maxY = Math.max(maxY, p.y);
|
|
315
|
-
}
|
|
316
|
-
return {minX, minY, maxX, maxY};
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
function topDownFeatureComparator(a, b) {
|
|
320
|
-
return b - a;
|
|
321
|
-
}
|