Я создаю приложение, которое обновляет маркеры каждый раз, когда пользователь перемещает карту. Я использую метод onBoundChanges для получения границ и сохранения их в хуках (setBounds (mapBounds).) К сожалению, когда я пытаюсь сохранить его в хуке с setBounds (mapBounds), он отправляет приложение на al oop. У вас есть идеи, как обойти проблему?
Спасибо
Вот моя основная функция
import React, { useState, useEffect, Fragment } from "react";
import {
GoogleMap,
LoadScript,
Marker,
InfoWindow,
} from "@react-google-maps/api";
const containerStyle = {
Display: "flex",
height: "100vh",
width: "100%",
};
const divStyle = {
background: `white`,
border: `1px solid #ccc`,
padding: 15,
};
const onLoad = (infoWindow) => {
console.log("infoWindow: ", infoWindow);
};
const position = {
lat: 43.6532,
lng: -79.3832,
};
const center = {
lat: 43.6532,
lng: -79.3832,
};
function ReactMap() {
const [selected, setSelected] = useState(null);
const [bounds, setBounds] = useState(center);
const mapRef = React.useRef();
const onMapLoad = React.useCallback((map) => {
mapRef.current = map;
}, []);
const onMapBoundsChanged = React.useCallback((map) => {
const latlongchange = mapRef.current.getBounds();
const lat = latlongchange.Ua.i;
const lng = latlongchange.Ua.j;
const mapBounds = {
lat: lat,
lng: lng,
};
//setBounds(mapBounds);
console.log(mapBounds);
}, []);
return (
<Fragment>
<LoadScript googleMapsApiKey="">
<GoogleMap
mapContainerStyle={containerStyle}
center={center}
onLoad={onMapLoad}
onBoundsChanged={onMapBoundsChanged}
zoom={14}
>
{selected ? (
<InfoWindow
onLoad={onLoad}
position={position}
onCloseClick={() => {
setSelected(null);
}}
>
<div style={divStyle}>
<h1>La place</h1>
</div>
</InfoWindow>
) : null}
<Marker
className="marker"
position={position}
name="My Marker"
color="blue"
onClick={() => {
setSelected(true);
}}
/>
</GoogleMap>
</LoadScript>
</Fragment>
);
}
export default ReactMap;
введите описание изображения здесь