-
Notifications
You must be signed in to change notification settings - Fork 118
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Bug] mouse-movement not working when using some controlled props #425
Comments
Hi, I am having this exact issue where I can't drag / interact with the map if I have controlled props and update them from the cameraChanged events. I saw this closed similar issue #436 that was created after this issue was opened so is this fixed? 🤔 |
@shirleyodeng Unfortunately not, and it seems this is going to be very hard to fix (if possible at all), but I am on it. In the meantime, can you tell me what you are using the controlled props for? Maybe there are alternative solutions that work for your use-case. |
Thanks for the speedy reply @usefulthink. I have a map component which has either one or two markers. If it has two markers, I would it to center the map accordingly on load. You can see that I've used markerOne's coordinates for the center. So I saw that on load, it will trigger a
|
Oh, that might actually be a different issue that could be fixable. The details are a bit difficult to explain, but I think I have an Idea whats wrong there, I'll have a look into this. What you could try is to use the full CameraState instead of just the zoom and center props, for example: const INITIAL_CAMERA_STATE = {
center: {lat: 0, lng: 0},
zoom: 5,
heading: 0,
tilt: 0
};
const MapComponent = () => {
const [cameraState, setCameraState] = useState(INITIAL_CAMERA_STATE);
return (
<Map {...cameraState} onCameraChanged={(ev) => setCameraState(ev.detail)}></Map>
);
}; If you now want to update the camera-center without touching the zoom (same goes the other way around), you can use the state setter function like this: const updateCenter = useCallback(newCenter => {
setCameraState(prevCameraState => {
return {...prevCameraState, center: newCenter};
});
}, []); Another alternative would be to use the const map = useMap();
useEffect(() => {
if (!map || markerPositions.length === 0) return;
// assuming markerPositions is just a `google.maps.LatLngLiteral[]`
const bounds = new google.maps.LatLngBounds();
for (let p of markerPositions) {
bounds.extend(p);
}
map.fitBounds(bounds);
}, [map, markerPositions]); |
@usefulthink thank you for your suggestions! I tried using the full camera state but I came across the same non-draggable issue on the map: Screen.Recording.2024-07-04.at.22.34.28.movSo I've gone with your latter suggestion and that's worked - thank you again 🙌 |
I had this same issue and struggled with it for a couple of days. Using the cameraEventHandler-method did nothing for me and ultimately for me it was solved by changing
to using
So to me it seems that the non-prefixed values are interfering with some of the eventHandler in the library itself. |
I know this bug has been describe as "is going to be very hard to fix", but is there an update upon a possible fix ? or a workaround? I had a workaround in place where ondrag event and onZoomChanged event I resseted the custom zoom and center position that I had previously set, but using center and zoom props, prevent the infowindows autopan functionnality. So I'm in a situation where I can have the autopan on infowindow opening or the ability to zoom and center the map on a location and be able to drag and zoom the map manually after, but not both features. That is a dealbreaker for the app we develop and if there is no solution, it would force us to compeltely redo the work. Thanks |
Can you share the fix you made for this one? stuck in this for almost one week. |
All possible solutions mentioned not working for me: @usefulthink Please help fix this, I am using "@vis.gl/react-google-maps": "1.1.0", 😭 I want the users to be able to see the map by moving inside it using their cursor but not works
|
What I have done to be able to, is to add those to event to the Map component : I set sone states bfore
and in those event, I reset the state I used to set the maps props :
Sorry if I can't sahre all my code, it is compose of multiple components in a big project. But the fix with the event that I have done, prevent the autopan feature to work as describe here : https://visgl.github.io/react-google-maps/docs/api-reference/components/info-window#infowindow-attached-to-marker That the issue I still have and still need to fix ASAP |
Oh man you are a saviour 🫰 |
Description
When controlled props are updated/restricted when handling the cameraChanged events, map can't be dragged anymore.
(source: #423)
Steps to Reproduce
https://codesandbox.io/p/devbox/snowy-dream-hnwmyh?file=%2Fsrc%2Fapp.tsx%3A19%2C1-20%2C1
Environment
Logs
No response
The text was updated successfully, but these errors were encountered: