Make location indicator bearing a paint property

This change introduces a new property type, Rotation, that uses
a custom interpolator, and that is currently applied to
all style properties named "bearing", with a period attribute.
This commit is contained in:
Gali Nelle
2020-04-06 10:12:56 +03:00
committed by galinelle
parent 9a55c282fe
commit 8e581c88ea
26 changed files with 231 additions and 68 deletions

View File

@@ -64,6 +64,13 @@ global.evaluatedType = function (property) {
case 'boolean':
return 'bool';
case 'number':
// TODO: Check if 'Rotation' should be used for other properties,
// such as icon-rotate
if (/bearing$/.test(property.name) &&
property.period == 360 &&
property.units =='degrees') {
return 'Rotation';
}
return /location$/.test(property.name) ? 'double' : 'float';
case 'resolvedImage':
return 'expression::Image';

View File

@@ -47,20 +47,6 @@ referenceSpec["layout_location-indicator"] = {
},
"doc": "The amount of the perspective compensation, between 0 and 1. A value of 1 produces a location indicator of constant width across the screen. A value of 0 makes it scale naturally according to the viewing projection."
},
"bearing": {
"type": "number",
"default": "0",
"default": 0,
"period": 360,
"units": "degrees",
"property-type": "data-constant",
"expression": {
"interpolated": false,
"parameters": [ ]
},
"transition": false,
"doc": "The bearing of the location indicator."
},
"image-tilt-displacement": {
"type": "number",
"property-type": "data-constant",
@@ -77,6 +63,20 @@ referenceSpec["layout_location-indicator"] = {
};
referenceSpec["paint_location-indicator"] = {
"bearing": {
"type": "number",
"default": "0",
"default": 0,
"period": 360,
"units": "degrees",
"property-type": "data-constant",
"expression": {
"interpolated": false,
"parameters": [ ]
},
"transition": false,
"doc": "The bearing of the location indicator."
},
"location": {
"type": "array",
"default": [
@@ -176,6 +176,20 @@ referenceSpec["paint_location-indicator"] = {
},
"transition": true,
"doc": "The color for drawing the accuracy radius border. To adjust transparency, set the alpha component of the color accordingly."
},
"bearing": {
"type": "number",
"default": "0",
"default": 0,
"period": 360,
"units": "degrees",
"property-type": "data-constant",
"expression": {
"interpolated": false,
"parameters": [ ]
},
"transition": false,
"doc": "The bearing of the location indicator."
}
};