Ich verwende react-google-maps, um eine Karte mit Markierungen anzuzeigen, und wenn Sie auf eine Markierung klicken, werden alle Informationsfenster geöffnet. Ich möchte nur das Informationsfenster eines Markers anzeigen, wenn ich darauf klicke und die anderen bleiben geschlossen.Wenn mehrere Markierungen auf einer Karte angezeigt werden, wie öffnet man nur ein Informationsfenster, wenn man auf eine Markierung klickt?
Hier ist mein Code:
<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>
Und ich Öffnen und Schließen des Infofenster mit diesem
import { compose, withProps, withStateHandlers, withHandlers, withState } from "recompose";
...
withStateHandlers(() => ({
isOpen: false,
}), {
onToggleOpen: ({ isOpen, id }) =>() => ({
isOpen: !isOpen,
})
}),
Ich bin Mapping über alle Markierungen, und sie auf der Karte angezeigt werden. Wie könnte ich nur einen Marker InfoWindow öffnen? Here is a related question, aber es ist nicht mit React gemacht und verwendet nicht die react-google-maps.
Wie schalte ich den Wahr/Falsch-Zustand, ob das Infofenster geöffnet ist oder nicht? – userden
Sie verwenden 'selectedPlace', um dies zu steuern. Wenn es "null" ist, dann ist kein 'InfoWindow' offen und wenn es nicht null ist, bedeutet das, dass ein' infoWindow' offen ist, das Sie mit Informationen über eine Stelle füllen sollten, wo der Index gleich 'selectedPlace' ist. –
Viele Konsolenfehler damit, wenn die Karte geladen wird. Zum Beispiel ein Problem mit withHandlers. Ich wundere mich warum? – userden