美文网首页开源GIS相关
MapboxGL中的Expressions表达式

MapboxGL中的Expressions表达式

作者: jadefan | 来源:发表于2019-10-25 14:35 被阅读0次

表达式(expressions)是Mapbox GL JS的一个高级功能,它为数据的添加和渲染展示提供了更多的灵活性。

expression

任何layout、paint或者filter的值都可以用一个expression表达式来细化,一个expression表达式定义了用如下计算器计算属性值的公式。
Mapbox gl提供的表达式计算器有如下:

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

语法

[expression_name, argument_0, argument_1, ...]

expression_name是表达式运算符,后面跟着参与运算的多个参数,支持嵌套使用

所有支持的运算符

// 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';

示例

数学运算,计算(π* 3^ 2)也就是π乘以3的2次方

['*', ['pi'], ['^', 3, 2]]

get,用于在数据源中读取属性的值,常嵌套在其他表达式中使用

["get", "value"]

逻辑运算,常在过滤器中使用,筛选FID值大于50000的要素,
number用来转换格式,第二个参数为当第一个参数转换失败时采用的默认值

{
    "filter":['>',['number',['get','FID'],0],50000]
}

interpolate,内插,采用线性算法,结合zoom级别,指定不同级别下的平滑半径
5级下半径为1,10级下半径为5,其它级别做线性插值

{
    "circle-radius": [
        "interpolate", 
        ["linear"], ["zoom"], 
        5, 1, 
        10, 5
    ]
}

step,分级

{
    circleColor: [
      'step',
      ['get', 'value'],
      '#51bbd6',
      50,
      '#f1f075',
      100,
      '#f28cb1'
    ],
}

match,匹配

{
    'circle-color': [
      'match',
      ['get', 'ethnicity'],
      'White', '#fbb03b',
      'Black', '#223b53',
      'Hispanic', '#e55e5e',
      'Asian', '#3bb2d0',
        /* other */ '#ccc'
    ]
}

相关文章

  • MapboxGL中的Expressions表达式

    表达式(expressions)是Mapbox GL JS的一个高级功能,它为数据的添加和渲染展示提供了更多的灵活...

  • shell-02 SHELL 算术运算

    a=$a+$b的形式: Let 形式: Let expressions 执行一个或多个表达式。表达式中的变量前不必...

  • JavaScript 正则表达式

    正则表达式(Regular Expressions)是用于匹配字符串中字符组合的模式。在 JavaScript 中...

  • 正则表达式

    参考:正则总结:JavaScript中的正则表达式Regular Expressions--- 可以切换成中文模式...

  • 前端调优23大规则(Part 2)

    一、Avoid CSS expressions避免使用CSS表达式 CSS表达式(css expression)又...

  • JS之正则表达式

    Regular expressions 正则表达式被用来根据某种匹配模式来寻找strings中的某些单词。 举例:...

  • JS正则表达式

    正则表达式是被用来根据某种匹配模式来寻找strings中的某些单词。 1、/expressions/gi ...

  • 查找内容

    Regular expressions 正则表达式被用来根据某种匹配模式来寻找strings中的某些单词。举例:如...

  • Androidの 错误lambda expressions ar

    android 工程中使用lambda表达式时,AS报错: lambda expressions are not ...

  • require依赖管理,配置动态路由

    依赖管理 一、带表达式的 require 语句 request 含有表达式(expressions),就会创建一个...

网友评论

    本文标题:MapboxGL中的Expressions表达式

    本文链接:https://www.haomeiwen.com/subject/puvsvctx.html