【问题标题】:Calculating population density in Mapbox.js在 Mapbox.js 中计算人口密度
【发布时间】:2017-11-16 20:01:31
【问题描述】:

我一直在尝试根据人口密度为图层着色,但遇到了一些问题。我在图层中有两个属性,面积('ALAND')和人口('B01001_001'),我想用它们来计算人口密度,然后用它来填充。这是我的尝试:

map.setPaintProperty('fullcitylayer', 'fill-color', ['interpolate', interpolation: ['linear'], input:['/', ['get', 'B19001_017'], ['/',['get', 'ALAND'],1000000]], stop_input1: 10, stop_output1: '#00adef', stop_input2: 100, stop_output2: '#212529', stop_input3: 1000, stop_output3: '#ea950b', stop_input4: 5000, stop_output4: '#e94e34'] )

由于某种原因,当我尝试运行此程序时,我不断收到语法错误。知道为什么吗?

【问题讨论】:

    标签: javascript mapbox mapbox-gl-js


    【解决方案1】:

    github issue复制过来我回答了你的问题:

    您仍然必须编写有效的 JavaScript 才能使表达式工作?

    您的问题与['interpolation', interpolation: ['linear'], ...] 之类的行有关。您不能像这样“标记”数组项,它们的目的已经由数组/表达式中的位置决定。表达式始终采用[<operator>, <arg1>, <arg2>, <argN>, ...] 的形式。所以你的表达应该是这样的:

    [
      'interpolate',
      ['linear'],
      ['/', ['get', 'B19001_017'], ['/', ['get', 'ALAND'], 1000000]],
      10,
      '#00adef',
      100,
      '#212529',
      1000,
      '#ea950b',
      5000,
      '#e94e34'
    ];
    

    【讨论】:

    • 啊,是的,这更有意义。我认为我正在关注的事实是我使用了“任意表达式”,我认为它绕过了一些典型的 javascript 规则。哈。谢谢!这非常有帮助。
    猜你喜欢
    • 2017-12-23
    • 1970-01-01
    • 2018-09-27
    • 2020-04-10
    • 1970-01-01
    • 2011-03-31
    • 2016-10-19
    • 1970-01-01
    • 2015-08-28
    相关资源
    最近更新 更多