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