useClickMarker.jsx 625 B

123456789101112131415161718192021222324
  1. import { useRef, useEffect } from "react";
  2. /* global google */
  3. const useClickMarker = (map, onMove) => {
  4. const marker = useRef(null);
  5. useEffect(() => {
  6. const listener = map.current.addListener("click", ({ latLng }) => {
  7. if (marker.current) {
  8. marker.current.setMap(null);
  9. }
  10. marker.current = new google.maps.Marker({
  11. map: map.current,
  12. position: latLng,
  13. });
  14. onMove({ lat: latLng.lat(), lng: latLng.lng() }, marker.current);
  15. });
  16. return () => {
  17. google.maps.event.removeListener(listener);
  18. };
  19. }, [map, onMove]);
  20. };
  21. export default useClickMarker;