Я использую 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 со ссылкой на репо, где вы можете взломать.