mapbox-gl 常用Expressions表达式


一、前言

1.1 概念

表达式(expressions)是Mapbox GL JS的一个高级功能,它为数据的添加和渲染展示提供了更多的灵活性。
任何layout、paint或者filter的值都可以用一个expression表达式来细化,一个expression表达式定义了用如下计算器计算属性值的公式。

1.2 Mapbox gl提供的表达式计算器

Mapbox gl提供的表达式计算器有如下:

  • Mathematical operators(数学 运算):数学计算器用于数值计算和其他数值相关的属性
  • Logical operators(逻辑 运算):逻辑计算器用于计算布尔值和做条件决策
  • String operators(字符串 运算):字符计算器用于计算字符串
  • Data operators(数据 运算):提供调用数据源要素集属性的接口
  • Camera operators(相机 运算):提供定义当前地图视角参数的接口

二、所有支持的运算符

// prettier-ignore
type ExpressionName =
    // Types 类型
    | 'array' | 'boolean' | 'collator' | 'format' | 'literal' | 'number' | 'object' | 'string'
    | 'to-boolean' | 'to-color' | 'to-number' | 'to-string' | 'typeof'
    // Feature data 空间元素数据
    | 'feature-state' | 'geometry-type' | 'id' | 'line-progress' | 'properties'
    // Lookup
    | 'at' | 'get' | 'has' | 'length'
    // Decision
    | '!' | '!=' | '<' | '<=' | '==' | '>' | '>=' | 'all' | 'any'
    | 'case' | 'match' | 'coalesce'
    // Ramps, scales, curves
    | 'interpolate' | 'interpolate-hcl' | 'interpolate-lab' | 'step'
    // Variable binding
    | 'let' | 'var'
    // String 字符串
    | 'concat' | 'downcase' | 'is-supported-script' | 'resolved-locale' | 'upcase'
    // Color 颜色
    | 'rgb' | 'rgba'
    // Math 数学计算
    | '-' | '*' | '/' | '%' | '^' | '+' 
    | 'abs' | 'acos' | 'asin' | 'atan' | 'ceil' | 'cos' | 'e'
    | 'floor' | 'ln' | 'ln2' | 'log10' | 'log2' | 'max' | 'min' | 'pi' 
    | 'round' | 'sin' | 'sqrt' | 'tan'
    // Zoom, Heatmap
    | 'zoom' | 'heatmap-density';

2.1 颜色运算符

2.1.1 rgb

["rgb", number, number, number]: color

2.1.2 rgba

["rgba", number, number, number, number]: color

2.1.3 hsl

["hsl", number, number, number]: color

2.1.4 hsla

["hsla", number, number, number, number]: color

2.1.5 to-rgba

["to-rgba", color]: array<number, 4>

2.2 Math 数学计算运算符

2.2.1 +, -, *, /, %, ^

["+", number, number, ...]: number
["-", number, number]: number
["-", number]: number
["*", number, number, ...]: number
["/", number, number]: number
["%", number, number]: number
["^", number, number]: number

2.2.2 abs, ceil, floor, round

["abs", number]: number
["ceil", number]: number
["floor", number]: number
["round", number]: number

2.2.3 sin, cos, tan, asin, acos, atan

["sin", number]: number
["cos", number]: number
["tan", number]: number
["asin", number]: number
["acos", number]: number
["atan", number]: number

2.2.4 e, ln, ln2, log10, log2, pi

["e"]: number
["ln", number]: number
["ln2"]: number
["log10", number]: number
["log2", number]: number
["pi"]: number

2.2.5 max, min

["max", number, number, ...]: number
["min", number, number, ...]: number

2.3 zoom、Heatmap 运算符

["zoom"]: number
["heatmap-density"]: number

三、示例

在这里插入图片描述

  • 14
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gis分享者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值