我知道以前曾在 SO 上提出过类似的问题,但我已经尝试在答案中实施解决方案,但似乎没有任何效果。
所以,这就是我遇到的问题:我正在使用 react-google-maps 生成地图。地图有多个标记。每次单击特定标记时,我都希望弹出一个信息窗口。问题是,现在,每次我单击标记时,都会弹出所有标记的信息窗口,如下所示:
您是否愿意浏览一下我的代码并告诉我问题所在:
render() {
const MapWithAMarker = compose(
withStateHandlers(() => ({
isOpen: false,
}), {
onToggleOpen: ({ isOpen }) => () => ({
isOpen: !isOpen,
})
}),
withScriptjs,
withGoogleMap
)(props =>
<GoogleMap
defaultZoom={7}
defaultCenter={{ lat: 37.468319, lng: -122.143936 }}
containerElement={<div style={{ height: `300px`, width: `400px`, position: `absolute` }} />}
mapElement={<div style={{ height: `300px` }} /> }
containerElement={
<div style={{height: 300, width: 600}}></div>
}
loadingElement={<div style={{ height: `100%` }} />}
googleMapURL={"https://maps.googleapis.com/maps/api/js?key=AIzaSyCk55BnGfoigxDUwDaiYiyn9tFThcJVsPA"}
>
{store.results.data.map( (result, index) => {
if(result.status.color=='success'){
return <Marker
key={ index }
position={{ lat: result.contract_location.lat, lng: result.contract_location.lng }}
icon={ '/img/darkgreen_MarkerA.png' }
onClick={() => props.onToggleOpen(index)}
>
{props.isOpen && <InfoWindow onCloseClick={() => props.onToggleOpen(index)}>
<div>hi</div>
</InfoWindow>}
</Marker>
}
if(result.status.color=='warning'){
return <Marker
key={ index }
position={{ lat: result.contract_location.lat, lng: result.contract_location.lng }}
icon={ '/img/yellow_MarkerA.png' }
onClick={() => props.onToggleOpen(index)}
>
{props.isOpen && <InfoWindow onCloseClick={() => props.onToggleOpen(index)}>
<div>hi</div>
</InfoWindow>}
</Marker>
}
if(result.status.color=='danger'){
return <Marker
key={ index }
position={{ lat: result.contract_location.lat, lng: result.contract_location.lng }}
icon={ '/img/red_MarkerA.png' }
onClick={() => props.onToggleOpen(index)}
>
{props.isOpen && <InfoWindow onCloseClick={() => props.onToggleOpen(index)}>
<div>hi</div>
</InfoWindow>}
</Marker>
}
}
)}
</GoogleMap>
);