Expresiones de estilo basadas en datos (SDK web)Data-driven Style Expressions (Web SDK)

Las expresiones permiten aplicar lógica de negocios a las opciones de estilo que respetan las propiedades definidas en cada forma de un origen de datos.Expressions enable you to apply business logic to styling options that observe the properties defined in each shape in a data source. También se pueden usar expresiones para filtrar los datos de un origen o una capa de datos.Expressions can also be used to filter data in a data source or layer. Las expresiones pueden constar de lógica condicional, como instrucciones if y también pueden usarse para manipular datos con operadores de cadena, lógicos y matemáticos.Expressions can consist of conditional logic, like if-statements, and can also be used to manipulate data with; string, logical and mathematical operators.

Los estilos basados en datos pueden reducir la cantidad de código necesario para implementar la lógica de negocios en torno a los estilos.Data-driven styles can reduce the amount of code needed to implement business logic around styling. Cuando se usan con capas, las expresiones se evalúan en tiempo de procesamiento en un subproceso independiente que proporciona un mayor rendimiento en comparación con la evaluación de la lógica de negocios en el subproceso de la interfaz de usuario.When used with layers, expressions are evaluated at render time on a separate thread that provides increased performance when compared to evaluating business logic on the UI thread.

En el vídeo siguiente se proporciona información general sobre la aplicación de estilos basados en datos en el SDK web de Azure Maps.The following video provides an overview of data-driven styling in the Azure Maps Web SDK.


Las expresiones se representan como matrices JSON.Expressions are represented as JSON arrays. El primer elemento de una expresión de la matriz es una cadena que especifica el nombre del operador de expresión.The first element of an expression in the array is a string that specifies the name of the expression operator. Por ejemplo, "+" o "case".For example, "+" or "case". Los elementos siguientes (si existen) son los argumentos para la expresión.The next elements (if any) are the arguments to the expression. Cada argumento es un valor literal (cadena, número, booleano o null) u otra matriz de expresiones.Each argument is either a literal value (a string, number, boolean, or null), or another expression array. El pseudocódigo siguiente define la estructura básica de una expresión.The following pseudocode defines the basic structure an expression.

[ 
    expression_operator, 
    argument0, 
    argument1, 
    …
] 

El SDK web de Azure Maps admite muchos tipos de expresiones que pueden usarse solas o en combinación con otras expresiones.The Azure Maps Web SDK supports many types of that can be used on their own or in combination with other expressions.

Tipo de expresionesType of expressions DESCRIPCIÓNDescription
Expresión de agregadoAggregate expression Expresión que define un cálculo que se procesa en un conjunto de datos y que se puede utilizar con la opción clusterProperties de DataSource.An expression that defines a calculate that is processed over a set of data and can be used with the clusterProperties option of a DataSource.
Expresiones booleanasBoolean expressions Las expresiones booleanas proporcionan un conjunto de expresiones de operadores booleanos para evaluar las comparaciones booleanas.Boolean expressions provide a set of boolean operators expressions for evaluating boolean comparisons.
Expresiones de colorColor expressions Las expresiones de color facilitan la creación y la manipulación de valores de color.Color expressions make it easier to create and manipulate color values.
Expresiones condicionalesConditional expressions Las expresiones condicionales proporcionan operaciones lógicas que son parecidas a las instrucciones if.Conditional expressions provide logic operations that are like if-statements.
Expresiones de datosData expressions Proporcionan acceso a los datos de propiedad de una característica.Provides access to the property data in a feature.
Expresiones de interpolación y pasoInterpolate and Step expressions Se pueden usar para calcular valores a lo largo de una curva interpolada o una función de paso.Interpolate and step expressions can be used to calculate values along an interpolated curve or step function.
Expresiones específicas de capaLayer specific expressions Expresiones especiales que solo son aplicables a una capa.Special expressions that are only applicable to a single layer.
Expresiones matemáticasMath expressions Proporcionan operadores matemáticos para llevar a cabo cálculos basados en datos dentro del marco de la expresión.Provides mathematical operators to perform data-driven calculations within the expression framework.
Expresiones de operador de cadenaString operator expressions Las expresiones de operador de cadena realizan operaciones de conversión sobre cadenas, como concatenación y conversión de las mayúsculas y minúsculas.String operator expressions perform conversion operations on strings such as concatenating and converting the case.
Expresiones de tipoType expressions Las expresiones de tipo proporcionan herramientas para probar y convertir distintos tipos de datos, como cadenas, números y valores booleanos.Type expressions provide tools for testing and converting different data types like strings, numbers, and boolean values.
Expresiones de enlace de variableVariable binding expressions Las expresiones de enlace de variable permiten almacenar los resultados de un cálculo en una variable y hacer referencia a ellos en otra parte de una expresión varias veces sin tener que volver a calcular el valor almacenado.Variable binding expressions let the results of a calculation be stored in a variable and referenced elsewhere in an expression multiple times without having to recalculate the stored value.
Expresión de zoomZoom expression Recupera el nivel de zoom actual del mapa en tiempo de representación.Retrieves the current zoom level of the map at render time.

En todos los ejemplos de este documento se usará la siguiente función para mostrar diferentes maneras en que se pueden usar los diferentes tipos de expresiones.All examples in this document will use the following feature to demonstrate different ways in that the different types of expressions can be used.

{
    "type": "Feature",
    "geometry": {
        "type": "Point",
        "coordinates": [-122.13284, 47.63699]
    },
    "properties": { 
        "id": 123,
        "entityType": "restaurant",
        "revenue": 12345,
        "subTitle": "Building 40", 
        "temperature": 72,
        "title": "Cafeteria", 
        "zoneColor": "red"
    }
}

Expresiones de datosData expressions

Las expresiones de datos proporcionan acceso a los datos de propiedad de una característica.Data expressions provide access to the property data in a feature.

ExpressionExpression Tipo de valor devueltoReturn type DESCRIPCIÓNDescription
['at', number, array] objetoobject Recupera un elemento de una matriz.Retrieves an item from an array.
['geometry-type'] stringstring Obtiene el tipo de geometría de la característica: Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon.Gets the feature's geometry type: Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon.
['get', string] valuevalue Obtiene el valor de propiedad de las propiedades de la característica actual.Gets the property value from the current feature's properties. Devuelve null si no se encuentra la propiedad solicitada.Returns null if the requested property is missing.
['get', string, object] valuevalue Obtiene el valor de propiedad de las propiedades del objeto proporcionado.Gets the property value from the properties of the provided object. Devuelve null si no se encuentra la propiedad solicitada.Returns null if the requested property is missing.
['has', string] booleanboolean Determina si las propiedades de una característica tienen la propiedad especificada.Determines if the properties of a feature have the specified property.
['has', string, object] booleanboolean Determina si las propiedades del objeto tienen la propiedad especificada.Determines if the properties of the object have the specified property.
['id'] valuevalue Obtiene el identificador de la característica si lo tiene.Gets the feature's ID if it has one.
['length', string | array] númeronumber Obtiene la longitud de una cadena o matriz.Gets the length of a string or array.

EjemplosExamples

Se puede acceder directamente a las propiedades de una característica en una expresión mediante una expresión get.Properties of a feature can be accessed directly in an expression by using a get expression. En el ejemplo siguiente se usa el valor de "zoneColor" de la característica para especificar la propiedad de color de una capa de burbuja.The following example uses the "zoneColor" value of the feature to specify the color property of a bubble layer.

var layer = new atlas.layer.BubbleLayer(datasource, null, {
    color: ['get', 'zoneColor'] //Get the zoneColor value.
});

El ejemplo anterior funcionará bien si todas las características de punto tienen la propiedad zoneColor; si no, es probable que el color se reserve como "black".The above example will work fine if all the point features have the zoneColor property, but if they don’t, the color will likely fall back to "black". Para modificar el color de retroceso, se puede usar una expresión case en combinación con la expresión has para comprobar si existe la propiedad y, si no, devolver un color de retroceso.To modify the fallback color, a case expression can be used in combination with the has expression to check if the property exists, and if it doesn’t return a fallback color instead.

var layer = new atlas.layer.BubbleLayer(datasource, null, {
    color: [
        'case', //Use a conditional case expression.

        ['has', 'zoneColor'],   //Check to see if feature has a "zoneColor" property
        ['get', 'zoneColor'],   //If it does, use it.

        'blue'  //If it doesn't, default to blue.
    ]
});

Las capas de burbujas y símbolos representarán de forma predeterminada las coordenadas de todas las formas de un origen de datos.Bubble and symbol layers will render the coordinates of all shapes in a data source by default. Para ello, se pueden resaltar los vértices de una línea o un polígono.This can be done to highlight the vertices of a polygon or line. La opción filter de la capa puede usarse para limitar el tipo de geometría de las características que representa mediante una expresión ['geometry-type'] dentro de una expresión booleana.The filter option of the layer can be used to limit the geometry type of the features it renders by using a ['geometry-type'] expression within a boolean expression. En el siguiente ejemplo se limita una capa de burbujas para que solo se representen las características Point.The following example limits a bubble layer so that only Point features are rendered.

var layer = new atlas.layer.BubbleLayer(datasource, null, {
    filter: ['==', ['geometry-type'], 'Point']
});

El siguiente ejemplo permite que se representen las características Point y MultiPoint.The following example will allow both Point and MultiPoint features to be rendered.

var layer = new atlas.layer.BubbleLayer(datasource, null, {
    filter: ['any', ['==', ['geometry-type'], 'Point'], ['==', ['geometry-type'], 'MultiPoint']]
});

Igualmente, el contorno de los polígonos se representará en capas de línea.Similarly, the outline of Polygons will render in line layers. Para deshabilitar este comportamiento en una capa de línea, agregue un filtro que solo permita las características LineString y MultiLineString.To disable this behavior in a line layer, add a filter that only allows LineString and MultiLineString features.

Expresiones matemáticasMath expressions

Las expresiones matemáticas proporcionan operadores matemáticos para llevar a cabo cálculos basados en datos dentro del marco de la expresión.Math expressions provide mathematical operators to perform data-driven calculations within the expression framework.

ExpressionExpression Tipo de valor devueltoReturn type DESCRIPCIÓNDescription
['+', number, number, …] númeronumber Calcula la suma de los números especificados.Calculates the sum of the specified numbers.
['-', number] númeronumber Resta 0 al número especificado.Subtracts 0 by the specified number.
['-', number, number] númeronumber Resta las primeras cifras al segundo número.Subtracts the first numbers by the second number.
['*', number, number, …] númeronumber Multiplica los números especificados juntos.Multiplies the specified numbers together.
['/', number, number] númeronumber Divide el primer número entre el segundo.Divides the first number by the second number.
['%', number, number] númeronumber Calcula el resto al dividir el primer número entre el segundo.Calculates the remainder when dividing the first number by the second number.
['^', number, number] númeronumber Calcula el valor del primer valor elevado a la potencia del segundo número.Calculates the value of the first value raised to the power of the second number.
['abs', number] númeronumber Calcula el valor absoluto del número especificado.Calculates the absolute value of the specified number.
['acos', number] númeronumber Calcula el arcocoseno del número especificado.Calculates the arccosine of the specified number.
['asin', number] númeronumber Calcula el arcoseno del número especificado.Calculates the arcsine of the specified number.
['atan', number] númeronumber Calcula el arcotangente del número especificado.Calculates the arctangent of the specified number.
['ceil', number] númeronumber Redondea el número al siguiente número entero.Rounds the number up to the next whole integer.
['cos', number] númeronumber Calcula el coseno del número especificado.Calculates the cos of the specified number.
['e'] númeronumber Devuelve la constante matemática e.Returns the mathematical constant e.
['floor', number] númeronumber Redondea el número hacia abajo al número entero anterior.Rounds the number down to the previous whole integer.
['ln', number] númeronumber Calcula el logaritmo natural del número especificado.Calculates the natural logarithm of the specified number.
['ln2'] númeronumber Devuelve la constante matemática ln(2).Returns the mathematical constant ln(2).
['log10', number] númeronumber Calcula el logaritmo en base 10 del número especificado.Calculates the base-ten logarithm of the specified number.
['log2', number] númeronumber Calcula el logaritmo en base dos del número especificado.Calculates the base-two logarithm of the specified number.
['max', number, number, …] númeronumber Calcula el número máximo en el conjunto especificado de números.Calculates the maximum number in the specified set of numbers.
['min', number, number, …] númeronumber Calcula el número mínimo en el conjunto especificado de números.Calculates the minimum number in the specified set of numbers.
['pi'] númeronumber Devuelve la constante matemática PI.Returns the mathematical constant PI.
['round', number] númeronumber Redondea el número al entero más cercano.Rounds the number to the nearest integer. Los valores a medio camino se redondean al valor más alejado de cero.Halfway values are rounded away from zero. Por ejemplo, ['round', -1.5] se evalúa como -2.For example, ['round', -1.5] evaluates to -2.
['sin', number] númeronumber Calcula el seno del número especificado.Calculates the sine of the specified number.
['sqrt', number] númeronumber Calcula la raíz cuadrada del número especificado.Calculates the square root of the specified number.
['tan', number] númeronumber Calcula la tangente del número especificado.Calculates the tangent of the specified number.

Expresión de agregadoAggregate expression

Una expresión de agregado define un cálculo que se procesa en un conjunto de datos y que se puede utilizar con la opción clusterProperties de DataSource.An aggregate expression defines a calculation that is processed over a set of data and can be used with the clusterProperties option of a DataSource. La salida de estas expresiones debe ser un número o un valor booleano.The output of these expressions must be a number or boolean.

Una expresión de agregado toma tres valores: un valor de operador y un valor inicial y una expresión para recuperar una propiedad de cada característica en los datos en los que se va a aplicar la operación de agregado.An aggregate expression takes in three values; an operator value, and initial value, and an expression to retrieve a property from each feature in a data to apply the aggregate operation on. La expresión tiene el siguiente formato:This expression has the following format:

[operator: string, initialValue: boolean | number, mapExpression: Expression]
  • operator: Una función de la expresión que luego se aplica a todos los valores que calcula mapExpression para cada punto del clúster.operator: An expression function that is then applied to against all values calculated by the mapExpression for each point in the cluster. Operadores que se admiten:Supported operators;
    • Para números +: *, max, minFor numbers: +, *, max, min
    • Para valores booleanos: all, anyFor Booleans: all, any
  • initialValue: un valor inicial al que se agrega el primer valor calculado.initialValue: An initial value in which the first calculated value is aggregated against.
  • mapExpression: una expresión que se aplica a cada punto del conjunto de datos.mapExpression: An expression that is applied against each point in the data set.

EjemplosExamples

Si todas las características de un conjunto de datos tienen una propiedad revenue que es un número.If all features in a data set have a revenue property that is a number. Los ingresos totales de todos los puntos de un clúster creados a partir del conjunto de datos se pueden calcular mediante la siguiente expresión de agregado: ['+', 0, ['get', 'revenue']]The total revenue of all points in a cluster created from the data set can be calculated using the following aggregate expression: ['+', 0, ['get', 'revenue']]

Expresiones booleanasBoolean expressions

Las expresiones booleanas proporcionan un conjunto de expresiones de operadores booleanos para evaluar las comparaciones booleanas.Boolean expressions provide a set of boolean operators expressions for evaluating boolean comparisons.

Cuando se comparan valores, la comparación debe estar estrictamente tipada.When comparing values, the comparison is strictly typed. Los valores de distintos tipos siempre se consideran desiguales.Values of different types are always considered unequal. Los casos en los que se sabe que los tipos son diferentes en tiempo de análisis se consideran no válidos y producirán un error de análisis.Cases where the types are known to be different at parse time are considered invalid and will produce a parse error.

ExpressionExpression Tipo de valor devueltoReturn type DESCRIPCIÓNDescription
['! ', boolean] booleanboolean Negación lógica.Logical negation. Devuelve true si la entrada es false, y false si la entrada es true.Returns true if the input is false, and false if the input is true.
['!= ', value, value] booleanboolean Devuelve true si los valores de entrada no son iguales; de lo contrario, false.Returns true if the input values are not equal, false otherwise.
['<', value, value] booleanboolean Devuelve true si la primera entrada es estrictamente menor que el segundo; de lo contrario, false.Returns true if the first input is strictly less than the second, false otherwise. Es necesario que los argumentos sean ambos cadenas o ambos números.The arguments are required to be either both strings or both numbers.
['<=', value, value] booleanboolean Devuelve true si la primera entrada es menor o igual que el segundo; de lo contrario, false.Returns true if the first input is less than or equal to the second, false otherwise. Es necesario que los argumentos sean ambos cadenas o ambos números.The arguments are required to be either both strings or both numbers.
['==', value, value] booleanboolean Devuelve true si los valores de entrada son iguales; de lo contrario false.Returns true if the input values are equal, false otherwise. Es necesario que los argumentos sean ambos cadenas o ambos números.The arguments are required to be either both strings or both numbers.
['>', value, value] booleanboolean Devuelve true si la primera entrada es estrictamente mayor que la segunda; de lo contrario, false.Returns true if the first input is strictly greater than the second, false otherwise. Es necesario que los argumentos sean ambos cadenas o ambos números.The arguments are required to be either both strings or both numbers.
['>=' value, value] booleanboolean Devuelve true si la primera entrada es mayor o igual que la segunda; de lo contrario false.Returns true if the first input is greater than or equal to the second, false otherwise. Es necesario que los argumentos sean ambos cadenas o ambos números.The arguments are required to be either both strings or both numbers.
['all', boolean, boolean, …] booleanboolean Devuelve true si todas las entradas son true; de lo contrario, false.Returns true if all the inputs are true, false otherwise.
['any', boolean, boolean, …] booleanboolean Devuelve true si cualquiera de las entradas es true; de lo contrario, false.Returns true if any of the inputs are true, false otherwise.

Expresiones condicionalesConditional expressions

Las expresiones condicionales proporcionan operaciones lógicas que son parecidas a las instrucciones if.Conditional expressions provide logic operations that are like if-statements.

Las expresiones siguientes realizan operaciones de lógica condicional sobre los datos de entrada.The following expressions perform conditional logic operations on the input data. Por ejemplo, la expresión case proporciona la lógica "if/then/else" mientras que la expresión match es como una "instrucción swtich".For example, the case expression provides "if/then/else" logic while the match expression is like a "switch-statement".

Expresión caseCase expression

Una expresión case es un tipo de expresión condicional que proporciona la instrucción if como lógica (if/then/else).A case expression is a type of conditional expression that provides if-statement like logic (if/then/else). Este tipo de expresión pasa por una lista de condiciones booleanas y devuelve el valor de salida de la primera condición booleano que sea verdadera.This type of expression steps through a list of boolean conditions and returns the output value of the first boolean condition that’s true.

El pseudocódigo siguiente define la estructura de la expresión case.The following pseudocode defines the structure of the case expression.

[
    'case',
    condition1: boolean, 
    output1: value,
    condition2: boolean, 
    output2: value,
    ...,
    fallback: value
]

EjemploExample

En el ejemplo siguiente se recorren diferentes condiciones booleanas hasta encontrar una que se evalúe como true y, luego, se devuelve ese valor asociado.The following example steps through different boolean conditions until it finds one that evaluates to true, and then returns that associated value. Si ninguna condición booleana se evalúa como true, se devolverá un valor de retroceso.If no boolean condition evaluates to true, a fallback value will be returned.

var layer = new atlas.layer.BubbleLayer(datasource, null, {
    color: [
        'case',

        //Check to see if the first boolean expression is true, and if it is, return its assigned result.
        ['has', 'zoneColor'],
        ['get', 'zoneColor'],

        //Check to see if the second boolean expression is true, and if it is, return its assigned result.
        ['all', ['has', ' temperature '], ['>', ['get', 'temperature'], 100]],
        'red',

        //Specify a default value to return.
        'green'
    ]
});

Expresión matchMatch expression

Una expresión match es un tipo de expresión condicional que proporciona la instrucción switch como lógica.A match expression is a type of conditional expression that provides switch-statement like logic. La entrada puede ser cualquier expresión, como ['get', 'entityType'] que devuelve una cadena o un número.The input can be any expression such as ['get', 'entityType'] that returns a string or a number. Cada etiqueta debe ser un único valor literal o una matriz de valores literales, cuyos valores deben ser todos cadenas o todos números.Each label must be either a single literal value or an array of literal values, whose values must be all strings or all numbers. La entrada coincide si coincide alguno de los valores de la matriz.The input matches if any of the values in the array match. Cada etiqueta debe ser única.Each label must be unique. Si el tipo de entrada no coincide con el tipo de las etiquetas, el resultado será el valor de retroceso.If the input type doesn't match the type of the labels, the result will be the fallback value.

El pseudocódigo siguiente define la estructura de la expresión match.The following pseudocode defines the structure of the match expression.

[
    'match',
    input: number | string,
    label1: number | string | (number | string)[], 
    output1: value,
    label2: number | string | (number | string)[], 
    output2: value,
    ...,
    fallback: value
]

EjemplosExamples

En el ejemplo siguiente se examina la propiedad entityType de una característica de punto en una capa de burbuja que busca una coincidencia.The following example looks at the entityType property of a Point feature in a bubble layer searches for a match. Si se encuentra una coincidencia, se devuelve ese valor especificado o se devuelve el valor de retroceso.If it finds a match, that specified value is returned or it returns the fallback value.

var layer = new atlas.layer.BubbleLayer(datasource, null, {
    color: [
        'match',

        //Get the property to match.
        ['get', 'entityType'],

        //List the values to match and the result to return for each match.
        'restaurant', 'red',
        'park', 'green',

        //Specify a default value to return if no match is found.
        'black'
    ]
});

En el ejemplo siguiente se usa una matriz para enumerar un conjunto de etiquetas que deben devolver el mismo valor.The following example uses an array to list a set of labels that should all return the same value. Este sistema es mucho más eficiente que enumerar cada etiqueta por separado.This is much more efficient than list each label individually. En este caso, si la propiedad entityType es "restaurant" o "grocery_store", se devolverá el color "red".In this case, if the entityType property is "restaurant" or "grocery_store", the color "red" will be returned.

var layer = new atlas.layer.BubbleLayer(datasource, null, {
    color: [
        'match',

        //Get the property to match.
        ['get', 'entityType'],

        //List the values to match and the result to return for each match.
        ['restaurant', 'grocery_store'], 'red',

        'park', 'green',

        //Specify a default value to return if no match is found.
        'black'
    ]
});

En el ejemplo siguiente se usa una expresión de coincidencia para realizar un filtro de tipo "en la matriz" o "la matriz contiene"; en este caso, se filtran los datos cuyo valor de identificador se encuentra en una lista de identificadores permitidos.The following example uses a match expression to perform an "in array" or "array contains" type filter, in this case filtering data that has an ID value that is in a list of allowed IDs. Cuando se usan expresiones con filtros, el resultado debe ser un valor booleano.When using expressions with filters, the result needs to be a Boolean value.

var layer = new atlas.layer.BubbleLayer(datasource, null, {
    filter: [
        'match',  

        //Get the property to match.
        ['get', 'id'],  

         //List of values to match.
        [24, 53, 98], 

        //If there is a match, return true.
        true,
    
        //Otherwise return false.
        false
    ]
});

Expresión coalesceCoalesce expression

Una expresión coalesce recorre un conjunto de expresiones hasta que se obtiene el primer valor distinto de null y devuelve ese valor.A coalesce expression steps through a set of expressions until the first non-null value is obtained and returns that value.

El pseudocódigo siguiente define la estructura de la expresión coalesce.The following pseudocode defines the structure of the coalesce expression.

[
    'coalesce', 
    value1, 
    value2, 
    …
]

EjemploExample

En el ejemplo siguiente se usa una expresión coalesce para establecer la opción textField de una capa de símbolos.The following example uses a coalesce expression to set the textField option of a symbol layer. Si falta la propiedad title de la característica o está establecida en null, la expresión intentará buscar la propiedad subtitle y, si falta o es null, retrocede a una cadena vacía.If the title property is missing from the feature or set to null, the expression will then try looking for the subtitle property, if its missing or null, it will then fall back to an empty string.

var layer = new atlas.layer.SymbolLayer(datasource, null, {
    textOptions: {
        textField: [
            'coalesce',

            //Try getting the title property.
            ['get', 'title'],

            //If there is no title, try getting the subtitle. 
            ['get', 'subtitle'],

            //Default to an empty string.
            ''
        ]
    }
});

Expresiones de tipoType expressions

Las expresiones de tipo proporcionan herramientas para probar y convertir distintos tipos de datos, como cadenas, números y valores booleanos.Type expressions provide tools for testing and converting different data types like strings, numbers, and boolean values.

ExpressionExpression Tipo de valor devueltoReturn type DESCRIPCIÓNDescription
['literal', array]

['literal', object]
matriz | objetoarray | object Devuelve una matriz literal o un valor de objeto.Returns a literal array or object value. Use esta expresión para impedir que una matriz o un objeto se evalúen como una expresión.Use this expression to prevent an array or object from being evaluated as an expression. Esto es necesario cuando una matriz o un objeto se deben devolver mediante una expresión.This is necessary when an array or object needs to be returned by an expression.
['to-boolean', value] booleanboolean Convierte el valor de entrada en un valor booleano.Converts the input value to a boolean. El resultado es false cuando la entrada es una cadena vacía, 0, false null o NaN; de lo contrario, es true.The result is false when the input is an empty string, 0, false, null, or NaN; otherwise its true.
['to-color', value]

['to-color', value1, value2…]
colorcolor Convierte el valor de entrada en un color.Converts the input value to a color. Si se proporcionan varios valores, cada uno de ellos se evalúa en orden hasta que se obtiene la primera conversión correcta.If multiple values are provided, each one is evaluated in order until the first successful conversion is obtained. Si ninguna de las entradas se puede convertir, la expresión es un error.If none of the inputs can be converted, the expression is an error.
['to-number', value]

['to-number', value1, value2, …]
númeronumber Convierte el valor de entrada en un número, si es posible.Converts the input value to a number, if possible. Si la entrada es null o false, el resultado es 0.If the input is null or false, the result is 0. Si la entrada es true, el resultado es 1.If the input is true, the result is 1. Si la entrada es una cadena, se convierte en un número mediante la función de cadena ToNumber de la especificación del lenguaje ECMAScript.If the input is a string, it's converted to a number using the ToNumber string function of the ECMAScript Language Specification. Si se proporcionan varios valores, cada uno de ellos se evalúa en orden hasta que se obtiene la primera conversión correcta.If multiple values are provided, each one is evaluated in order until the first successful conversion is obtained. Si ninguna de las entradas se puede convertir, la expresión es un error.If none of the inputs can be converted, the expression is an error.
['to-string', value] stringstring Convierte el valor de entrada en una cadena.Converts the input value to a string. Si la entrada es null, el resultado es "".If the input is null, the result is "". Si la entrada es un valor booleano, el resultado es "true" o "false".If the input is a boolean, the result is "true" or "false". Si la entrada es un número, se convierte en una cadena mediante la función numérica ToString de la especificación del lenguaje ECMAScript.If the input is a number, it's converted to a string using the ToString number function of the ECMAScript Language Specification. Si la entrada es un color, se convierte en la cadena de color "rgba(r,g,b,a)" de CSS RGBA.If the input is a color, it's converted to CSS RGBA color string "rgba(r,g,b,a)". De lo contrario, la entrada se convierte en una cadena mediante la función JSON.stringify de la especificación del lenguaje ECMAScript.Otherwise, the input is converted to a string using the JSON.stringify function of the ECMAScript Language Specification.
['typeof', value] stringstring Devuelve una cadena que describe el tipo del valor especificado.Returns a string describing the type of the given value.

Sugerencia

Si aparece un mensaje de error similar a Expression name must be a string, but found number instead. If you wanted a literal array, use ["literal", [...]]. en la consola del explorador, significa que en algún lugar del código hay una expresión que tiene una matriz que no tiene una cadena en su primer valor.If an error message similar to Expression name must be a string, but found number instead. If you wanted a literal array, use ["literal", [...]]. appears in the browser console it means that there is an expression somewhere in your code that has an array that doesn’t have a string for its first value. Si quiere que la expresión para devolver una matriz, encapsule la matriz con la expresión literal.If you want the expression to return an array, wrap the array with the literal expression. En el ejemplo siguiente se establece la opción offset de icono de una capa de símbolos, que debe ser una matriz que contenga dos números, mediante una expresión match para elegir entre dos valores de desplazamiento en función del valor de la propiedad entityType de la característica de punto.The following example sets the icon offset option of a symbol layer, which needs to be an array containing two numbers, by using a match expression to choose between two offset values based on the value of the entityType property of the point feature.

var layer = new atlas.layer.SymbolLayer(datasource, null, {
    iconOptions: {
        offset: [
            'match',

            //Get the entityType value.
            ['get', 'entityType'],

            //If there is no title, try getting the subtitle. 
            'restaurant', ['literal', [0, -10]],

            //Default to value.
            ['literal', [0, 0]]
        ]
    }
});

Expresiones de colorColor expressions

Las expresiones de color facilitan la creación y la manipulación de valores de color.Color expressions make it easier to create and manipulate color values.

ExpressionExpression Tipo de valor devueltoReturn type DESCRIPCIÓNDescription
['rgb', number, number, number] colorcolor Crea un valor de color a partir de los componentes red, green y blue que deben oscilar entre0 y 255, y un componente alfa de 1.Creates a color value from red, green, and blue components that must range between 0 and 255, and an alpha component of 1. Si alguno de los componentes está fuera del intervalo, la expresión es un error.If any component is out of range, the expression is an error.
['rgba', number, number, number, number] colorcolor Crea un valor de color a partir de los componentes red, green y blue que deben oscilar entre 0 y 255, y un componente alfa dentro de un intervalo de 0 y 1.Creates a color value from red, green, blue components that must range between 0 and 255, and an alpha component within a range of 0 and 1. Si alguno de los componentes está fuera del intervalo, la expresión es un error.If any component is out of range, the expression is an error.
['to-rgba'] [número, número, número, número][number, number, number, number] Devuelve una matriz de cuatro elementos que contiene los componentes red, green, blue y alfa componentes, en ese orden.Returns a four-element array containing the input color's red, green, blue, and alpha components, in that order.

EjemploExample

En el ejemplo siguiente se crea un valor de color RGB que tiene un valor red de 255 y valores green y blue que se calculan multiplicando 2.5 por el valor de la propiedad temperature.The following example creates and RGB color value that has a red value of 255, and green and blue values that are calculated by multiplying 2.5 by the value of the temperature property. A medida que cambia la temperatura cambia el color a diferentes tonalidades de red.As the temperature changes the color will change to different shades of red.

var layer = new atlas.layer.BubbleLayer(datasource, null, {
    color: [
        'rgb', //Create a RGB color value.

        255,    //Set red value to 255.

        ['*', 2.5, ['get', 'temperature']], //Multiple the temperature by 2.5 and set the green value.

        ['*', 2.5, ['get', 'temperature']]  //Multiple the temperature by 2.5 and set the blue value.
    ]
});

Expresiones de operador de cadenaString operator expressions

Las expresiones de operador de cadena realizan operaciones de conversión sobre cadenas, como concatenación y conversión de las mayúsculas y minúsculas.String operator expressions perform conversion operations on strings such as concatenating and converting the case.

ExpressionExpression Tipo de valor devueltoReturn type DESCRIPCIÓNDescription
['concat', string, string, …] stringstring Concatena varias cadenas juntas.Concatenates multiple strings together. Cada valor debe ser una cadena.Each value must be a string. Use la expresión de tipo to-string para convertir otros tipos de valor en cadena, si es necesario.Use the to-string type expression to convert other value types to string if needed.
['downcase', string] stringstring Convierte la cadena especificada a minúsculas.Converts the specified string to lowercase.
['upcase', string] stringstring Convierte la cadena especificada a mayúsculas.Converts the specified string to uppercase.

EjemploExample

En el ejemplo siguiente se convierte la propiedad temperature de la característica de punto en una cadena y, luego, se concatena "° F" al final de esta.The following example converts the temperature property of the point feature into a string and then concatenates "°F" to the end of it.

var layer = new atlas.layer.SymbolLayer(datasource, null, {
    textOptions: {
        textField: ['concat', ['to-string', ['get', 'temperature']], '°F'],

        //Some additional style options.
        offset: [0, -1.5],
        size: 12,
        color: 'white'
    }
});

La expresión anterior representa una chincheta en el mapa con el texto "64° F" superpuesto sobre ella, como se muestra en la imagen siguiente.The above expression renders a pin on the map with the text "64°F" overlaid on top of it as shown in the image below.

Ejemplo de expresión de operador de cadena

String operator expression example

Expresiones de interpolación y pasoInterpolate and Step expressions

Se pueden usar para calcular valores a lo largo de una curva interpolada o una función de paso.Interpolate and step expressions can be used to calculate values along an interpolated curve or step function. Estas expresiones toman una expresión que devuelve un valor numérico como entrada, por ejemplo ['get', 'temperature'].These expressions take in an expression that returns a numeric value as their input, for example ['get', 'temperature']. El valor de entrada se evalúa con pares de valores de entrada y salida, llamados "paradas", para determinar el valor que mejor se adapta a la curva interpolada o la función de paso.The input value is evaluated against pairs of input and output values, called "stops", to determine the value that best fits the interpolated curve or step function. Los valores de entrada de cada parada deben ser un número y estar en orden ascendente.The input values for each stop must be a number and be in ascending order. Los valores de salida deben ser un número y una matriz de números, o un color.The output values must be a number, and array of numbers, or a color.

Expresión de interpolaciónInterpolate expression

Una expresión interpolate puede usarse para calcular un conjunto continuo y fluido de valores mediante la interpolación entre valores de parada.An interpolate expression can be used to calculate a continuous, smooth set of values by interpolating between stop values. Una expresión interpolate que devuelve valores de color produce un degradado de color del que se seleccionan valores de resultados.An interpolate expression that returns color values produces a color gradient in which result values are selected from.

Hay tres tipos de métodos de interpolación que se pueden usar en una expresión interpolate:There are three types of interpolation methods that can be used in an interpolate expression:

  • ['linear']: interpola linealmente entre el par de paradas.['linear'] - Interpolates linearly between the pair of stops.
  • ['exponential', base]: interpola exponencialmente entre las paradas.['exponential', base] - Interpolates exponentially between the stops. El valor base controla la velocidad a la que aumenta la salida.The base value controls the rate at which the output increases. Los valores más altos hacen que aumente la salida más hacia el extremo superior del intervalo.Higher values make the output increase more towards the high end of the range. Un valor base cercano a 1 genera una salida que aumenta más linealmente.A base value close to 1 produces an output that increases more linearly.
  • ['cubic-bezier', x1, y1, x2, y2] interpola mediante una curva Bézier cúbica definida por los puntos de control especificados.['cubic-bezier', x1, y1, x2, y2] - Interpolates using a cubic Bezier curve defined by the given control points.

Este es un ejemplo del aspecto de estos diferentes tipos de interpolaciones.Here is an example of what these different types of interpolations look like.

LinealLinear ExponencialExponential Bézier cúbicaCubic Bezier
Gráfico de interpolación lineal Gráfico de interpolación exponencial Gráfico de interpolación de Bézier cúbica

El pseudocódigo siguiente define la estructura de la expresión interpolate.The following pseudocode defines the structure of the interpolate expression.

[
    'interpolate',
    interpolation: ['linear'] | ['exponential', base] | ['cubic-bezier', x1, y1, x2, y2],
    input: number,
    stopInput1: number, 
    stopOutput1: value1,
    stopInput2: number, 
    stopOutput2: value2, 
    ...
]

EjemploExample

En el ejemplo siguiente se usa una expresión linear interpolate para establecer la propiedad color de una capa de burbuja según la propiedad temperature de la característica de punto.The following example uses a linear interpolate expression to set the color property of a bubble layer based on the temperature property of the point feature. Si el valor de temperature es inferior a 60, se devuelve "blue", si está entre 60 y menos de 70, se devuelve "yellow", si está entre 70 y menos de 80, se devuelve "orange" y si es de 80 o mayor, se devuelve "red".If the temperature value is less than 60, "blue" will be returned, if between 60 and less than 70, yellow will be returned, if between 70 and less than 80, "orange" will be returned, if 80 or greater, "red" will be returned.

var layer = new atlas.layer.BubbleLayer(datasource, null, {
    color: [
        'interpolate',
        ['linear'],
        ['get', 'temperature'],
        50,        
        'blue',
        60,
        'yellow',
        70,
        'orange',
        80,
        'red'
    ]
});

En la siguiente imagen se muestra cómo se eligen los colores de la expresión anterior.The following image demonstrates how the colors are chosen for the above expression.

Ejemplo de expresión de interpolación

Interpolate expression example

Expresión de pasoStep expression

Una expresión step puede usarse para calcular valores de resultados escalonados discretos mediante la evaluación de una función constante a trozos definida por paradas.A step expression can be used to calculate discrete, stepped result values by evaluating a piecewise-constant function defined by stops.

El pseudocódigo siguiente define la estructura de la expresión step.The following pseudocode defines the structure of the step expression.

[
    'step',
    input: number,
    output0: value0,
    stop1: number, 
    output1: value1,
    stop2: number, 
    output2: value2, 
    ...
]

Las expresiones de paso devuelven el valor de salida de la parada justo antes del valor de entrada, o el primer valor de entrada si la entrada es menor que la primera parada.Step expressions return the output value of the stop just before the input value, or the first input value if the input is less than the first stop.

EjemploExample

En el ejemplo siguiente se usa una expresión step para establecer la propiedad color de una capa de burbuja según la propiedad temperature de la característica de punto.The following example uses a step expression to set the color property of a bubble layer based on the temperature property of the point feature. Si el valor de temperature es inferior a 60, se devuelve "blue", si está entre 60 y menos de 70, se devuelve "yellow", si está entre 70 y menos de 80, se devuelve "orange" y si es de 80 o mayor, se devuelve "red".If the temperature value is less than 60, "blue" will be returned, if between 60 and less than 70, "yellow" will be returned, if between 70 and less than 80, "orange" will be returned, if 80 or greater, "red" will be returned.

var layer = new atlas.layer.BubbleLayer(datasource, null, {
    color: [
        'step',
        ['get', 'temperature'],
        'blue',
        60,
        'yellow',
        70,
        'orange',
        80,
        'red'
    ]
});

En la siguiente imagen se muestra cómo se eligen los colores de la expresión anterior.The following image demonstrates how the colors are chosen for the above expression.

Ejemplo de expresión de paso

![Step expression example](media/how-to-expressions/step-expression-example.png)

Expresiones específicas de capaLayer specific expressions

Expresiones especiales que solo se aplican a capas específicas.Special expressions that only apply to specific layers.

Expresión de densidad de mapa térmicoHeat map density expression

Una expresión de densidad de mapa término recupera el valor de densidad de mapa término para cada píxel de una capa de mapa térmico y se define como ['heatmap-density'].A heat map density expression retrieves the heat map density value for each pixel in a heat map layer and is defined as ['heatmap-density']. Este valor es un número entre 0 y 1 y se usa en combinación con una expresión interpolation o step para definir el degradado de color que se usa para colorear el mapa térmico.This value is a number between 0 and 1 and is used in combination with a interpolation or step expression to define the color gradient used to colorize the heat map. Esta expresión solo se puede usar en la opción de color de la capa de mapa térmico.This expression can only be used in the color option of the heat map layer.

Sugerencia

El color en el índice 0 de una expresión de interpolación o el color predeterminado de un color de paso definen el color del área donde no hay ningún dato y se pueden usar para definir un color de fondo.The color at index 0 in an interpolation expression or the default color of a step color, defines the color of the area where there's no data and can be used to define a background color. Muchos prefieren establecer este valor en transparente o en un negro semitransparente.Many prefer to set this value to transparent or a semi-transparent black.

EjemploExample

En este ejemplo se usa una expresión de interpolación lineal para crear un degradado de color suave para representar el mapa térmico.This example uses a liner interpolation expression to create a smooth color gradient for rendering the heat map.

var layer = new atlas.layer.HeatMapLayer(datasource, null, {
    color: [
        'interpolate',
        ['linear'],
        ['heatmap-density'],
        0, 'transparent',
        0.01, 'purple',
        0.5, '#fb00fb',
        1, '#00c3ff'
    ]
});

Además de usar un degradado suave para colorear un mapa térmico, se pueden especificar colores dentro de un conjunto de intervalos mediante una expresión step.In addition to using a smooth gradient to colorize a heat map, colors can be specified within a set of ranges by using a step expression. El uso de una expresión step para colorear el mapa térmico separa la densidad en los intervalos que más se parecen visualmente a un mapa de estilo de contorno o radar.Using a step expression for colorizing the heat map breaks up the density visually into ranges that more so resembles a contour or radar style map.

var layer = new atlas.layer.HeatMapLayer(datasource, null, {
    color: [
        'step',
        ['heatmap-density'],
        'transparent',
        0.01, 'navy',
        0.25, 'navy',
        0.5, 'green',
        0.75, 'yellow',
        1, 'red'
    ]
});

Para más información, consulte el artículo Adición de una capa de mapa térmico.For more information, see the Add a heat map layer documentation.

Expresión de progreso linealLine progress expression

Una expresión de progreso lineal recupera el progreso a lo largo de una línea de degradado en una capa de línea y se define como ['line-progress'].A line progress expression retrieves the progress along a gradient line in a line layer and is defined as ['line-progress']. Este valor es un número entre 0 y 1 y se usa en combinación con una expresión interpolation o step.This value is a number between 0 and 1 and is used in combination with a interpolation or step expression. Esta expresión solo puede usarse con la opción strokeGradient de la capa de línea.This expression can only be used with the strokeGradient option of the line layer.

Nota

La opción strokeGradient de la capa de línea requiere que la opción lineMetrics del origen de datos esté establecida en true.The strokeGradient option of the line layer requires the lineMetrics option of the data source to be set to true.

EjemploExample

En el ejemplo siguiente se usa la expresión ['line-progress'] para aplicar un degradado de color al trazo de una línea.The following example uses the ['line-progress'] expression to apply a color gradient to the stroke of a line.

var layer = new atlas.layer.LineLayer(datasource, null, {
    strokeGradient: [
        'interpolate',
        ['linear'],
        ['line-progress'],
        0, "blue",
        0.1, "royalblue",
        0.3, "cyan",
        0.5, "lime",
        0.7, "yellow",
        1, "red"
    ]
});

Vea un ejemplo en vivo.See live example

Expresión de formato de campo de textoText field format expression

La expresión de formato de campo de texto puede usarse con la opción textField de la propiedad textOptions de las capas de símbolos para proporcionar formato de texto mixto.The text field format expression can be used with the textField option of the symbol layers textOptions property to provide mixed text formatting. Esta expresión permite la especificación de un conjunto de cadenas de entrada y opciones de formato.This expression allows a set of input strings and formatting options to be specified. Las siguientes opciones pueden especificarse para cada cadena de entrada de esta expresión.The following options can be specified for each input string in this expression.

  • 'font-scale': especifica el factor de escala del tamaño de fuente.'font-scale' - Specifies the scaling factor for the font size. Si se especifica, este valor invalidará la propiedad size de textOptions para la cadena individual.If specified, this value will override the size property of the textOptions for the individual string.
  • 'text-font': especifica una o varias familias de fuentes que se deben usar para esta cadena.'text-font' - Specifies one or more font families that should be used for this string. Si se especifica, este valor invalidará la propiedad font de textOptions para la cadena individual.If specified, this value will override the font property of the textOptions for the individual string.

El siguiente pseudocódigo define la estructura de la expresión de formato de campo de texto.The following pseudocode defines the structure of the text field format expression.

[
    'format', 
    input1: string, 
    options1: { 
        'font-scale': number, 
        'text-font': string[] 
    },
    input2: string, 
    options2: { 
        'font-scale': number, 
        'text-font': string[] 
    },
    …
]

EjemploExample

En el ejemplo siguiente se aplica formato al campo de texto, para lo cual se agrega una fuente negrita y se amplía el tamaño de fuente de la propiedad title de la característica.The following example formats the text field by adding a bold font and scaling up the font size of the title property of the feature. En este ejemplo también se agrega la propiedad subtitle de la característica en una nueva línea, con un tamaño de fuente reducido.This example also adds the subtitle property of the feature on a newline, with a scaled down font size.

var layer = new atlas.layer.SymbolLayer(datasource, null, {
    textOptions: {
        textField: [
            'format',

            //Bold the title property and scale its font size up.
            ['get', 'title'],
            {
                'text-font': ['literal', ['StandardFont-Bold']],
                'font-scale': 1.25
            },

            '\n', {},   //Add a new line without any formatting.

            //Scale the font size down of the subtitle property. 
            ['get', 'subtitle'],
            { 'font-scale': 0.75 }
        ]
    }
});

Esta capa representará la característica punto, tal como se muestra en la imagen siguiente:This layer will render the point feature as shown in the image below:

Imagen de la característica de punto con el campo de texto con formato

Image of Point feature with formatted text field

Expresión de formato de númeroNumber format expression

La expresión number-format solo se puede usar con la opción textField de una capa de símbolos.The number-format expression can only be used with the textField option of a symbol layer. Esta expresión convierte al número proporcionado en una cadena con formato.This expression converts the provided number into a formatted string. Esta expresión encapsula la función Number.toLocalString de JavaScript y admite el siguiente conjunto de opciones.This expression wraps JavaScript’s Number.toLocalString function and supports the following set of options.

  • locale: especifique esta opción para convertir números en cadenas de forma que se alineen con el idioma especificado.locale - Specify this option for converting numbers to strings in a way that aligns with the specified language. Pase una etiqueta de idioma BCP 47 en esta opción.Pass a BCP 47 language tag into this option.
  • currency: para convertir el número en una cadena que representa una moneda.currency - To convert the number into a string representing a currency. Los valores posibles son los códigos de divisa ISO 4217, como "USD" para el dólar estadounidense, "EUR" para el euro o "CNY" para el RMB chino.Possible values are the ISO 4217 currency codes, such as "USD" for the US dollar, "EUR" for the euro, or "CNY" for the Chinese RMB.
  • 'min-fraction-digits': especifica el número mínimo de posiciones decimales que se incluyen en la versión de cadena del número.'min-fraction-digits' - Specifies the minimum number of decimal places to include in the string version of the number.
  • 'max-fraction-digits': especifica el número máximo de posiciones decimales que se incluyen en la versión de cadena del número.'max-fraction-digits' - Specifies the maximum number of decimal places to include in the string version of the number.

El siguiente pseudocódigo define la estructura de la expresión de formato de campo de texto.The following pseudocode defines the structure of the text field format expression.

[
    'number-format', 
    input: number, 
    options: {
        locale: string, 
        currency: string, 
        'min-fraction-digits': number, 
        'max-fraction-digits': number
    }
]

EjemploExample

En el ejemplo siguiente se usa una expresión number-format para modificar cómo se representa la propiedad revenue de la característica de punto en la opción textField de una capa de símbolos, de forma que aparece un valor de dólar estadounidense.The following example uses a number-format expression to modify how the revenue property of the point feature is rendered in the textField option of a symbol layer such that it appears a US dollar value.

var layer = new atlas.layer.SymbolLayer(datasource, null, {
    textOptions: {
        textField: [
            'number-format', 
            ['get', 'revenue'], 
            { ‘currency’: 'USD' }
        ],

        offset: [0, 0.75]
    }
});

Esta capa representará la característica punto, tal como se muestra en la imagen siguiente:This layer will render the point feature as shown in the image below:

Ejemplo de expresión de formato de número

Number format expression example

Expresión de zoomZoom expression

Una expresión zoom se usa para recuperar el nivel de zoom actual del mapa e tiempo de representación y se define como ['zoom'].A zoom expression is used to retrieve the current zoom level of the map at render time and is defined as ['zoom']. Esta expresión devuelve un número entre el intervalo de nivel de zoom mínimo y máximo del mapa.This expression returns a number between the minimum and maximum zoom level range of the map. El uso de esta expresión permite la modificación dinámica de estilos a medida que cambia el nivel de zoom del mapa.Using this expression allows styles to be modified dynamically as the zoom level of the map is changed. La expresión zoom solo puede usarse con expresiones interpolate y step.The zoom expression may only be used with interpolate and step expressions.

EjemploExample

De forma predeterminada, los radios de los puntos de datos representados en la capa del mapa térmico tienen un radio de píxel fijo para todos los niveles de zoom.By default, the radii of data points rendered in the heat map layer have a fixed pixel radius for all zoom levels. A medida que se amplía el mapa, los datos se agregan juntos y la capa de mapa térmico parece diferente.As the map is zoomed the data aggregates together and the heat map layer looks different. Una expresión zoom puede usarse para ampliar el radio de cada nivel de zoom de forma que cada punto de datos cubra el mismo área físico del mapa.A zoom expression can be used to scale the radius for each zoom level such that each data point covers the same physical area of the map. Esto hará que la capa de mapa térmico parezca más estática y coherente.This will make the heat map layer look more static and consistent. Cada nivel de zoom del mapa tiene dos veces tantos píxeles vertical y horizontalmente que nivel de zoom anterior.Each zoom level of the map has twice as many pixels vertically and horizontally as the previous zoom level. Ampliar el radio de forma que se duplique con cada nivel de zoom creará un mapa térmico que parece coherente en todos los niveles de zoom.Scaling the radius such that it doubles with each zoom level will create a heat map that looks consistent on all zoom levels. Esto puede realizarse mediante la expresión zoom con una expresión base 2 exponential interpolation, como se muestra a continuación.This can be accomplished by using the zoom expression with a base 2 exponential interpolation expression as shown below.

var layer = new atlas.layer.HeatMapLayer(datasource, null, {
    radius: [
        'interpolate',
        ['exponential', 2],
        ['zoom'],
        
        //For zoom level 1 set the radius to 2 pixels.
        10, 2,

        //Between zoom level 1 and 19, exponentially scale the radius from 2 pixels to 10,000 pixels.
        19, 10000
    ]
};

Vea un ejemplo en vivo.See live example

Expresiones de enlace de variableVariable binding expressions

Las expresiones de enlace de variable almacenan los resultados de un cálculo en una variable de forma que se puede hacer referencia a ellos en otra parte de una expresión varias veces sin tener que volver a calcularlo.Variable binding expressions store the results of a calculation in a variable so that it can be referenced elsewhere in an expression multiple times without having to recalculate it. Esta es una optimización útil para expresiones en las que intervienen muchos cálculos.This is a useful optimization for expressions that involve many calculations

ExpressionExpression Tipo de valor devueltoReturn type DESCRIPCIÓNDescription
[
    'let',    'let',
    name1: string,    name1: string,
    value1: any,    value1: any,
    name2: string,    name2: string,
    value2: any,    value2: any,
    …    …
    childExpression    childExpression
]
Almacena uno o más valores como variables para su uso por la expresión var en la expresión secundaria que devuelve el resultado.Stores one or more values as variables for use by the var expression in the child expression that returns the result.
['var', name: string] cualquieraany Hace referencia a una variable que se creó con la expresión let.References a variable that was created using the let expression.

EjemploExample

En este ejemplo se usa una expresión que calcula los ingresos relativos a la proporción de temperatura y, luego, usa una expresión case para evaluar diferentes operaciones booleanas sobre este valor.This example uses an expression that calculates the revenue relative to temperature ratio and then uses a case expression to evaluate different boolean operations on this value. La expresión let se usa para almacenar los ingresos relativos a la proporción de temperatura de modo que solo debe calcularse una vez y la expresión var hace referencia a esta variable tantas veces como sea necesario sin tener que volver a calcularla.The let expression is used to store the revenue relative to temperature ratio so that it only needs to be calculated once and the var expression references this variable as often as needed without having to recalculate it.

var layer = new atlas.layer.BubbleLayer(datasource, null, {
    color: [
        //Divide the point features `revenue` property by the `temperature` property and store it in a variable called `ratio`.
        'let', 'ratio', ['/', ['get', 'revenue'], ['get', 'temperature']],
        //Evaluate the child expression in which the stored variable will be used.
        [
            'case',

            //Check to see if the ratio is less than 100, return 'red'.
            ['<', ['var', 'ratio'], 100],
            'red',

            //Check to see if the ratio is less than 200, return 'green'.
            ['<', ['var', 'ratio'], 200],
            'green',

            //Return `blue` for values greater or equal to 200.
            'blue'
        ]
    ]
});

Pasos siguientesNext steps

Consulte los siguientes artículos para ver más ejemplos de código que implementan expresiones:See the following articles for more code samples that implement expressions:

Más información sobre las opciones de capa que admiten expresiones:Learn more about the layer options that support expressions: