2
마커가있는지도를 표시하는 데 react-google-maps을 사용하고 마커를 클릭하면 모든 정보 창이 열립니다. 하나의 마커의 정보 창을 클릭 할 때만 표시하고 다른 창은 닫힌 상태로 유지하려고합니다.지도에 여러 마커를 표시 할 때 마커를 클릭 할 때 하나의 정보창을 여는 방법은 무엇입니까?
여기 내 코드입니다 :
<GoogleMap
defaultZoom={15}
defaultCenter={{ lat: 51.508530, lng: -0.076132 }}
>
{props.places && props.places.map((place, i) =>
<Marker onClick={props.onToggleOpen} key={i} position={{ lat: place.geometry.location.lat(), lng: place.geometry.location.lng() }} >
{props.isOpen && <InfoWindow onCloseClick={props.onToggleOpen}>
<div>{place.name}</div>
</InfoWindow>}
</Marker>
)}
</GoogleMap>
그리고 열고 나는 모든 마커를 통해 매핑있어이
import { compose, withProps, withStateHandlers, withHandlers, withState } from "recompose";
...
withStateHandlers(() => ({
isOpen: false,
}), {
onToggleOpen: ({ isOpen, id }) =>() => ({
isOpen: !isOpen,
})
}),
으로 정보창을 종료하고지도에 표시하고 있습니다. InfoWindow 마커를 하나만 열려면 어떻게해야합니까? Here is a related question이지만 React로 만들지 않았으며 react-google-maps를 사용하지 않습니다.
를? – userden
이것을 제어하기 위해서'selectedPlace'를 사용합니다. 기본적으로 'null'이면 InfoWindow가 열려 있지 않으며 null이 아닌 경우 infoWindow 열기가 열려 있다는 것을 의미하므로 index가 'selectedPlace'와 동일한 위치에 대한 정보를 채워야합니다. –
지도를로드 할 때 이와 관련된 많은 콘솔 오류가 발생합니다. 예를 들어, withHandlers 문제. 왜 그런지 궁금해? – userden