MapboxMap 之 Expression(四)

系列文章目录

Types

Lookup

Decision

Math

String
Color
Zoom

Heatmap

Feature data
Variable binding
Ramps, scales, curves


目录

前言

一、基本运算

1. 加 (sum)

2. 减 (subtract)

3.乘 (product)

4.除 (division)

5.取余 (mod)

6.幂 (pow)

二、三角函数

1.sin

2.cos

3.tan

三、反三角函数

1.asin

2.acos

3.atan

四、普通函数

1.abs

2.ceil

3.floor

4.sqrt

5.round

6.min

7.max

五、数学常数

1.e

2.pi

六、对数

1.ln

2.ln2

3.log2

4.log10

七、distance

总结




前言

在上一篇中介绍了Expression的描述符操作,本篇是将的按照 Math区分,也可以理解为一些数学运算符,在一些需要动态计算显示的情景下还是很有需要的。


Expression可以按Math分类

一、基本运算

1. 加 (sum)

/**
* 返回输入的总和。
*
* ["+", number, number, ...]: number
*/
Expression sum(@Size(min = 2) Expression... numbers)
Expression sum(@Size(min = 2) Number... numbers)
Expression subtract(@NonNull Expression number) 

eg:

CircleLayer circleLayer = new CircleLayer("layer-id", "source-id");
circleLayer.setProperties(
   circleRadius(sum(10.0f, ln2(), pi()))
 );

2. 减 (subtract)

/**
  * 对于两个输入,返回从第一个输入减去第二个输入的结果。对于单个输入,返回从0减去它的结果。
  *
  * ["-", number, number]: number
  * ["-", number]: number
 */
Expression subtract(@NonNull Number number)
Expression subtract(@NonNull Expression first, @NonNull Expression second) 
Expression subtract(@NonNull Number first, @NonNull Number second) 

eg:

CircleLayer circleLayer = new CircleLayer("layer-id", "source-id");
   circleLayer.setProperties(
   circleRadius(subtract(10.0f, pi()))
 );

3.乘 (product)

/**
  * 返回输入的乘积。
  *
  * ["*", number, number, ...]: number
   */
Expression product(@Size(min = 2) Expression... numbers) 
Expression product(@Size(min = 2) Number... numbers) 

eg:

  CircleLayer circleLayer = new CircleLayer("layer-id", "source-id");
   circleLayer.setProperties(
   circleRadius(product(10.0f, 2.0f))
 );

4.除 (division)

/**
*返回第一个输入除以第二个输入的浮点数的结果。
*
* ["/", number, number]: number
*/
Expression division(@NonNull Expression first, @NonNull Expression second) 
Expression division(@NonNull Number first, @NonNull Number second)

eg:

CircleLayer circleLayer = new CircleLayer("layer-id", "source-id");
  circleLayer.setProperties(
  circleRadius(division(10.0f, 20.0f))
 );

5.取余 (mod)


/**
  * 返回第一个输入除以第二个输入的整数后的余数。
  *
  * ["%", number, number]: number
*/

Expression mod(@NonNull Expression first, @NonNull Expression second)
Expression mod(@NonNull Number first, @NonNull Number second)

eg:

CircleLayer circleLayer = new CircleLayer("layer-id", "source-id");
    circleLayer.setProperties(
    circleRadius(mod(10.0f, 10.0f))
);

6.幂 (pow)

/**
 * 返回将第一个输入提高到第二个指定的幂的结果。
 *
 * ["^", number, number]: number
*/

Expression pow(@NonNull Expression first, @NonNull Expression second)
Expression pow(@NonNull Number first, @NonNull Number second) 

eg:

CircleLayer circleLayer = new CircleLayer("layer-id", "source-id");
   circleLayer.setProperties(
   circleRadius(pow(5.0f, 2.0f))
 );

二、三角函数

1.sin

/**
 * 返回输入的正弦值。
 *
 * ["sin", number]: number
*/   
Expression sin(@NonNull Expression number)
Expression sin(@NonNull Number number)

eg:

CircleLayer circleLayer = new CircleLayer("layer-id", "source-id");
   circleLayer.setProperties(
    circleRadius(sin(90.0f))
);

2.cos

/**
* 返回输入的余弦值。
*
* ["sin", number]: number
*/  
Expression cos(@NonNull Expression number)
Expression cos(@NonNull Number number)

eg:

 CircleLayer circleLayer = new CircleLayer("layer-id", "source-id");
   circleLayer.setProperties(
   circleRadius(cos(0))
);

3.tan

/**
 * 返回输入的正切值。
 *
 * ["sin", number]: number
*/  
Expression tan(@NonNull Expression number)
Expression tan(@NonNull Number number)

eg:
 
CircleLayer circleLayer = new CircleLayer("layer-id", "source-id");
   circleLayer.setProperties(
   circleRadius(tan(45.0f))
 );

三、反三角函数

1.asin

/**
 * 返回输入的反正弦值。
 *
 * ["asin", number]: number
*/   
Expression sin(@NonNull Expression number)
Expression sin(@NonNull Number number)

eg:

CircleLayer circleLayer = new CircleLayer("layer-id", "source-id");
   circleLayer.setProperties(
   circleRadius(asin(90.0f))
);

2.acos

/**
* 返回输入的反余弦值。
*
* ["acos", number]: number
*/  
Expression acos(@NonNull Expression number)
Expression acos(@NonNull Number number)

eg:

 CircleLayer circleLayer = new CircleLayer("layer-id", "source-id");
   circleLayer.setProperties(
   circleRadius(acos(0))
);

3.atan

/**
 * 返回输入的反正切值。
 *
 * ["atan", number]: number
*/  
Expression atan(@NonNull Expression number)
Expression atan(@NonNull Number number)

eg:
 
CircleLayer circleLayer = new CircleLayer("layer-id", "source-id");
   circleLayer.setProperties(
   circleRadius(atan(90.0f))
 );

四、普通函数

1.abs

/**
*返回输入的绝对值。
*
* ["abs", number]: number
*/
Expression abs(Expression expression)
Expression abs(@NonNull Number number)

eg:

CircleLayer circleLayer = new CircleLayer("layer-id", "source-id");
   circleLayer.setProperties(
   circleRadius(abs(-3.14159265359f))
  );

2.ceil

/**
 *返回大于或等于输入的最小整数。
 *
 * ["ceil", number]: number
 */

Expression ceil(Expression expression)
Expression ceil(@NonNull Number number)

eg:


CircleLayer circleLayer = new CircleLayer("layer-id", "source-id");
   circleLayer.setProperties(
   circleRadius(ceil(3.14159265359))
 );

3.floor

/**
 *返回小于或等于输入的最大整数。
 *
 * ["floor", number]: number
*/   
 Expression floor(Expression expression)
 Expression floor(@NonNull Number number)

eg:

CircleLayer circleLayer = new CircleLayer("layer-id", "source-id");
   circleLayer.setProperties(
   circleRadius(floor(pi()))
 );

4.sqrt

/**
 *返回输入的平方根。
 *
 * ["sqrt", number]: number
*/
 Expression sqrt(Expression expression)
 Expression sqrt(@NonNull Number number)

eg:

CircleLayer circleLayer = new CircleLayer("layer-id", "source-id");
   circleLayer.setProperties(
   circleRadius(sqrt(25.0f))
 );
   

5.round

/**
 *将输入舍入到最接近的整数。中途值从零舍入。例如,[“ round”,-1.5]计算为-2。
 *
 * ["round", number]: number
*/    
Expression round(Expression expression)
Expression round(@NonNull Number number)

eg:

CircleLayer circleLayer = new CircleLayer("layer-id", "source-id");
   circleLayer.setProperties(
  circleRadius(round(3.14159265359f))
 );

6.min

/**
  *返回输入的最小值。
  *
  * ["min", number, number, ...]: number
*/
Expression min(@Size(min = 1) Expression... numbers)
Expression min(@Size(min = 1) Number... numbers)

eg:

CircleLayer circleLayer = new CircleLayer("layer-id", "source-id");
   circleLayer.setProperties(
   circleRadius(min(3.141, 3.14f, 3.15f))
);

7.max

/**
  *返回输入的最大值。
  *
  * ["max", number, number, ...]: number
*/
Expression max(@Size(min = 1) Expression... numbers)
Expression max(@Size(min = 1) Number... numbers)

eg:

CircleLayer circleLayer = new CircleLayer("layer-id", "source-id");
   circleLayer.setProperties(
   circleRadius(max(3.141, 3.14f, 3.15f))
);
 

五、数学常数

1.e

/**
 *返回数学常数e。
 *
 * ["e"]: number
*/

Expression.e()

eg:

CircleLayer circleLayer20 = new CircleLayer("layer-id", "source-id");
      circleLayer20.setProperties(
      circleRadius(product(literal(10.0f), e()))
);

2.pi

/**
* 返回数学常数pi。
*
* ["pi"]:number
*/
Expression.pi()

eg:

CircleLayer circleLayer21 = new CircleLayer("layer-id", "source-id");
      circleLayer21.setProperties(
      circleRadius(product(literal(10.0f), pi()))
);

六、对数

1.ln

/**
 *返回输入的自然对数。
 *
 * ["ln", number]: number
*/
Expression ln(Expression number)
Expression ln(@NonNull Number number)

eg:

CircleLayer circleLayer = new CircleLayer("layer-id", "source-id");
   circleLayer.setProperties(
   circleRadius(ln(10))
);

2.ln2

/**
  * 返回数学常数ln(2)。
  *
  * ["ln2"]: number
*/

Expression ln2(Expression number)
Expression ln2(@NonNull Number number)

eg:

CircleLayer circleLayer = new CircleLayer("layer-id", "source-id");
   circleLayer.setProperties(
   circleRadius(product(literal(10.0f), ln2()))
);

3.log2

/**
  * 返回输入的以2为底的对数。
  *
  * ["log2", number]: number
*/
Expression log2(Expression number)
Expression log2(@NonNull Number number)

eg:

CircleLayer circleLayer = new CircleLayer("layer-id", "source-id");
    circleLayer.setProperties(
    circleRadius(log2(2))
);

4.log10

/**
  *返回输入的以10为底的对数。
  *
  * ["log10", number]: number
*/
Expression log10(Expression number)
Expression log10(@NonNull Number number)

eg:

CircleLayer circleLayer = new CircleLayer("layer-id", "source-id");
   circleLayer.setProperties(
   circleRadius(log10(10))
);

七、distance

/**
 * 返回评估的要素和输入几何之间的最短距离(以米为单位)。
 * 输入值可以是Point,MultiPoint,LineString,MultiLineString,Polygon,MultiPolygon, 
   Feature
 * 或FeatureCollection类型的有效GeoJSON。
 * 由于编码几何的精度损失,返回的距离值的精度可能会有所不同,尤其是在缩放级别13以下。
 *
 * ["distance", object]: number
*/
Expression distance(@NonNull GeoJson geoJson) 
 

总结

  • 实现了常用数学运算符,可以让我们进行高度自定义。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值