{
const autoHighlight = true
function apply_map_morph(d){
var inst_x
var inst_y
if (map_type === 'Spatial'){
inst_x = d.x
inst_y = - d.y
} else {
inst_x = umap_x_scale(d['umap-x'])
inst_y = - umap_y_scale(d['umap-y'])
}
return [inst_x, inst_y]
}
var transitions = {
getPosition: {
duration:transitionDuration,
easing: d3.easeCubic
}
}
const scatterLayer = new deck.ScatterplotLayer({
id: 'scatterLayer',
data: data,
getPosition: apply_map_morph,
getFillColor: d => {
var inst_color
if (['undefined'].includes(select_meta_type)){
inst_color = [50, 50, 50, 100]
} else {
if (select_meta_type === 'number'){
if (d[select_meta] > 0){
inst_color = [255, 0, 0, opacity_scale(d[select_meta])]
} else {
inst_color = [50, 50, 50, 15]
}
} else {
var rgb = d3.color(cat_colors[d[select_meta]])
inst_color = [rgb.r, rgb.g, rgb.b, 255 * cat_opacity]
}
}
return inst_color
},
getRadius: radius,
pickable: true,
highlightColor: d => [50, 50, 50],
radiusMinPixels: radius_min_pixels,
updateTriggers: {
getFillColor: select_meta,
getPosition: map_type
},
transitions: transitions
})
deckgl.setProps({layers: [scatterLayer]});
}