Javascript 有没有办法修改六边形图层中的单个列?
因此,我创建了一个平面六边形图层,并将各种交互绑定到Javascript 有没有办法修改六边形图层中的单个列?,javascript,reactjs,deck.gl,react-map-gl,Javascript,Reactjs,Deck.gl,React Map Gl,因此,我创建了一个平面六边形图层,并将各种交互绑定到onClickprop,如下所示 我现在的目标是通过添加大纲、更改该列的颜色或沿这些线进行其他操作来修改单击的单个列。我可能会通过在这一层下面添加另一层来实现暴力解决方案,但文档中没有详细介绍这一点,我想看看是否有其他方法可以修改现有层 我还想获得一些信息,比如给定列中的点数,但我想这与第一部分有关 以下是我目前拥有的: //这里是我为六边形图层创建设置的地方 常数六角形层={ id:'六边形层', 数据:道具G细胞, pickable:是的
onClick
prop,如下所示
我现在的目标是通过添加大纲、更改该列的颜色或沿这些线进行其他操作来修改单击的单个列。我可能会通过在这一层下面添加另一层来实现暴力解决方案,但文档中没有详细介绍这一点,我想看看是否有其他方法可以修改现有层
我还想获得一些信息,比如给定列中的点数,但我想这与第一部分有关
以下是我目前拥有的:
//这里是我为六边形图层创建设置的地方
常数六角形层={
id:'六边形层',
数据:道具G细胞,
pickable:是的,
对,,
半径:50,
升降比例:0,
自动突出显示:正确,
不透明度:0.3,
getPosition:d=>d.坐标,
//下面是onClick交互
onClick:(层,$event)=>{
//我可以从这里的图层变量中获得一些信息,
//但这还远远不够我要实现的目标
开关(道具ctx相位){
案例“设置”:
道具.移动.放置单元(图层.对象.位置)
打破
“游戏”案例:
//替换为活动单元功能
const activeUnit=Object.keys(props.G.players[props.ctx.currentPlayer].parties)[0]
props.moves.moveUnit(activeUnit、layer.index、layer.object.position)
打破
违约:
控制台错误('未知阶段',props.ctx.phase)
}
返回真值
}
};
//检查一些传入数据以添加屏幕截图中显示的鸭子
//不一定与问题有关,但它们在截图中,所以我将其包括在内
useffect(()=>{
常数tempPieces=[]
props.G.players.forEach(玩家=>{
Object.values(player.pieces).forEach(piece=>{
临时推(
createScenegraphLayer(
零件id,
单元模型图[件类型],
工件坐标,30
)
)
})
})
设置件(临时件)
},[props.G.细胞,props.G.玩家])
//渲染层
返回(
{pieces.map(piece=>(
))}
);
我现在的目标是通过添加大纲、更改该列的颜色或沿这些线进行其他操作来修改单击的单个列
要更改单击列的颜色,可以使用和,方法如下:
const App = () => {
const [highlightedObjectIndex, setHighlightedObjectIndex] = useState(-1);
const onClick = info => {
if (info.object) {
setHighlightedObjectIndex(info.object.index);
}
};
const layers = [
new HexagonLayer({
id: "hexagon-layer",
data,
pickable: true,
radius: 200,
getPosition: d => d.COORDINATES,
highlightColor: [0, 0, 255],
highlightedObjectIndex,
updateTriggers: {
highlightedObjectIndex
},
onClick
})
];
return (
<DeckGL
initialViewState={INITIAL_VIEW_STATE}
controller={true}
layers={layers}
>
</DeckGL>
);
};
const-App=()=>{
const[highlightedObjectIndex,setHighlightedObjectIndex]=useState(-1);
const onClick=info=>{
if(info.object){
setHighlightedObjectIndex(info.object.index);
}
};
常数层=[
新六角形层({
id:“六边形层”,
数据,
pickable:是的,
半径:200,
getPosition:d=>d.坐标,
highlightColor:[0,0,255],
highlightedObjectIndex,
更新触发器:{
highlightedObjectIndex
},
onClick
})
];
返回(
);
};