서버에서 받은 장소를 화면에 나열하고, 장소를 클릭했을 때 그 장소의 위치를 google maps를 통해 보고 싶었다.
사용자 인증 정보 만들기
를 클릭하여 API키를 만든다.Maps JavaScript API
를 찾아 ENABLE 또는 사용 버튼을 누른다. 관리버튼으로 되어 있으면 이미 사용중인 상태이다.@googlemaps/js-api-loader
package 설치npm i @googlemaps/js-api-loader
이 패키지를 사용하면 Google Maps JavaScript API를 비동기적으로 로드하여 앱에서 사용할 수 있다. 공식문서
import React, { useEffect, useMemo, useRef } from 'react'
import { Loader } from "@googlemaps/js-api-loader";
const GoogleMap = ({ address }: { address: string }) => {
const mapRef = useRef<HTMLDivElement>(null);
const geocoder = useMemo(() => new google.maps.Geocoder(), []);
useEffect(() => {
const loader = new Loader({
apiKey: process.env.NEXT_PUBLIC_GOOGLE_MAPS_API_KEY as string,
version: "weekly",
});
loader.load().then(() => {
geocoder.geocode({ address: address }, (results, status) => {
if (results) {
if (status === "OK") {
const map = new google.maps.Map(mapRef.current as HTMLDivElement, {
center: results[0].geometry.location,
zoom: 13,
});
const marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location,
});
} else {
console.error(`Geocode was not successful for the following reason: ${status}`);
}
}
});
});
}, [address, geocoder]);
return <div className='min-h-[20rem] border border-gray-400 p-2 rounded' ref={mapRef} />;
}
export default GoogleMap
How to Embed Google Maps on your Next.js App in 3 Steps