Reactjs Can';不要点击我放在Forge查看器上的POI
嗨,我试过一个有兴趣的forge viewer,想在上面加上iot。我的程序正在运行 这是我的代码poiExtension.js,这里我们有json(x,y,z)调用的所有poi: 这是我的poiList.js(右边的可点击列表):Reactjs Can';不要点击我放在Forge查看器上的POI,reactjs,autodesk-forge,autodesk,Reactjs,Autodesk Forge,Autodesk,嗨,我试过一个有兴趣的forge viewer,想在上面加上iot。我的程序正在运行 这是我的代码poiExtension.js,这里我们有json(x,y,z)调用的所有poi: 这是我的poiList.js(右边的可点击列表): import React,{Component}来自'React'; 导入“./poiList.css”; //沉着的反应坚定地表达了内心深处的感受 //这是一个联合公报,也是一个延伸 类PoiList扩展组件{ 建造师(道具){ 超级(道具); 此.state=
import React,{Component}来自'React';
导入“./poiList.css”;
//沉着的反应坚定地表达了内心深处的感受
//这是一个联合公报,也是一个延伸
类PoiList扩展组件{
建造师(道具){
超级(道具);
此.state={
poi:[],
selectedPoi:未定义,
设置:{
defaultPointColor:[61183255],
selectedPointColor:[37,27,255],
DefaultPointTransparance:0.4,
spriteScaleFactor:0.8,
/海拔高度
精神状态:15.0
}
};
}
componentDidMount(){
获取(“/settings”)
。然后(响应=>{
如果(!response.ok){
log(`status${response.status}`);
抛出新错误(`status${response.status}`);
}
返回response.json();
})
。然后(json=>{
这是我的国家({
设置:json
});
})
.catch(e=>{
log(`Settings call failed:${e}`);
这是我的国家({
消息:`设置调用失败:${e}`
});
})
获取('/poi')
。然后(响应=>{
如果(!response.ok){
log(`status${response.status}`);
抛出新错误(`status${response.status}`);
}
返回response.json();
})
。然后(json=>{
这是我的国家({
poi:json.poi
});
})
.catch(e=>{
log(`POI调用失败:${e}`);
这是我的国家({
消息:`POI调用失败:${e}`
});
});
}
render(){
if(this.props.poiExtension!==未定义){
this.props.poiExtension.clearAllPOI();
this.props.poiExtension.setSettings(this.state.settings);
}
让自我=这个;
设poiList=[];
设指数=0;
this.state.poi.map((poi)=>{
if(this.props.poiExtension!==未定义){
this.props.poiExtension.createPOI(poi,this.state.selectedPoi==poi);
}
让colorState=索引%2==1?“浅灰色”:“;
colorState=this.state.selectedPoi===poi?“选定”:colorState;
让classC=“poiEntry”+颜色状态;
设项目=(
{
自我状态({
选择poi:poi,
});
}}>
{poi.type}({poi.x},{poi.y},{poi.z})
);
索引++;
poiList.push(poitem);
})
返回(
巴蒂门特E17酒店
{poiList}
);
}
}
导出默认列表;
我不知道怎么做……如果有人能帮我,我会很高兴:)看起来你的问题与Forge或Viewer.js没有关系,但是 如果您所说的“不能点击POI”是指当您点击POI的DIV时,什么都没有发生(没有突出显示),那么重新编辑序列化您的状态,这样您测试当前
selectedPOI
是否被选中的方式就不起作用了-使用可序列化键(ID字符串等)来识别您的POI:
colorState = this.state.selectedPoi.id === poi.id ? "selected" : colorState;
import React, { Component } from 'react';
import './poiList.css';
// Composant react affichant la liste des points d'intérêts
// C'est ce composant qui communique avec l'extension POI
class PoiList extends Component {
constructor(props) {
super(props);
this.state = {
poi: [],
selectedPoi: undefined,
settings: {
defaultPointColor: [61, 183, 255],
selectedPointColor: [37, 27, 255],
defaultPointTransparancy: 0.4,
spriteScaleFactor: 0.8,
//altitude par défaut
spriteAltitude: 15.0
}
};
}
componentDidMount() {
fetch('/settings')
.then(response => {
if (!response.ok) {
console.log(`status ${response.status}`);
throw new Error(`status ${response.status}`);
}
return response.json();
})
.then(json => {
this.setState({
settings: json
});
})
.catch(e => {
console.log(`Settings call failed: ${e}`);
this.setState({
message: `Settings call failed: ${e}`
});
})
fetch('/poi')
.then(response => {
if (!response.ok) {
console.log(`status ${response.status}`);
throw new Error(`status ${response.status}`);
}
return response.json();
})
.then(json => {
this.setState({
poi: json.poi
});
})
.catch(e => {
console.log(`POI call failed: ${e}`);
this.setState({
message: `POI call failed: ${e}`
});
});
}
render() {
if(this.props.poiExtension !== undefined) {
this.props.poiExtension.clearAllPOI();
this.props.poiExtension.setSettings(this.state.settings);
}
let self = this;
let poiList = [];
let index = 0;
this.state.poi.map((poi) => {
if(this.props.poiExtension !== undefined) {
this.props.poiExtension.createPOI(poi, this.state.selectedPoi === poi);
}
let colorState = index % 2 === 1 ? "lightgrey" : "";
colorState = this.state.selectedPoi === poi ? "selected" : colorState;
let classC = "poiEntry " + colorState;
let poiItem = (
<div className={classC} key={index} onClick={() => {
self.setState({
selectedPoi: poi,
});
}}>
{poi.type} ({poi.x}, {poi.y}, {poi.z})
</div>
);
index++;
poiList.push(poiItem);
})
return(
<div className="fullscreen">
<div className="poiTitle">BATIMENT E17</div>
<div className="poiList">
{ poiList }
</div>
</div>
);
}
}
export default PoiList;
colorState = this.state.selectedPoi.id === poi.id ? "selected" : colorState;