EtoC

google maps 현재 위치 받기 본문

FrontEnd/React

google maps 현재 위치 받기

게리드 2023. 9. 13. 22:18

리뷰 컴포넌트를 만들고보니

'가져올 가게에 있는 리뷰도 google maps에 등록된거잖아?' 라는 생각이 들었다.

우리가 할 일은 24시 카페의 위치와 내용들을 구글맵에서 그대로 받아오는거라서 내가 리뷰를 만들 필요가 없었다.

 

결국 구글맵스부터 만들고 데이터를 받아와서 작업을 했어야했다.

일단 구글맶는 띄워두었으니 유저가 접속했을때 그 위치를 받아오는 작업을 먼저 하기로 했다.

import React, { useEffect, useState } from 'react';
import { GoogleMap, Marker, useJsApiLoader } from '@react-google-maps/api';

const MapContainer = () => {
  const { isLoaded, loadError } = useJsApiLoader({
    googleMapsApiKey: process.env.REACT_APP_GOOGLE_MAPS_API_KEY,
  });

  const [center, setCenter] = useState({ lat: 0, lng: 0 });

  const mapStyles = {
    width: '100%',
    height: '400px',
  };

  useEffect(() => {
    if (navigator.geolocation) {
      navigator.geolocation.getCurrentPosition(
        position => {
          setCenter({
            lat: position.coords.latitude,
            lng: position.coords.longitude,
          });
        },
        error => {
          console.error('Error getting user location:', error);
        },
      );
    } else {
      console.error('Geolocation is not supported by this browser.');
    }
  }, []);

  if (loadError) return <div>위치 권한 동의 안할 시 이미지 띄우기</div>;

  return (
    isLoaded && (
      <GoogleMap mapContainerStyle={mapStyles} center={center} zoom={10}>
        <Marker position={center} />
      </GoogleMap>
    )
  );
};

export default MapContainer;

geolocation으로 현재위치의 위도와 경도를 받아서 중심으로 잡았다.

자 이제 어떻게 뜰까? 두근두근했는데

 

에엥  위치 권한을 줬는데도 에러가 불러올수 없다고한다.

크롬의 쿠키설정도 만져보고 초기화도해보고 했지만 똑같은 상황이였다.

그러다가 맥북에서 막고있다는 사실을 알았다.

위의 이미지처럼 권한을 주고나니 원하는대로 뜨는것을 확인했다.