Deck.gl,如何根据列中的值定义散点图的不同颜色

时间:2019-08-29 05:51:57

标签: javascript deck.gl

这实际上是我的第一个JS代码,所以请耐心等待,我设法改编了Deck.Gl的示例示例以显示散点图,现在我不确定如何根据列的值更改颜色“状态”,我知道如何针对1个值进行操作,但不确定如何使用其余的值进行处理

getFillColor: d => (d[2] === '1-pile' ? [0, 128, 255] : [255, 100, 128])

这是一个完整的复制示例

 <html>
  <head>
    <title>deck.gl solar Farm  Example</title>
    <script src="https://unpkg.com/deck.gl@^7.0.0/dist.min.js"></script>
    <script src="https://api.tiles.mapbox.com/mapbox-gl-js/v0.50.0/mapbox-gl.js"></script>
  </head>
  <body>
    <div id="container"></div>      
  </body>
  <script type="text/javascript">
    const {DeckGL, ScatterplotLayer} = deck;  
    new DeckGL({
      mapboxApiAccessToken: 'xxxxx',
      mapStyle: 'mapbox://styles/mapbox/satellite-streets-v9',
      longitude: 5.2,
      latitude:  35.49,
      zoom: 15,
      minZoom: 5,
      maxZoom: 20,
      pitch: 40.5,
      layers:[ 
        new ScatterplotLayer({
        id: 'scatter-plot',
        data: 'https://raw.githubusercontent.com/djouallah/interactivie_map/master/data.json',
        radiusScale: 3,
        radiusMinPixels: 0.25,
        getPosition: d => [d[0], d[1], 0],
        getFillColor: d => (d[3] === '1-pile' ? [0, 128, 255] : [255, 100, 128])
      })
      ]
    });
  </script>
</html>

1 个答案:

答案 0 :(得分:1)

一个简单的解决方案(我也不是javascript开发人员)可以创建一个基于变量返回颜色的函数

function get_colour( d ) {
        if( d === '1-pile' ) {
            return [0,128,255]
        } else if ( d === '2-Tracker') {
            return [255,100,128]
        } else if ( d === '3-module') {
            return [128, 128, 128]
        } else {
            return [255, 255, 255]
        }
    }

然后您可以将其称为getFillColor道具

getFillColor: d => get_colour( d[3] )