Spaces:
Sleeping
Sleeping
| import { useEffect } from "react"; | |
| import { useMap } from "@vis.gl/react-google-maps"; | |
| import type { SelectMeta } from "../../../lib/types"; | |
| export default function SingleSelect({ | |
| onPick, | |
| }: { | |
| onPick: (ll: [number, number], meta: SelectMeta) => void; | |
| }) { | |
| const map = useMap(); | |
| useEffect(() => { | |
| if (!map) return; | |
| map.setOptions({ disableDoubleClickZoom: true }); | |
| const onClick = map.addListener("click", (e: google.maps.MapMouseEvent) => { | |
| if (!e.latLng) return; | |
| onPick([e.latLng.lat(), e.latLng.lng()], { | |
| kind: "click", | |
| title: "Selected point", | |
| }); | |
| }); | |
| const onDbl = map.addListener( | |
| "dblclick", | |
| (e: google.maps.MapMouseEvent) => { | |
| if (!e.latLng) return; | |
| onPick([e.latLng.lat(), e.latLng.lng()], { | |
| kind: "click", | |
| title: "Selected point", | |
| }); | |
| } | |
| ); | |
| return () => { | |
| google.maps.event.removeListener(onClick); | |
| google.maps.event.removeListener(onDbl); | |
| }; | |
| }, [map, onPick]); | |
| return null; | |
| } | |