我一直在尝试根据人口密度对图层进行着色,但遇到了一些问题。我在图层中有两个属性,即Area('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'] )


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

最佳答案

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 - 在Mapbox.js中计算人口密度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47338149/

10-12 15:12