【发布时间】:2020-09-21 08:40:10
【问题描述】:
我一直在使用 Google Maps & Places API,并成功地使用了 react hooks 以允许用户放置标记、onClick 信息窗口、自动完成地点搜索和地理定位。
但是,我需要的是 onClick 它只会添加一个标记,每次用户单击新坐标时都会更改位置。不要像现在那样在每次点击时添加多个标记。
代码如下:
const [markers, setMarkers] = useState([]);
const [selected, setSelected] = useState(null);
const onMapClick = useCallback((event) => {
setMarkers((current) => [
...current,
{
lat: event.latLng.lat(),
lng: event.latLng.lng(),
time: new Date(),
},
]);
}, []);
...
return (
<GoogleMap
mapContainerStyle={mapContainerStyle}
zoom={13}
center={center}
onClick={onMapClick}
onLoad={onMapLoad}
>
{markers.map((marker) => (
<Marker
key={marker.time.toISOString()}
position={{ lat: marker.lat, lng: marker.lng }}
icon={{
url: "/crane-pin.svg",
scaledSize: new window.google.maps.Size(40, 40),
origin: new window.google.maps.Point(0, 0),
anchor: new window.google.maps.Point(15, 15),
}}
onClick={() => {
setSelected(marker);
}}
/>
))}
...
</GoogleMap>
任何帮助将不胜感激!
【问题讨论】:
标签: javascript reactjs google-maps onclick