@mapwhit/tilerenderer 0.52.1 → 1.1.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/README.md +7 -0
- package/build/min/package.json +2 -1
- package/build/min/src/shaders/_prelude.fragment.glsl.js +2 -2
- package/build/min/src/shaders/_prelude.vertex.glsl.js +2 -2
- package/build/min/src/shaders/background.fragment.glsl.js +2 -2
- package/build/min/src/shaders/background.vertex.glsl.js +1 -1
- package/build/min/src/shaders/background_pattern.fragment.glsl.js +2 -2
- package/build/min/src/shaders/background_pattern.vertex.glsl.js +1 -1
- package/build/min/src/shaders/circle.fragment.glsl.js +2 -2
- package/build/min/src/shaders/circle.vertex.glsl.js +2 -2
- package/build/min/src/shaders/clipping_mask.fragment.glsl.js +1 -1
- package/build/min/src/shaders/clipping_mask.vertex.glsl.js +1 -1
- package/build/min/src/shaders/collision_box.fragment.glsl.js +1 -1
- package/build/min/src/shaders/collision_box.vertex.glsl.js +1 -1
- package/build/min/src/shaders/collision_circle.fragment.glsl.js +1 -1
- package/build/min/src/shaders/collision_circle.vertex.glsl.js +1 -1
- package/build/min/src/shaders/debug.fragment.glsl.js +1 -1
- package/build/min/src/shaders/debug.vertex.glsl.js +1 -1
- package/build/min/src/shaders/fill.fragment.glsl.js +2 -2
- package/build/min/src/shaders/fill.vertex.glsl.js +2 -2
- package/build/min/src/shaders/fill_extrusion.fragment.glsl.js +2 -2
- package/build/min/src/shaders/fill_extrusion.vertex.glsl.js +2 -2
- package/build/min/src/shaders/fill_extrusion_pattern.fragment.glsl.js +2 -2
- package/build/min/src/shaders/fill_extrusion_pattern.vertex.glsl.js +2 -2
- package/build/min/src/shaders/fill_outline.fragment.glsl.js +2 -2
- package/build/min/src/shaders/fill_outline.vertex.glsl.js +2 -2
- package/build/min/src/shaders/fill_outline_pattern.fragment.glsl.js +2 -2
- package/build/min/src/shaders/fill_outline_pattern.vertex.glsl.js +2 -2
- package/build/min/src/shaders/fill_pattern.fragment.glsl.js +2 -2
- package/build/min/src/shaders/fill_pattern.vertex.glsl.js +2 -2
- package/build/min/src/shaders/heatmap.fragment.glsl.js +2 -2
- package/build/min/src/shaders/heatmap.vertex.glsl.js +2 -2
- package/build/min/src/shaders/heatmap_texture.fragment.glsl.js +2 -2
- package/build/min/src/shaders/heatmap_texture.vertex.glsl.js +1 -1
- package/build/min/src/shaders/hillshade.fragment.glsl.js +2 -2
- package/build/min/src/shaders/hillshade.vertex.glsl.js +1 -1
- package/build/min/src/shaders/hillshade_prepare.fragment.glsl.js +2 -2
- package/build/min/src/shaders/hillshade_prepare.vertex.glsl.js +1 -1
- package/build/min/src/shaders/line.fragment.glsl.js +2 -2
- package/build/min/src/shaders/line.vertex.glsl.js +2 -2
- package/build/min/src/shaders/line_gradient.fragment.glsl.js +2 -2
- package/build/min/src/shaders/line_gradient.vertex.glsl.js +2 -2
- package/build/min/src/shaders/line_pattern.fragment.glsl.js +2 -2
- package/build/min/src/shaders/line_pattern.vertex.glsl.js +2 -2
- package/build/min/src/shaders/line_sdf.fragment.glsl.js +2 -2
- package/build/min/src/shaders/line_sdf.vertex.glsl.js +2 -2
- package/build/min/src/shaders/raster.fragment.glsl.js +2 -2
- package/build/min/src/shaders/raster.vertex.glsl.js +1 -1
- package/build/min/src/shaders/symbol_icon.fragment.glsl.js +2 -2
- package/build/min/src/shaders/symbol_icon.vertex.glsl.js +2 -2
- package/build/min/src/shaders/symbol_sdf.fragment.glsl.js +2 -2
- package/build/min/src/shaders/symbol_sdf.vertex.glsl.js +2 -2
- package/package.json +5 -4
- package/src/data/array_types.js +55 -117
- package/src/data/bucket/circle_attributes.js +2 -4
- package/src/data/bucket/circle_bucket.js +19 -16
- package/src/data/bucket/fill_attributes.js +2 -4
- package/src/data/bucket/fill_bucket.js +38 -27
- package/src/data/bucket/fill_extrusion_attributes.js +2 -4
- package/src/data/bucket/fill_extrusion_bucket.js +56 -37
- package/src/data/bucket/heatmap_bucket.js +2 -11
- package/src/data/bucket/line_attributes.js +2 -4
- package/src/data/bucket/line_bucket.js +208 -163
- package/src/data/bucket/pattern_attributes.js +2 -4
- package/src/data/bucket/pattern_bucket_features.js +7 -9
- package/src/data/bucket/symbol_attributes.js +12 -26
- package/src/data/bucket/symbol_bucket.js +174 -323
- package/src/data/bucket/symbol_buffers.js +62 -0
- package/src/data/bucket/symbol_collision_buffers.js +33 -0
- package/src/data/bucket.js +26 -25
- package/src/data/dem_data.js +11 -10
- package/src/data/extent.js +1 -1
- package/src/data/feature_index.js +38 -28
- package/src/data/index_array_type.js +1 -6
- package/src/data/load_geometry.js +6 -9
- package/src/data/pos_attributes.js +2 -3
- package/src/data/program_configuration.js +47 -38
- package/src/data/raster_bounds_attributes.js +2 -2
- package/src/data/segment.js +4 -7
- package/src/geo/coordinate.js +1 -1
- package/src/geo/lng_lat.js +3 -3
- package/src/geo/lng_lat_bounds.js +8 -4
- package/src/geo/transform.js +69 -30
- package/src/gl/color_mode.js +2 -2
- package/src/gl/context.js +28 -29
- package/src/gl/cull_face_mode.js +1 -1
- package/src/gl/depth_mode.js +1 -1
- package/src/gl/framebuffer.js +8 -4
- package/src/gl/index_buffer.js +2 -2
- package/src/gl/stencil_mode.js +1 -1
- package/src/gl/value.js +33 -68
- package/src/gl/vertex_buffer.js +2 -2
- package/src/index.js +49 -25
- package/src/render/draw_background.js +17 -12
- package/src/render/draw_circle.js +15 -12
- package/src/render/draw_collision_debug.js +11 -8
- package/src/render/draw_debug.js +16 -14
- package/src/render/draw_fill.js +27 -20
- package/src/render/draw_fill_extrusion.js +20 -17
- package/src/render/draw_heatmap.js +21 -16
- package/src/render/draw_hillshade.js +12 -9
- package/src/render/draw_line.js +36 -22
- package/src/render/draw_raster.js +22 -18
- package/src/render/draw_symbol.js +38 -33
- package/src/render/glyph_atlas.js +9 -8
- package/src/render/glyph_manager.js +2 -3
- package/src/render/image_atlas.js +4 -11
- package/src/render/image_manager.js +39 -28
- package/src/render/line_atlas.js +2 -2
- package/src/render/painter.js +78 -61
- package/src/render/program/background_program.js +6 -13
- package/src/render/program/circle_program.js +8 -10
- package/src/render/program/clipping_mask_program.js +3 -5
- package/src/render/program/collision_program.js +4 -6
- package/src/render/program/debug_program.js +3 -5
- package/src/render/program/fill_extrusion_program.js +9 -15
- package/src/render/program/fill_program.js +10 -21
- package/src/render/program/heatmap_program.js +9 -15
- package/src/render/program/hillshade_program.js +16 -22
- package/src/render/program/line_program.js +14 -25
- package/src/render/program/pattern.js +5 -7
- package/src/render/program/program_uniforms.js +13 -20
- package/src/render/program/raster_program.js +9 -11
- package/src/render/program/symbol_program.js +5 -7
- package/src/render/program.js +5 -6
- package/src/render/texture.js +1 -1
- package/src/render/tile_mask.js +6 -4
- package/src/render/uniform_binding.js +9 -20
- package/src/render/vertex_array_object.js +5 -3
- package/src/shaders/encode_attribute.js +2 -6
- package/src/shaders/index.js +103 -51
- package/src/source/geojson_source.js +25 -30
- package/src/source/geojson_worker_source.js +46 -74
- package/src/source/geojson_wrapper.js +13 -5
- package/src/source/image_source.js +17 -28
- package/src/source/load_tilejson.js +3 -3
- package/src/source/pixels_to_tile_units.js +3 -3
- package/src/source/query_features.js +17 -15
- package/src/source/raster_dem_tile_source.js +54 -71
- package/src/source/raster_tile_source.js +14 -15
- package/src/source/resources/glyphs.js +4 -5
- package/src/source/resources/index.js +4 -12
- package/src/source/rtl_text_plugin.js +62 -35
- package/src/source/source.js +14 -22
- package/src/source/source_cache.js +221 -179
- package/src/source/source_state.js +125 -13
- package/src/source/tile.js +67 -66
- package/src/source/tile_bounds.js +36 -29
- package/src/source/tile_cache.js +2 -2
- package/src/source/tile_id.js +30 -26
- package/src/source/vector_tile_source.js +23 -21
- package/src/source/vector_tile_worker_source.js +22 -26
- package/src/source/worker_tile.js +139 -134
- package/src/style/create_style_layer.js +11 -11
- package/src/style/evaluation_parameters.js +4 -6
- package/src/style/light.js +5 -5
- package/src/style/load_sprite.js +6 -6
- package/src/style/parse_glyph_pbf.js +21 -17
- package/src/style/pauseable_placement.js +7 -9
- package/src/style/properties.js +21 -51
- package/src/style/query_utils.js +7 -13
- package/src/style/style.js +314 -221
- package/src/style/style_layer/background_style_layer.js +3 -4
- package/src/style/style_layer/background_style_layer_properties.js +2 -2
- package/src/style/style_layer/circle_style_layer.js +25 -20
- package/src/style/style_layer/circle_style_layer_properties.js +2 -2
- package/src/style/style_layer/fill_extrusion_style_layer.js +55 -37
- package/src/style/style_layer/fill_extrusion_style_layer_properties.js +2 -2
- package/src/style/style_layer/fill_style_layer.js +11 -12
- package/src/style/style_layer/fill_style_layer_properties.js +2 -2
- package/src/style/style_layer/heatmap_style_layer.js +6 -7
- package/src/style/style_layer/heatmap_style_layer_properties.js +2 -2
- package/src/style/style_layer/hillshade_style_layer.js +4 -5
- package/src/style/style_layer/hillshade_style_layer_properties.js +2 -2
- package/src/style/style_layer/line_style_layer.js +33 -30
- package/src/style/style_layer/line_style_layer_properties.js +5 -5
- package/src/style/style_layer/raster_style_layer.js +3 -4
- package/src/style/style_layer/raster_style_layer_properties.js +2 -2
- package/src/style/style_layer/symbol_style_layer.js +20 -21
- package/src/style/style_layer/symbol_style_layer_properties.js +2 -2
- package/src/style/style_layer.js +66 -47
- package/src/style/style_layer_index.js +17 -42
- package/src/style/zoom_history.js +1 -1
- package/src/style-spec/error/parsing_error.js +1 -1
- package/src/style-spec/error/validation_error.js +5 -3
- package/src/style-spec/feature_filter/convert.js +17 -9
- package/src/style-spec/feature_filter/index.js +13 -9
- package/src/style-spec/util/eval_support.js +2 -2
- package/src/style-spec/util/ref_properties.js +1 -1
- package/src/symbol/anchor.js +2 -6
- package/src/symbol/check_max_angle.js +13 -5
- package/src/symbol/clip_line.js +2 -3
- package/src/symbol/collision_feature.js +8 -4
- package/src/symbol/collision_index.js +5 -7
- package/src/symbol/cross_tile_symbol_index.js +7 -10
- package/src/symbol/get_anchors.js +15 -8
- package/src/symbol/grid_index.js +5 -3
- package/src/symbol/mergelines.js +2 -2
- package/src/symbol/opacity_state.js +1 -5
- package/src/symbol/placement.js +28 -23
- package/src/symbol/projection.js +29 -28
- package/src/symbol/quads.js +14 -16
- package/src/symbol/shaping.js +27 -19
- package/src/symbol/symbol_layout.js +24 -28
- package/src/symbol/symbol_size.js +13 -12
- package/src/symbol/transform_text.js +4 -4
- package/src/ui/camera.js +34 -18
- package/src/ui/map.js +102 -44
- package/src/util/async.js +11 -5
- package/src/util/browser.js +1 -1
- package/src/util/callback.js +3 -9
- package/src/util/classify_rings.js +13 -8
- package/src/util/color_ramp.js +3 -3
- package/src/util/config.js +4 -4
- package/src/util/dictionary_coder.js +2 -3
- package/src/util/dom.js +7 -3
- package/src/util/find_pole_of_inaccessibility.js +29 -14
- package/src/util/group_layers.js +41 -0
- package/src/util/image.js +3 -13
- package/src/util/interpolate.js +1 -1
- package/src/util/intersection_tests.js +80 -42
- package/src/util/is_char_in_unicode_block.js +1 -1
- package/src/util/key.js +25 -0
- package/src/util/loader/image.js +1 -1
- package/src/util/object.js +33 -76
- package/src/util/script_detection.js +212 -91
- package/src/util/struct_array.js +8 -40
- package/src/util/task_queue.js +11 -7
- package/src/util/throttle.js +2 -2
- package/src/util/tile_cover.js +8 -5
- package/src/util/token.js +1 -1
- package/src/util/unique_id.js +2 -2
- package/src/util/util.js +21 -29
- package/src/util/vectortile_to_geojson.js +4 -2
- package/src/util/verticalize_punctuation.js +3 -7
- package/src/util/warn.js +4 -4
- package/src/util/web_worker.js +3 -3
- package/src/worker.js +1 -4
- package/src/source/resources/images.js +0 -68
- package/src/source/worker.js +0 -110
- package/src/source/worker_source.js +0 -14
- package/src/style-spec/deref.js +0 -51
- package/src/style-spec/group_by_layout.js +0 -46
- package/src/util/actor.js +0 -108
- package/src/util/dispatcher.js +0 -65
- package/src/util/global_worker_pool.js +0 -15
- package/src/util/transfer_registry.js +0 -168
- package/src/util/web_worker_transfer.js +0 -43
- package/src/util/worker_pool.js +0 -41
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
const properties = require('./background_style_layer_properties');
|
|
1
|
+
import StyleLayer from '../style_layer.js';
|
|
2
|
+
import properties from './background_style_layer_properties.js';
|
|
4
3
|
|
|
5
4
|
class BackgroundStyleLayer extends StyleLayer {
|
|
6
5
|
constructor(layer) {
|
|
@@ -8,4 +7,4 @@ class BackgroundStyleLayer extends StyleLayer {
|
|
|
8
7
|
}
|
|
9
8
|
}
|
|
10
9
|
|
|
11
|
-
|
|
10
|
+
export default BackgroundStyleLayer;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// This file is generated. Edit layer-properties.js.ejs, then run `make generate-style-code`.
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import { CrossFadedProperty, DataConstantProperty, Properties } from '../properties.js';
|
|
4
4
|
|
|
5
5
|
const paint = new Properties({
|
|
6
6
|
'background-color': new DataConstantProperty({
|
|
@@ -22,4 +22,4 @@ const paint = new Properties({
|
|
|
22
22
|
})
|
|
23
23
|
});
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
export default { paint };
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
import glMatrix from '@mapbox/gl-matrix';
|
|
2
|
+
import Point from '@mapbox/point-geometry';
|
|
3
|
+
import CircleBucket from '../../data/bucket/circle_bucket.js';
|
|
4
|
+
import { polygonIntersectsBufferedPoint } from '../../util/intersection_tests.js';
|
|
5
|
+
import { getMaximumPaintValue, translate, translateDistance } from '../query_utils.js';
|
|
6
|
+
import StyleLayer from '../style_layer.js';
|
|
7
|
+
import properties from './circle_style_layer_properties.js';
|
|
2
8
|
|
|
3
|
-
const
|
|
4
|
-
const { polygonIntersectsBufferedPoint } = require('../../util/intersection_tests');
|
|
5
|
-
const { getMaximumPaintValue, translateDistance, translate } = require('../query_utils');
|
|
6
|
-
const properties = require('./circle_style_layer_properties');
|
|
7
|
-
const { vec4 } = require('@mapbox/gl-matrix');
|
|
8
|
-
const { default: Point } = require('@mapbox/point-geometry');
|
|
9
|
+
const { vec4 } = glMatrix;
|
|
9
10
|
|
|
10
11
|
class CircleStyleLayer extends StyleLayer {
|
|
11
12
|
constructor(layer) {
|
|
@@ -21,7 +22,7 @@ class CircleStyleLayer extends StyleLayer {
|
|
|
21
22
|
return (
|
|
22
23
|
getMaximumPaintValue('circle-radius', this, circleBucket) +
|
|
23
24
|
getMaximumPaintValue('circle-stroke-width', this, circleBucket) +
|
|
24
|
-
translateDistance(this.
|
|
25
|
+
translateDistance(this._paint.get('circle-translate'))
|
|
25
26
|
);
|
|
26
27
|
}
|
|
27
28
|
|
|
@@ -37,24 +38,29 @@ class CircleStyleLayer extends StyleLayer {
|
|
|
37
38
|
) {
|
|
38
39
|
const translatedPolygon = translate(
|
|
39
40
|
queryGeometry,
|
|
40
|
-
this.
|
|
41
|
-
this.
|
|
41
|
+
this._paint.get('circle-translate'),
|
|
42
|
+
this._paint.get('circle-translate-anchor'),
|
|
42
43
|
transform.angle,
|
|
43
44
|
pixelsToTileUnits
|
|
44
45
|
);
|
|
45
|
-
const radius = this.
|
|
46
|
-
const stroke = this.
|
|
46
|
+
const radius = this._paint.get('circle-radius').evaluate(feature, featureState);
|
|
47
|
+
const stroke = this._paint.get('circle-stroke-width').evaluate(feature, featureState);
|
|
47
48
|
const size = radius + stroke;
|
|
48
49
|
|
|
49
50
|
// For pitch-alignment: map, compare feature geometry to query geometry in the plane of the tile
|
|
50
51
|
// // Otherwise, compare geometry in the plane of the viewport
|
|
51
52
|
// // A circle with fixed scaling relative to the viewport gets larger in tile space as it moves into the distance
|
|
52
53
|
// // A circle with fixed scaling relative to the map gets smaller in viewport space as it moves into the distance
|
|
53
|
-
const
|
|
54
|
+
const pitchScale = this._paint.get('circle-pitch-scale');
|
|
55
|
+
const pitchAlignment = this._paint.get('circle-pitch-alignment');
|
|
56
|
+
const alignWithMap = pitchAlignment === 'map';
|
|
57
|
+
const alignWithViewport = pitchAlignment === 'viewport';
|
|
54
58
|
const transformedPolygon = alignWithMap
|
|
55
59
|
? translatedPolygon
|
|
56
60
|
: projectQueryGeometry(translatedPolygon, pixelPosMatrix);
|
|
57
61
|
const transformedSize = alignWithMap ? size * pixelsToTileUnits : size;
|
|
62
|
+
const adjustViewportToMap = pitchScale === 'viewport' && alignWithMap;
|
|
63
|
+
const adjustMapToViewport = pitchScale === 'map' && alignWithViewport;
|
|
58
64
|
|
|
59
65
|
for (const ring of geometry) {
|
|
60
66
|
for (const point of ring) {
|
|
@@ -62,16 +68,15 @@ class CircleStyleLayer extends StyleLayer {
|
|
|
62
68
|
|
|
63
69
|
let adjustedSize = transformedSize;
|
|
64
70
|
const projectedCenter = vec4.transformMat4([], [point.x, point.y, 0, 1], pixelPosMatrix);
|
|
65
|
-
if (
|
|
71
|
+
if (adjustViewportToMap) {
|
|
66
72
|
adjustedSize *= projectedCenter[3] / transform.cameraToCenterDistance;
|
|
67
|
-
} else if (
|
|
68
|
-
this.paint.get('circle-pitch-scale') === 'map' &&
|
|
69
|
-
this.paint.get('circle-pitch-alignment') === 'viewport'
|
|
70
|
-
) {
|
|
73
|
+
} else if (adjustMapToViewport) {
|
|
71
74
|
adjustedSize *= transform.cameraToCenterDistance / projectedCenter[3];
|
|
72
75
|
}
|
|
73
76
|
|
|
74
|
-
if (polygonIntersectsBufferedPoint(transformedPolygon, transformedPoint, adjustedSize))
|
|
77
|
+
if (polygonIntersectsBufferedPoint(transformedPolygon, transformedPoint, adjustedSize)) {
|
|
78
|
+
return true;
|
|
79
|
+
}
|
|
75
80
|
}
|
|
76
81
|
}
|
|
77
82
|
|
|
@@ -90,4 +95,4 @@ function projectQueryGeometry(queryGeometry, pixelPosMatrix) {
|
|
|
90
95
|
});
|
|
91
96
|
}
|
|
92
97
|
|
|
93
|
-
|
|
98
|
+
export default CircleStyleLayer;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// This file is generated. Edit layer-properties.js.ejs, then run `make generate-style-code`.
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import { DataConstantProperty, DataDrivenProperty, Properties } from '../properties.js';
|
|
4
4
|
|
|
5
5
|
const paint = new Properties({
|
|
6
6
|
'circle-radius': new DataDrivenProperty({
|
|
@@ -73,4 +73,4 @@ const paint = new Properties({
|
|
|
73
73
|
})
|
|
74
74
|
});
|
|
75
75
|
|
|
76
|
-
|
|
76
|
+
export default { paint };
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
import glMatrix from '@mapbox/gl-matrix';
|
|
2
|
+
import Point from '@mapbox/point-geometry';
|
|
3
|
+
import FillExtrusionBucket from '../../data/bucket/fill_extrusion_bucket.js';
|
|
4
|
+
import { polygonIntersectsMultiPolygon, polygonIntersectsPolygon } from '../../util/intersection_tests.js';
|
|
5
|
+
import { translate, translateDistance } from '../query_utils.js';
|
|
6
|
+
import StyleLayer from '../style_layer.js';
|
|
7
|
+
import properties from './fill_extrusion_style_layer_properties.js';
|
|
2
8
|
|
|
3
|
-
const
|
|
4
|
-
const { polygonIntersectsPolygon, polygonIntersectsMultiPolygon } = require('../../util/intersection_tests');
|
|
5
|
-
const { translateDistance, translate } = require('../query_utils');
|
|
6
|
-
const properties = require('./fill_extrusion_style_layer_properties');
|
|
7
|
-
const { vec4 } = require('@mapbox/gl-matrix');
|
|
8
|
-
const { default: Point } = require('@mapbox/point-geometry');
|
|
9
|
+
const { vec4 } = glMatrix;
|
|
9
10
|
|
|
10
|
-
class FillExtrusionStyleLayer extends StyleLayer {
|
|
11
|
+
export class FillExtrusionStyleLayer extends StyleLayer {
|
|
11
12
|
constructor(layer) {
|
|
12
13
|
super(layer, properties);
|
|
13
14
|
}
|
|
@@ -17,7 +18,7 @@ class FillExtrusionStyleLayer extends StyleLayer {
|
|
|
17
18
|
}
|
|
18
19
|
|
|
19
20
|
queryRadius() {
|
|
20
|
-
return translateDistance(this.
|
|
21
|
+
return translateDistance(this._paint.get('fill-extrusion-translate'));
|
|
21
22
|
}
|
|
22
23
|
|
|
23
24
|
is3D() {
|
|
@@ -36,13 +37,13 @@ class FillExtrusionStyleLayer extends StyleLayer {
|
|
|
36
37
|
) {
|
|
37
38
|
const translatedPolygon = translate(
|
|
38
39
|
queryGeometry,
|
|
39
|
-
this.
|
|
40
|
-
this.
|
|
40
|
+
this._paint.get('fill-extrusion-translate'),
|
|
41
|
+
this._paint.get('fill-extrusion-translate-anchor'),
|
|
41
42
|
transform.angle,
|
|
42
43
|
pixelsToTileUnits
|
|
43
44
|
);
|
|
44
|
-
const height = this.
|
|
45
|
-
const base = this.
|
|
45
|
+
const height = this._paint.get('fill-extrusion-height').evaluate(feature, featureState);
|
|
46
|
+
const base = this._paint.get('fill-extrusion-base').evaluate(feature, featureState);
|
|
46
47
|
|
|
47
48
|
const projectedQueryGeometry = projectQueryGeometry(translatedPolygon, pixelPosMatrix, transform, 0);
|
|
48
49
|
|
|
@@ -57,7 +58,7 @@ function dot(a, b) {
|
|
|
57
58
|
return a.x * b.x + a.y * b.y;
|
|
58
59
|
}
|
|
59
60
|
|
|
60
|
-
function getIntersectionDistance(projectedQueryGeometry, projectedFace) {
|
|
61
|
+
export function getIntersectionDistance(projectedQueryGeometry, projectedFace) {
|
|
61
62
|
if (projectedQueryGeometry.length === 1) {
|
|
62
63
|
// For point queries calculate the z at which the point intersects the face
|
|
63
64
|
// using barycentric coordinates.
|
|
@@ -66,27 +67,46 @@ function getIntersectionDistance(projectedQueryGeometry, projectedFace) {
|
|
|
66
67
|
// triangle of the face, using only the xy plane. It doesn't matter if the
|
|
67
68
|
// point is outside the first triangle because all the triangles in the face
|
|
68
69
|
// are in the same plane.
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
70
|
+
//
|
|
71
|
+
// Check whether points are coincident and use other points if they are.
|
|
72
|
+
let i = 0;
|
|
73
|
+
const a = projectedFace[i++];
|
|
74
|
+
let b;
|
|
75
|
+
while (!b || a.equals(b)) {
|
|
76
|
+
b = projectedFace[i++];
|
|
77
|
+
if (!b) {
|
|
78
|
+
return Number.POSITIVE_INFINITY;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// Loop until point `c` is not colinear with points `a` and `b`.
|
|
83
|
+
for (; i < projectedFace.length; i++) {
|
|
84
|
+
const c = projectedFace[i];
|
|
85
|
+
const p = projectedQueryGeometry[0];
|
|
86
|
+
|
|
87
|
+
const ab = b.sub(a);
|
|
88
|
+
const ac = c.sub(a);
|
|
89
|
+
const ap = p.sub(a);
|
|
90
|
+
|
|
91
|
+
const dotABAB = dot(ab, ab);
|
|
92
|
+
const dotABAC = dot(ab, ac);
|
|
93
|
+
const dotACAC = dot(ac, ac);
|
|
94
|
+
const dotAPAB = dot(ap, ab);
|
|
95
|
+
const dotAPAC = dot(ap, ac);
|
|
96
|
+
const denom = dotABAB * dotACAC - dotABAC * dotABAC;
|
|
97
|
+
|
|
98
|
+
const v = (dotACAC * dotAPAB - dotABAC * dotAPAC) / denom;
|
|
99
|
+
const w = (dotABAB * dotAPAC - dotABAC * dotAPAB) / denom;
|
|
100
|
+
const u = 1 - v - w;
|
|
101
|
+
|
|
102
|
+
// Use the barycentric weighting along with the original triangle z coordinates to get the point of intersection.
|
|
103
|
+
const distance = a.z * u + b.z * v + c.z * w;
|
|
104
|
+
|
|
105
|
+
if (Number.isFinite(distance)) {
|
|
106
|
+
return distance;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return Number.POSITIVE_INFINITY;
|
|
90
110
|
}
|
|
91
111
|
// The counts as closest is less clear when the query is a box. This
|
|
92
112
|
// returns the distance to the nearest point on the face, whether it is
|
|
@@ -190,5 +210,3 @@ function projectQueryGeometry(queryGeometry, pixelPosMatrix, transform, z) {
|
|
|
190
210
|
}
|
|
191
211
|
return projectedQueryGeometry;
|
|
192
212
|
}
|
|
193
|
-
|
|
194
|
-
module.exports = FillExtrusionStyleLayer;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// This file is generated. Edit layer-properties.js.ejs, then run `make generate-style-code`.
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import { CrossFadedDataDrivenProperty, DataConstantProperty, DataDrivenProperty, Properties } from '../properties.js';
|
|
4
4
|
|
|
5
5
|
const paint = new Properties({
|
|
6
6
|
'fill-extrusion-opacity': new DataConstantProperty({
|
|
@@ -53,4 +53,4 @@ const paint = new Properties({
|
|
|
53
53
|
})
|
|
54
54
|
});
|
|
55
55
|
|
|
56
|
-
|
|
56
|
+
export default { paint };
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const properties = require('./fill_style_layer_properties');
|
|
1
|
+
import FillBucket from '../../data/bucket/fill_bucket.js';
|
|
2
|
+
import { polygonIntersectsMultiPolygon } from '../../util/intersection_tests.js';
|
|
3
|
+
import { translate, translateDistance } from '../query_utils.js';
|
|
4
|
+
import StyleLayer from '../style_layer.js';
|
|
5
|
+
import properties from './fill_style_layer_properties.js';
|
|
7
6
|
|
|
8
7
|
class FillStyleLayer extends StyleLayer {
|
|
9
8
|
constructor(layer) {
|
|
@@ -13,9 +12,9 @@ class FillStyleLayer extends StyleLayer {
|
|
|
13
12
|
recalculate(parameters) {
|
|
14
13
|
super.recalculate(parameters);
|
|
15
14
|
|
|
16
|
-
const outlineColor = this.
|
|
15
|
+
const outlineColor = this._paint._values['fill-outline-color'];
|
|
17
16
|
if (outlineColor.value.kind === 'constant' && outlineColor.value.value === undefined) {
|
|
18
|
-
this.
|
|
17
|
+
this._paint._values['fill-outline-color'] = this._paint._values['fill-color'];
|
|
19
18
|
}
|
|
20
19
|
}
|
|
21
20
|
|
|
@@ -24,14 +23,14 @@ class FillStyleLayer extends StyleLayer {
|
|
|
24
23
|
}
|
|
25
24
|
|
|
26
25
|
queryRadius() {
|
|
27
|
-
return translateDistance(this.
|
|
26
|
+
return translateDistance(this._paint.get('fill-translate'));
|
|
28
27
|
}
|
|
29
28
|
|
|
30
29
|
queryIntersectsFeature(queryGeometry, feature, featureState, geometry, zoom, transform, pixelsToTileUnits) {
|
|
31
30
|
const translatedPolygon = translate(
|
|
32
31
|
queryGeometry,
|
|
33
|
-
this.
|
|
34
|
-
this.
|
|
32
|
+
this._paint.get('fill-translate'),
|
|
33
|
+
this._paint.get('fill-translate-anchor'),
|
|
35
34
|
transform.angle,
|
|
36
35
|
pixelsToTileUnits
|
|
37
36
|
);
|
|
@@ -43,4 +42,4 @@ class FillStyleLayer extends StyleLayer {
|
|
|
43
42
|
}
|
|
44
43
|
}
|
|
45
44
|
|
|
46
|
-
|
|
45
|
+
export default FillStyleLayer;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// This file is generated. Edit layer-properties.js.ejs, then run `make generate-style-code`.
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import { CrossFadedDataDrivenProperty, DataConstantProperty, DataDrivenProperty, Properties } from '../properties.js';
|
|
4
4
|
|
|
5
5
|
const paint = new Properties({
|
|
6
6
|
'fill-antialias': new DataConstantProperty({ type: 'boolean', default: true, expression: { parameters: ['zoom'] } }),
|
|
@@ -42,4 +42,4 @@ const paint = new Properties({
|
|
|
42
42
|
})
|
|
43
43
|
});
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
export default { paint };
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const renderColorRamp = require('../../util/color_ramp');
|
|
1
|
+
import HeatmapBucket from '../../data/bucket/heatmap_bucket.js';
|
|
2
|
+
import renderColorRamp from '../../util/color_ramp.js';
|
|
3
|
+
import StyleLayer from '../style_layer.js';
|
|
4
|
+
import properties from './heatmap_style_layer_properties.js';
|
|
6
5
|
|
|
7
6
|
class HeatmapStyleLayer extends StyleLayer {
|
|
8
7
|
createBucket(options) {
|
|
@@ -44,8 +43,8 @@ class HeatmapStyleLayer extends StyleLayer {
|
|
|
44
43
|
}
|
|
45
44
|
|
|
46
45
|
hasOffscreenPass() {
|
|
47
|
-
return this.
|
|
46
|
+
return this._paint.get('heatmap-opacity') !== 0 && this.visibility !== 'none';
|
|
48
47
|
}
|
|
49
48
|
}
|
|
50
49
|
|
|
51
|
-
|
|
50
|
+
export default HeatmapStyleLayer;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// This file is generated. Edit layer-properties.js.ejs, then run `make generate-style-code`.
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import { ColorRampProperty, DataConstantProperty, DataDrivenProperty, Properties } from '../properties.js';
|
|
4
4
|
|
|
5
5
|
const paint = new Properties({
|
|
6
6
|
'heatmap-radius': new DataDrivenProperty({
|
|
@@ -49,4 +49,4 @@ const paint = new Properties({
|
|
|
49
49
|
})
|
|
50
50
|
});
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
export default { paint };
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
const properties = require('./hillshade_style_layer_properties');
|
|
1
|
+
import StyleLayer from '../style_layer.js';
|
|
2
|
+
import properties from './hillshade_style_layer_properties.js';
|
|
4
3
|
|
|
5
4
|
class HillshadeStyleLayer extends StyleLayer {
|
|
6
5
|
constructor(layer) {
|
|
@@ -8,8 +7,8 @@ class HillshadeStyleLayer extends StyleLayer {
|
|
|
8
7
|
}
|
|
9
8
|
|
|
10
9
|
hasOffscreenPass() {
|
|
11
|
-
return this.
|
|
10
|
+
return this._paint.get('hillshade-exaggeration') !== 0 && this.visibility !== 'none';
|
|
12
11
|
}
|
|
13
12
|
}
|
|
14
13
|
|
|
15
|
-
|
|
14
|
+
export default HillshadeStyleLayer;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// This file is generated. Edit layer-properties.js.ejs, then run `make generate-style-code`.
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import { DataConstantProperty, Properties } from '../properties.js';
|
|
4
4
|
|
|
5
5
|
const paint = new Properties({
|
|
6
6
|
'hillshade-illumination-direction': new DataConstantProperty({
|
|
@@ -40,4 +40,4 @@ const paint = new Properties({
|
|
|
40
40
|
})
|
|
41
41
|
});
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
export default { paint };
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const { DataDrivenProperty } = require('../properties');
|
|
1
|
+
import Point from '@mapbox/point-geometry';
|
|
2
|
+
import LineBucket from '../../data/bucket/line_bucket.js';
|
|
3
|
+
import renderColorRamp from '../../util/color_ramp.js';
|
|
4
|
+
import { polygonIntersectsBufferedMultiLine } from '../../util/intersection_tests.js';
|
|
5
|
+
import EvaluationParameters from '../evaluation_parameters.js';
|
|
6
|
+
import { DataDrivenProperty } from '../properties.js';
|
|
7
|
+
import { getMaximumPaintValue, translate, translateDistance } from '../query_utils.js';
|
|
8
|
+
import StyleLayer from '../style_layer.js';
|
|
9
|
+
import properties from './line_style_layer_properties.js';
|
|
11
10
|
|
|
12
11
|
class LineFloorwidthProperty extends DataDrivenProperty {
|
|
13
12
|
possiblyEvaluate(value, parameters) {
|
|
@@ -49,7 +48,7 @@ class LineStyleLayer extends StyleLayer {
|
|
|
49
48
|
recalculate(parameters) {
|
|
50
49
|
super.recalculate(parameters);
|
|
51
50
|
|
|
52
|
-
this.
|
|
51
|
+
this._paint._values['line-floorwidth'] = lineFloorwidthProperty.possiblyEvaluate(
|
|
53
52
|
this._transitioningPaint._values['line-width'].value,
|
|
54
53
|
parameters
|
|
55
54
|
);
|
|
@@ -66,24 +65,24 @@ class LineStyleLayer extends StyleLayer {
|
|
|
66
65
|
getMaximumPaintValue('line-gap-width', this, lineBucket)
|
|
67
66
|
);
|
|
68
67
|
const offset = getMaximumPaintValue('line-offset', this, lineBucket);
|
|
69
|
-
return width / 2 + Math.abs(offset) + translateDistance(this.
|
|
68
|
+
return width / 2 + Math.abs(offset) + translateDistance(this._paint.get('line-translate'));
|
|
70
69
|
}
|
|
71
70
|
|
|
72
71
|
queryIntersectsFeature(queryGeometry, feature, featureState, geometry, zoom, transform, pixelsToTileUnits) {
|
|
73
72
|
const translatedPolygon = translate(
|
|
74
73
|
queryGeometry,
|
|
75
|
-
this.
|
|
76
|
-
this.
|
|
74
|
+
this._paint.get('line-translate'),
|
|
75
|
+
this._paint.get('line-translate-anchor'),
|
|
77
76
|
transform.angle,
|
|
78
77
|
pixelsToTileUnits
|
|
79
78
|
);
|
|
80
79
|
const halfWidth =
|
|
81
80
|
(pixelsToTileUnits / 2) *
|
|
82
81
|
getLineWidth(
|
|
83
|
-
this.
|
|
84
|
-
this.
|
|
82
|
+
this._paint.get('line-width').evaluate(feature, featureState),
|
|
83
|
+
this._paint.get('line-gap-width').evaluate(feature, featureState)
|
|
85
84
|
);
|
|
86
|
-
const lineOffset = this.
|
|
85
|
+
const lineOffset = this._paint.get('line-offset').evaluate(feature, featureState);
|
|
87
86
|
if (lineOffset) {
|
|
88
87
|
geometry = offsetLine(geometry, lineOffset * pixelsToTileUnits);
|
|
89
88
|
}
|
|
@@ -95,7 +94,7 @@ class LineStyleLayer extends StyleLayer {
|
|
|
95
94
|
}
|
|
96
95
|
}
|
|
97
96
|
|
|
98
|
-
|
|
97
|
+
export default LineStyleLayer;
|
|
99
98
|
|
|
100
99
|
function getLineWidth(lineWidth, lineGapWidth) {
|
|
101
100
|
if (lineGapWidth > 0) {
|
|
@@ -105,25 +104,29 @@ function getLineWidth(lineWidth, lineGapWidth) {
|
|
|
105
104
|
}
|
|
106
105
|
|
|
107
106
|
function offsetLine(rings, offset) {
|
|
108
|
-
const newRings =
|
|
109
|
-
const zero = new Point(0, 0);
|
|
107
|
+
const newRings = new Array(rings.length);
|
|
110
108
|
for (let k = 0; k < rings.length; k++) {
|
|
111
109
|
const ring = rings[k];
|
|
112
|
-
const newRing =
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
110
|
+
const newRing = new Array(ring.length);
|
|
111
|
+
newRings[k] = newRing;
|
|
112
|
+
|
|
113
|
+
let b = ring[0];
|
|
114
|
+
let aToB = new Point(0, 0);
|
|
115
|
+
for (let i = 0; i < ring.length - 1; i++) {
|
|
116
116
|
const c = ring[i + 1];
|
|
117
|
-
const
|
|
118
|
-
const bToC = i === ring.length - 1 ? zero : c.sub(b)._unit()._perp();
|
|
117
|
+
const bToC = c.sub(b)._unit()._perp();
|
|
119
118
|
const extrude = aToB._add(bToC)._unit();
|
|
120
|
-
|
|
121
119
|
const cosHalfAngle = extrude.x * bToC.x + extrude.y * bToC.y;
|
|
122
|
-
|
|
120
|
+
if (cosHalfAngle !== 0) {
|
|
121
|
+
extrude._div(cosHalfAngle);
|
|
122
|
+
}
|
|
123
|
+
newRing[i] = extrude._mult(offset)._add(b);
|
|
123
124
|
|
|
124
|
-
|
|
125
|
+
b = c;
|
|
126
|
+
aToB = bToC;
|
|
125
127
|
}
|
|
126
|
-
|
|
128
|
+
|
|
129
|
+
newRing[ring.length - 1] = aToB._unit()._mult(offset)._add(b);
|
|
127
130
|
}
|
|
128
131
|
return newRings;
|
|
129
132
|
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
// This file is generated. Edit layer-properties.js.ejs, then run `make generate-style-code`.
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
Properties,
|
|
3
|
+
import {
|
|
5
4
|
ColorRampProperty,
|
|
6
5
|
CrossFadedDataDrivenProperty,
|
|
7
6
|
CrossFadedProperty,
|
|
8
7
|
DataConstantProperty,
|
|
9
|
-
DataDrivenProperty
|
|
10
|
-
|
|
8
|
+
DataDrivenProperty,
|
|
9
|
+
Properties
|
|
10
|
+
} from '../properties.js';
|
|
11
11
|
|
|
12
12
|
const layout = new Properties({
|
|
13
13
|
'line-cap': new DataConstantProperty({
|
|
@@ -101,4 +101,4 @@ const paint = new Properties({
|
|
|
101
101
|
})
|
|
102
102
|
});
|
|
103
103
|
|
|
104
|
-
|
|
104
|
+
export default { paint, layout };
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
const properties = require('./raster_style_layer_properties');
|
|
1
|
+
import StyleLayer from '../style_layer.js';
|
|
2
|
+
import properties from './raster_style_layer_properties.js';
|
|
4
3
|
|
|
5
4
|
class RasterStyleLayer extends StyleLayer {
|
|
6
5
|
constructor(layer) {
|
|
@@ -8,4 +7,4 @@ class RasterStyleLayer extends StyleLayer {
|
|
|
8
7
|
}
|
|
9
8
|
}
|
|
10
9
|
|
|
11
|
-
|
|
10
|
+
export default RasterStyleLayer;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// This file is generated. Edit layer-properties.js.ejs, then run `make generate-style-code`.
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import { DataConstantProperty, Properties } from '../properties.js';
|
|
4
4
|
|
|
5
5
|
const paint = new Properties({
|
|
6
6
|
'raster-opacity': new DataConstantProperty({
|
|
@@ -52,4 +52,4 @@ const paint = new Properties({
|
|
|
52
52
|
})
|
|
53
53
|
});
|
|
54
54
|
|
|
55
|
-
|
|
55
|
+
export default { paint };
|