Легенда в deck.gl - PullRequest
       37

Легенда в deck.gl

1 голос
/ 26 мая 2020

Мне интересно, можно ли получить доступ к агрегированным данным со слоя deck.gl, чтобы иметь возможность рисовать легенду.

Поскольку цветовая схема предоставляется, мне потребуется только размер агрегированные значения, рассчитанные слоем сетки экрана, чтобы можно было добавить это в легенду.

Я знаю, что есть всплывающие подсказки, но в некоторых случаях было бы неплохо получить доступ к этим значениям.

1 Ответ

0 голосов
/ 08 августа 2020

Я использую HexagonLayer, и для него вы можете найти значения для слоев, используя полу настраиваемую функцию onSetColorDomain при инициализации вашего слоя. Затем сохраните массив диапазона домена в переменной и вызовите функцию make legend.

например:

        const hexlayer = new HexagonLayer({
          id: 'heatmap',
          pickable: true,
          colorRange: COLOR_RANGE,
          data:  feats_obj.coords_array,
          elevationScale: 9,
          extruded: true,
          radius: 300,
         getColorValue: points => {
            if( points.length > max_points) {
              max_points = points.length
            }
            renderCategories( incident_categories )
            return points.length
          },
          onSetColorDomain: (ecol) => {
            console.log('color domain set', ecol)
            max_span.innerHTML = ecol[1]
            color_domain = ecol;
            create_legend()

          //  console.log('max_points: ', max_points)
          },...
        })

Хакерский способ, который я понял, заключался в том, чтобы сделать максимальное количество точек в многоугольнике глобальным переменная вне инициализации слоя, и пусть она будет обновлять значение каждый раз, когда есть многоугольник, в котором больше точек, чем это максимальное значение. Пример этого в дикой природе: https://mpmckenna8.github.io/sfviz/?start_date=2020-05-01&end_date=2020-05-31 со ссылкой на репо, где вы можете взломать.

...