@mapwhit/tilerenderer 0.52.1 → 1.0.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.
Files changed (142) hide show
  1. package/README.md +7 -0
  2. package/build/min/package.json +1 -1
  3. package/build/min/src/shaders/_prelude.fragment.glsl.js +2 -2
  4. package/build/min/src/shaders/_prelude.vertex.glsl.js +2 -2
  5. package/build/min/src/shaders/background.fragment.glsl.js +2 -2
  6. package/build/min/src/shaders/background.vertex.glsl.js +1 -1
  7. package/build/min/src/shaders/background_pattern.fragment.glsl.js +2 -2
  8. package/build/min/src/shaders/background_pattern.vertex.glsl.js +1 -1
  9. package/build/min/src/shaders/circle.fragment.glsl.js +2 -2
  10. package/build/min/src/shaders/circle.vertex.glsl.js +2 -2
  11. package/build/min/src/shaders/clipping_mask.fragment.glsl.js +1 -1
  12. package/build/min/src/shaders/clipping_mask.vertex.glsl.js +1 -1
  13. package/build/min/src/shaders/collision_box.fragment.glsl.js +1 -1
  14. package/build/min/src/shaders/collision_box.vertex.glsl.js +1 -1
  15. package/build/min/src/shaders/collision_circle.fragment.glsl.js +1 -1
  16. package/build/min/src/shaders/collision_circle.vertex.glsl.js +1 -1
  17. package/build/min/src/shaders/debug.fragment.glsl.js +1 -1
  18. package/build/min/src/shaders/debug.vertex.glsl.js +1 -1
  19. package/build/min/src/shaders/fill.fragment.glsl.js +2 -2
  20. package/build/min/src/shaders/fill.vertex.glsl.js +2 -2
  21. package/build/min/src/shaders/fill_extrusion.fragment.glsl.js +2 -2
  22. package/build/min/src/shaders/fill_extrusion.vertex.glsl.js +2 -2
  23. package/build/min/src/shaders/fill_extrusion_pattern.fragment.glsl.js +2 -2
  24. package/build/min/src/shaders/fill_extrusion_pattern.vertex.glsl.js +2 -2
  25. package/build/min/src/shaders/fill_outline.fragment.glsl.js +2 -2
  26. package/build/min/src/shaders/fill_outline.vertex.glsl.js +2 -2
  27. package/build/min/src/shaders/fill_outline_pattern.fragment.glsl.js +2 -2
  28. package/build/min/src/shaders/fill_outline_pattern.vertex.glsl.js +2 -2
  29. package/build/min/src/shaders/fill_pattern.fragment.glsl.js +2 -2
  30. package/build/min/src/shaders/fill_pattern.vertex.glsl.js +2 -2
  31. package/build/min/src/shaders/heatmap.fragment.glsl.js +2 -2
  32. package/build/min/src/shaders/heatmap.vertex.glsl.js +2 -2
  33. package/build/min/src/shaders/heatmap_texture.fragment.glsl.js +2 -2
  34. package/build/min/src/shaders/heatmap_texture.vertex.glsl.js +1 -1
  35. package/build/min/src/shaders/hillshade.fragment.glsl.js +2 -2
  36. package/build/min/src/shaders/hillshade.vertex.glsl.js +1 -1
  37. package/build/min/src/shaders/hillshade_prepare.fragment.glsl.js +2 -2
  38. package/build/min/src/shaders/hillshade_prepare.vertex.glsl.js +1 -1
  39. package/build/min/src/shaders/line.fragment.glsl.js +2 -2
  40. package/build/min/src/shaders/line.vertex.glsl.js +2 -2
  41. package/build/min/src/shaders/line_gradient.fragment.glsl.js +2 -2
  42. package/build/min/src/shaders/line_gradient.vertex.glsl.js +2 -2
  43. package/build/min/src/shaders/line_pattern.fragment.glsl.js +2 -2
  44. package/build/min/src/shaders/line_pattern.vertex.glsl.js +2 -2
  45. package/build/min/src/shaders/line_sdf.fragment.glsl.js +2 -2
  46. package/build/min/src/shaders/line_sdf.vertex.glsl.js +2 -2
  47. package/build/min/src/shaders/raster.fragment.glsl.js +2 -2
  48. package/build/min/src/shaders/raster.vertex.glsl.js +1 -1
  49. package/build/min/src/shaders/symbol_icon.fragment.glsl.js +2 -2
  50. package/build/min/src/shaders/symbol_icon.vertex.glsl.js +2 -2
  51. package/build/min/src/shaders/symbol_sdf.fragment.glsl.js +2 -2
  52. package/build/min/src/shaders/symbol_sdf.vertex.glsl.js +2 -2
  53. package/package.json +3 -3
  54. package/src/data/array_types.js +1 -36
  55. package/src/data/bucket/circle_bucket.js +0 -3
  56. package/src/data/bucket/fill_bucket.js +0 -3
  57. package/src/data/bucket/fill_extrusion_bucket.js +0 -3
  58. package/src/data/bucket/heatmap_bucket.js +0 -4
  59. package/src/data/bucket/line_bucket.js +1 -4
  60. package/src/data/bucket/pattern_bucket_features.js +2 -2
  61. package/src/data/bucket/symbol_bucket.js +87 -126
  62. package/src/data/bucket.js +26 -21
  63. package/src/data/dem_data.js +0 -3
  64. package/src/data/feature_index.js +3 -8
  65. package/src/data/program_configuration.js +3 -12
  66. package/src/data/segment.js +0 -4
  67. package/src/render/draw_background.js +3 -3
  68. package/src/render/draw_circle.js +4 -4
  69. package/src/render/draw_fill.js +8 -8
  70. package/src/render/draw_fill_extrusion.js +8 -8
  71. package/src/render/draw_heatmap.js +4 -4
  72. package/src/render/draw_line.js +6 -6
  73. package/src/render/draw_raster.js +6 -6
  74. package/src/render/draw_symbol.js +16 -16
  75. package/src/render/glyph_atlas.js +0 -3
  76. package/src/render/glyph_manager.js +1 -2
  77. package/src/render/image_atlas.js +0 -4
  78. package/src/render/image_manager.js +33 -19
  79. package/src/render/painter.js +13 -14
  80. package/src/render/program/circle_program.js +4 -4
  81. package/src/render/program/fill_extrusion_program.js +1 -1
  82. package/src/render/program/heatmap_program.js +1 -1
  83. package/src/render/program/hillshade_program.js +6 -6
  84. package/src/render/program/line_program.js +3 -3
  85. package/src/render/program/raster_program.js +6 -6
  86. package/src/source/geojson_source.js +15 -24
  87. package/src/source/geojson_worker_source.js +40 -68
  88. package/src/source/geojson_wrapper.js +9 -1
  89. package/src/source/image_source.js +6 -16
  90. package/src/source/query_features.js +4 -5
  91. package/src/source/raster_dem_tile_source.js +45 -64
  92. package/src/source/raster_tile_source.js +1 -6
  93. package/src/source/resources/glyphs.js +2 -2
  94. package/src/source/resources/index.js +3 -9
  95. package/src/source/rtl_text_plugin.js +58 -31
  96. package/src/source/source.js +11 -13
  97. package/src/source/source_cache.js +135 -151
  98. package/src/source/source_state.js +101 -12
  99. package/src/source/tile.js +32 -46
  100. package/src/source/tile_bounds.js +26 -26
  101. package/src/source/tile_id.js +2 -5
  102. package/src/source/vector_tile_source.js +14 -14
  103. package/src/source/vector_tile_worker_source.js +19 -23
  104. package/src/source/worker_tile.js +120 -117
  105. package/src/style/create_style_layer.js +1 -1
  106. package/src/style/pauseable_placement.js +4 -5
  107. package/src/style/properties.js +1 -8
  108. package/src/style/query_utils.js +3 -3
  109. package/src/style/style.js +263 -195
  110. package/src/style/style_layer/circle_style_layer.js +13 -11
  111. package/src/style/style_layer/fill_extrusion_style_layer.js +42 -27
  112. package/src/style/style_layer/fill_style_layer.js +5 -5
  113. package/src/style/style_layer/heatmap_style_layer.js +1 -1
  114. package/src/style/style_layer/hillshade_style_layer.js +1 -1
  115. package/src/style/style_layer/line_style_layer.js +23 -19
  116. package/src/style/style_layer/symbol_style_layer.js +13 -13
  117. package/src/style/style_layer.js +48 -30
  118. package/src/style/style_layer_index.js +16 -41
  119. package/src/symbol/anchor.js +0 -4
  120. package/src/symbol/cross_tile_symbol_index.js +2 -5
  121. package/src/symbol/opacity_state.js +0 -4
  122. package/src/symbol/placement.js +3 -3
  123. package/src/symbol/quads.js +4 -4
  124. package/src/symbol/symbol_layout.js +7 -7
  125. package/src/symbol/transform_text.js +1 -1
  126. package/src/ui/map.js +49 -11
  127. package/src/util/group_layers.js +41 -0
  128. package/src/util/image.js +0 -5
  129. package/src/util/key.js +21 -0
  130. package/src/util/object.js +8 -53
  131. package/src/worker.js +1 -4
  132. package/src/source/resources/images.js +0 -68
  133. package/src/source/worker.js +0 -110
  134. package/src/source/worker_source.js +0 -14
  135. package/src/style-spec/deref.js +0 -51
  136. package/src/style-spec/group_by_layout.js +0 -46
  137. package/src/util/actor.js +0 -108
  138. package/src/util/dispatcher.js +0 -65
  139. package/src/util/global_worker_pool.js +0 -15
  140. package/src/util/transfer_registry.js +0 -168
  141. package/src/util/web_worker_transfer.js +0 -43
  142. package/src/util/worker_pool.js +0 -41
@@ -7,7 +7,7 @@ const SymbolBucket = require('../data/bucket/symbol_bucket');
7
7
  const LineBucket = require('../data/bucket/line_bucket');
8
8
  const FillBucket = require('../data/bucket/fill_bucket');
9
9
  const FillExtrusionBucket = require('../data/bucket/fill_extrusion_bucket');
10
- const { mapObject, values } = require('../util/object');
10
+ const { mapObject } = require('../util/object');
11
11
  const warn = require('../util/warn');
12
12
  const assert = require('assert');
13
13
  const ImageAtlas = require('../render/image_atlas');
@@ -15,134 +15,139 @@ const GlyphAtlas = require('../render/glyph_atlas');
15
15
  const EvaluationParameters = require('../style/evaluation_parameters');
16
16
  const { OverscaledTileID } = require('./tile_id');
17
17
 
18
- class WorkerTile {
19
- constructor(params) {
20
- this.tileID = new OverscaledTileID(
21
- params.tileID.overscaledZ,
22
- params.tileID.wrap,
23
- params.tileID.canonical.z,
24
- params.tileID.canonical.x,
25
- params.tileID.canonical.y
26
- );
27
- this.uid = params.uid;
28
- this.zoom = params.zoom;
29
- this.pixelRatio = params.pixelRatio;
30
- this.tileSize = params.tileSize;
31
- this.source = params.source;
32
- this.overscaling = this.tileID.overscaleFactor();
33
- this.showCollisionBoxes = params.showCollisionBoxes;
34
- this.globalState = params.globalState;
35
- }
18
+ module.exports = makeWorkerTile;
36
19
 
37
- async parse(data, layerIndex, resources) {
38
- this.status = 'parsing';
39
- this.data = data;
20
+ async function makeWorkerTile(params, vectorTile, layerIndex, resources) {
21
+ const tileID = createTileID(params);
40
22
 
41
- this.collisionBoxArray = new CollisionBoxArray();
42
- const sourceLayerCoder = dictionaryCoder(Object.keys(data.layers));
23
+ const overscaling = tileID.overscaleFactor();
24
+ const { uid, zoom, pixelRatio, source, showCollisionBoxes, globalState, justReloaded, painter } = params;
43
25
 
44
- const featureIndex = new FeatureIndex(this.tileID);
45
- featureIndex.bucketLayerIDs = [];
26
+ const collisionBoxArray = new CollisionBoxArray();
27
+ const sourceLayerCoder = dictionaryCoder(Object.keys(vectorTile.layers));
46
28
 
47
- const buckets = {};
29
+ const featureIndex = new FeatureIndex(tileID);
30
+ featureIndex.bucketLayerIDs = [];
48
31
 
49
- const options = {
50
- featureIndex,
51
- iconDependencies: {},
52
- patternDependencies: {},
53
- glyphDependencies: {}
54
- };
32
+ const uniqueBuckets = new Map();
55
33
 
56
- const layerFamilies = layerIndex.familiesBySource[this.source];
57
- for (const sourceLayerId in layerFamilies) {
58
- const sourceLayer = data.layers[sourceLayerId];
59
- if (!sourceLayer) {
60
- continue;
61
- }
34
+ const options = {
35
+ featureIndex,
36
+ iconDependencies: {},
37
+ patternDependencies: {},
38
+ glyphDependencies: {}
39
+ };
62
40
 
63
- if (sourceLayer.version === 1) {
64
- warn.once(
65
- `Vector tile source "${this.source}" layer "${sourceLayerId}" ` +
66
- 'does not use vector tile spec v2 and therefore may have some rendering errors.'
67
- );
68
- }
41
+ const layerFamilies = layerIndex.familiesBySource.get(source) ?? new Map();
42
+ for (const [sourceLayerId, sourceLayerFamilies] of layerFamilies) {
43
+ const sourceLayer = vectorTile.layers[sourceLayerId];
44
+ if (!sourceLayer) {
45
+ continue;
46
+ }
69
47
 
70
- const sourceLayerIndex = sourceLayerCoder.encode(sourceLayerId);
71
- const features = [];
72
- for (let index = 0; index < sourceLayer.length; index++) {
73
- const feature = sourceLayer.feature(index);
74
- features.push({ feature, index, sourceLayerIndex });
75
- }
48
+ const sourceLayerIndex = sourceLayerCoder.encode(sourceLayerId);
49
+ const features = new Array(sourceLayer.length);
50
+ for (let index = 0; index < sourceLayer.length; index++) {
51
+ features[index] = { feature: sourceLayer.feature(index), index, sourceLayerIndex };
52
+ }
76
53
 
77
- for (const family of layerFamilies[sourceLayerId]) {
78
- const layer = family[0];
79
-
80
- assert(layer.source === this.source);
81
- if (layer.minzoom && this.zoom < Math.floor(layer.minzoom)) continue;
82
- if (layer.maxzoom && this.zoom >= layer.maxzoom) continue;
83
- if (layer.visibility === 'none') continue;
84
-
85
- recalculateLayers(family, this.zoom, this.globalState);
86
-
87
- const bucket = (buckets[layer.id] = layer.createBucket({
88
- index: featureIndex.bucketLayerIDs.length,
89
- layers: family,
90
- zoom: this.zoom,
91
- pixelRatio: this.pixelRatio,
92
- overscaling: this.overscaling,
93
- collisionBoxArray: this.collisionBoxArray,
94
- sourceLayerIndex: sourceLayerIndex,
95
- sourceID: this.source,
96
- globalState: this.globalState
97
- }));
98
-
99
- bucket.populate(features, options);
100
- featureIndex.bucketLayerIDs.push(family.map(l => l.id));
101
- }
54
+ for (const layers of sourceLayerFamilies.values()) {
55
+ const layer = layers[0];
56
+
57
+ if (layer.minzoom && zoom < Math.floor(layer.minzoom)) continue;
58
+ if (layer.maxzoom && zoom >= layer.maxzoom) continue;
59
+ if (layer.visibility === 'none') continue;
60
+
61
+ recalculateLayers(layers, zoom, globalState);
62
+
63
+ const bucket = layer.createBucket({
64
+ index: featureIndex.bucketLayerIDs.length,
65
+ layers,
66
+ zoom,
67
+ pixelRatio,
68
+ overscaling,
69
+ collisionBoxArray,
70
+ sourceLayerIndex,
71
+ sourceID: source,
72
+ globalState
73
+ });
74
+ uniqueBuckets.set(layer.id, bucket);
75
+ bucket.populate(features, options);
76
+ featureIndex.bucketLayerIDs.push(layers.map(l => l.id));
102
77
  }
78
+ }
103
79
 
104
- const stacks = mapObject(options.glyphDependencies, glyphs => Object.keys(glyphs).map(Number));
105
- const icons = Object.keys(options.iconDependencies);
106
- const patterns = Object.keys(options.patternDependencies);
107
- const tasks = [
108
- Object.keys(stacks).length ? resources.getGlyphs({ uid: this.uid, stacks }) : {},
109
- icons.length ? resources.getImages({ icons }) : {},
110
- patterns.length ? resources.getImages({ icons: patterns }) : {}
111
- ];
112
- const [glyphMap, iconMap, patternMap] = await Promise.all(tasks);
113
- const glyphAtlas = new GlyphAtlas(glyphMap);
114
- const imageAtlas = new ImageAtlas(iconMap, patternMap);
115
-
116
- for (const key in buckets) {
117
- const bucket = buckets[key];
118
- if (bucket instanceof SymbolBucket) {
119
- recalculateLayers(bucket.layers, this.zoom, this.globalState);
120
- performSymbolLayout(
121
- bucket,
122
- glyphMap,
123
- glyphAtlas.positions,
124
- iconMap,
125
- imageAtlas.iconPositions,
126
- this.showCollisionBoxes
127
- );
128
- } else if (
129
- bucket.hasPattern &&
130
- (bucket instanceof LineBucket || bucket instanceof FillBucket || bucket instanceof FillExtrusionBucket)
131
- ) {
132
- recalculateLayers(bucket.layers, this.zoom, this.globalState);
133
- bucket.addFeatures(options, imageAtlas.patternPositions);
80
+ const buckets = new Map();
81
+ const { glyphAtlas, imageAtlas, glyphMap, iconMap } = await makeAtlasses(options, resources);
82
+ let hasSymbolBuckets = false;
83
+ let queryPadding = 0;
84
+ for (const bucket of uniqueBuckets.values()) {
85
+ if (bucket instanceof SymbolBucket) {
86
+ hasSymbolBuckets = true;
87
+ recalculateLayers(bucket.layers, zoom, globalState);
88
+ performSymbolLayout(
89
+ bucket,
90
+ glyphMap,
91
+ glyphAtlas.positions,
92
+ iconMap,
93
+ imageAtlas.iconPositions,
94
+ showCollisionBoxes
95
+ );
96
+ if (justReloaded) {
97
+ bucket.justReloaded = true;
134
98
  }
99
+ } else if (
100
+ bucket.hasPattern &&
101
+ (bucket instanceof LineBucket || bucket instanceof FillBucket || bucket instanceof FillExtrusionBucket)
102
+ ) {
103
+ recalculateLayers(bucket.layers, zoom, globalState);
104
+ bucket.addFeatures(options, imageAtlas.patternPositions);
105
+ }
106
+ if (bucket.isEmpty()) {
107
+ continue; // Skip empty buckets
108
+ }
109
+ bucket.stateDependentLayers = [];
110
+ for (const layer of bucket.layers) {
111
+ if (painter?.style) {
112
+ queryPadding = Math.max(queryPadding, painter.style.getLayer(layer.id).queryRadius(bucket));
113
+ }
114
+ if (layer.isStateDependent()) {
115
+ bucket.stateDependentLayers.push(layer);
116
+ }
117
+ buckets.set(layer.id, bucket);
135
118
  }
136
-
137
- this.status = 'done';
138
- return {
139
- buckets: values(buckets).filter(b => !b.isEmpty()),
140
- featureIndex,
141
- collisionBoxArray: this.collisionBoxArray,
142
- glyphAtlasImage: glyphAtlas.image,
143
- imageAtlas
144
- };
145
119
  }
120
+
121
+ return {
122
+ buckets,
123
+ featureIndex,
124
+ collisionBoxArray,
125
+ glyphAtlasImage: glyphAtlas.image,
126
+ imageAtlas,
127
+ hasSymbolBuckets,
128
+ queryPadding
129
+ };
130
+ }
131
+
132
+ async function makeAtlasses({ glyphDependencies, patternDependencies, iconDependencies }, resources) {
133
+ const stacks = mapObject(glyphDependencies, glyphs => Object.keys(glyphs).map(Number));
134
+ const icons = Object.keys(iconDependencies);
135
+ const patterns = Object.keys(patternDependencies);
136
+ const tasks = [
137
+ Object.keys(stacks).length ? resources.getGlyphs({ stacks }) : {},
138
+ icons.length ? resources.getImages({ icons }) : {},
139
+ patterns.length ? resources.getImages({ icons: patterns }) : {}
140
+ ];
141
+ const [glyphMap, iconMap, patternMap] = await Promise.all(tasks);
142
+ const glyphAtlas = new GlyphAtlas(glyphMap);
143
+ const imageAtlas = new ImageAtlas(iconMap, patternMap);
144
+ return { glyphAtlas, imageAtlas, glyphMap, iconMap };
145
+ }
146
+
147
+ function createTileID({ tileID }) {
148
+ const { overscaledZ, wrap, canonical } = tileID;
149
+ const { x, y, z } = canonical;
150
+ return new OverscaledTileID(overscaledZ, wrap, z, x, y);
146
151
  }
147
152
 
148
153
  function recalculateLayers(layers, zoom, globalState) {
@@ -152,5 +157,3 @@ function recalculateLayers(layers, zoom, globalState) {
152
157
  layer.recalculate(parameters);
153
158
  }
154
159
  }
155
-
156
- module.exports = WorkerTile;
@@ -2,7 +2,7 @@ const circle = require('./style_layer/circle_style_layer');
2
2
  const heatmap = require('./style_layer/heatmap_style_layer');
3
3
  const hillshade = require('./style_layer/hillshade_style_layer');
4
4
  const fill = require('./style_layer/fill_style_layer');
5
- const fillExtrusion = require('./style_layer/fill_extrusion_style_layer');
5
+ const { FillExtrusionStyleLayer: fillExtrusion } = require('./style_layer/fill_extrusion_style_layer');
6
6
  const line = require('./style_layer/line_style_layer');
7
7
  const symbol = require('./style_layer/symbol_style_layer');
8
8
  const background = require('./style_layer/background_style_layer');
@@ -22,9 +22,9 @@ class LayerPlacement {
22
22
  }
23
23
 
24
24
  class PauseablePlacement {
25
- constructor(transform, order, forceFullPlacement, showCollisionBoxes, fadeDuration, crossSourceCollisions) {
25
+ constructor(transform, maxIndex, forceFullPlacement, showCollisionBoxes, fadeDuration, crossSourceCollisions) {
26
26
  this.placement = new Placement(transform, fadeDuration, crossSourceCollisions);
27
- this._currentPlacementIndex = order.length - 1;
27
+ this._currentPlacementIndex = maxIndex;
28
28
  this._forceFullPlacement = forceFullPlacement;
29
29
  this._showCollisionBoxes = showCollisionBoxes;
30
30
  this._done = false;
@@ -34,7 +34,7 @@ class PauseablePlacement {
34
34
  return this._done;
35
35
  }
36
36
 
37
- continuePlacement(order, layers, layerTiles) {
37
+ continuePlacement(layers, layerTiles) {
38
38
  const startTime = browser.now();
39
39
 
40
40
  const shouldPausePlacement = () => {
@@ -43,8 +43,7 @@ class PauseablePlacement {
43
43
  };
44
44
 
45
45
  while (this._currentPlacementIndex >= 0) {
46
- const layerId = order[this._currentPlacementIndex];
47
- const layer = layers[layerId];
46
+ const layer = layers[this._currentPlacementIndex];
48
47
  const placementZoom = this.placement.collisionIndex.transform.zoom;
49
48
  if (
50
49
  layer.type === 'symbol' &&
@@ -3,7 +3,6 @@ const assert = require('assert');
3
3
  const { clone } = require('../util/object');
4
4
  const { easeCubicInOut } = require('../util/util');
5
5
  const { interpolate, normalizePropertyExpression } = require('@mapwhit/style-expressions');
6
- const { register } = require('../util/transfer_registry');
7
6
  const EvaluationParameters = require('./evaluation_parameters');
8
7
 
9
8
  /**
@@ -407,7 +406,7 @@ class PossiblyEvaluatedPropertyValue {
407
406
  * in a way that allows flow to know which of these two cases applies for any given property name, and if you attempt
408
407
  * to use a `PossiblyEvaluatedPropertyValue` as if it was a scalar, or vice versa, you will get a type error. (However,
409
408
  * there's at least one case in which flow fails to produce a type error that you should be aware of: in a context such
410
- * as `layer.paint.get('foo-opacity') === 0`, if `foo-opacity` is data-driven, than the left-hand side is of type
409
+ * as `layer._paint.get('foo-opacity') === 0`, if `foo-opacity` is data-driven, than the left-hand side is of type
411
410
  * `PossiblyEvaluatedPropertyValue<number>`, but flow will not complain about comparing this to a number using `===`.
412
411
  * See https://github.com/facebook/flow/issues/2359.)
413
412
  *
@@ -672,12 +671,6 @@ class Properties {
672
671
  }
673
672
  }
674
673
 
675
- register('DataDrivenProperty', DataDrivenProperty);
676
- register('DataConstantProperty', DataConstantProperty);
677
- register('CrossFadedDataDrivenProperty', CrossFadedDataDrivenProperty);
678
- register('CrossFadedProperty', CrossFadedProperty);
679
- register('ColorRampProperty', ColorRampProperty);
680
-
681
674
  module.exports = {
682
675
  PropertyValue,
683
676
  Transitionable,
@@ -7,7 +7,7 @@ module.exports = {
7
7
  };
8
8
 
9
9
  function getMaximumPaintValue(property, layer, bucket) {
10
- const value = layer.paint.get(property).value;
10
+ const value = layer._paint.get(property).value;
11
11
  if (value.kind === 'constant') {
12
12
  return value.value;
13
13
  }
@@ -24,7 +24,7 @@ function translate(queryGeometry, translate, translateAnchor, bearing, pixelsToT
24
24
  return queryGeometry;
25
25
  }
26
26
 
27
- const pt = Point.convert(translate);
27
+ const pt = Point.convert(translate)._mult(pixelsToTileUnits);
28
28
 
29
29
  if (translateAnchor === 'viewport') {
30
30
  pt._rotate(-bearing);
@@ -33,7 +33,7 @@ function translate(queryGeometry, translate, translateAnchor, bearing, pixelsToT
33
33
  const translated = [];
34
34
  for (let i = 0; i < queryGeometry.length; i++) {
35
35
  const point = queryGeometry[i];
36
- translated.push(point.sub(pt._mult(pixelsToTileUnits)));
36
+ translated.push(point.sub(pt));
37
37
  }
38
38
  return translated;
39
39
  }