์์ด๋น์๋น ํด๋ก ์ฝ๋ฉ์ ์งํ์ค์ธ๋ฐ, ์ง๋๋ฅผ ๋ถ๋ฌ์ค๊ธฐ ์ํด์ google map api๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ํ๋ค.
https://console.cloud.google.com/google/maps-apis/credentials?project=neon-shelter-369206
Google Maps Platform์ ์ ์ํ์ฌ ์นด๋ ์ ๋ณด๋ฅผ ๋ฑ๋กํด์ค๋ค.
์ ๋ฃ ๊ฒฐ์ ๋ก ์
๋ฐ์ดํธ ํ์ ์ ๋ฃ ๊ฒฐ์ ๊ฐ ์ด๋ค์ง๋ฏ๋ก ์์ฌํ๊ณ ์ฌ์ฉํด๋ ๋๋ค๊ณ ํ๋ค.
์นด๋ ์ ๋ณด๋ฅผ ์์ฑํ์์ผ๋ฉด API ํค๊ฐ ๋ฐ๊ธ๋๋ค.
API ํค๋ ์ฌ์ฉ ๋ฐ ๊ฒฐ์ ๋ชฉ์ ์ผ๋ก ํ๋ก์ ํธ์ ๊ด๋ จ๋ ์์ฒญ์ ์ธ์ฆํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๊ณ ์ ์๋ณ์
์๋์ ๊ฐ์ด ๋์ค์ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด
> ํค ํ์
๋ก ์ ์ํ์ฌ API ํค๋ฅผ ํ์ธํ ์๋ ์๋ค.
API ํค๋ฅผ ๊ณต๊ฐ์ ์ผ๋ก ๋
ธ์ถํ๋ฉด ๊ณ์ ์ ์์์น ์์ ๋น์ฉ์ด ๋ถ๊ณผ๋ ์ ์์ผ๋ ์ฃผ์ํด์ผ ํ๋ค.
<script async
src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap">
</script>
import React, { useCallback, useEffect, useRef } from "react";
function Home() {
const mapRef = useRef(null);
const initMap = useCallback(() => {
new window.google.maps.Map(mapRef.current, {
center: { lat: -34.397, lng: 150.644 },
zoom: 8,
});
}, [mapRef]);
useEffect(() => {
initMap();
}, [initMap]);
return (
<div
className="map"
style={{ width: "500px", height: "500px" }}
ref={mapRef}
></div>
);
}
export default Home;
์์น๊ฐ ์ผ์ถ ๋น์ทํ๊ฒ ๋์จ๋ค.
๋ฆฌ์กํธ์๋ GoogleMap ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ง์ํ๋ฏ๋ก, ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํํ๋ ๋ฐฉ๋ฒ๋ ์๋ค.
https://react-google-maps-api-docs.netlify.app/
๊ตฌ๊ธ ๋งต api ๊ณต์ ๋ฌธ์
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ ์ํด ์ค์นํด์ฃผ์.
npm install --save @react-google-maps/api
์ค์น๊ฐ ์๋ฃ๋๋ฉด package-lock.json ํ์ผ์ ํตํด ์ ์์ ์ผ๋ก ์ค์น๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
๊ณต์ ๋ฌธ์ ์์ ์์ ํ์ํ ์๋, ๊ฒฝ๋ ๊ฐ๋ง ๋ฐ๊ฟ์ฃผ์๋๋ ์ ์ถ๋ ฅ๋๋ค.
import React from 'react'
import { GoogleMap, LoadScript } from '@react-google-maps/api';
const containerStyle = {
width: '700px',
height: '400px'
};
const center = {
lat: 14.018000,
lng: 120.835941
};
function MyComponent() {
return (
<LoadScript
googleMapsApiKey="YOUR_API_KEY"
>
<GoogleMap
mapContainerStyle={containerStyle}
center={center}
zoom={14}
>
<></>
</GoogleMap>
</LoadScript>
)
}
export default React.memo(MyComponent)
์ง๋์์ ์ํ๋ ์์น๋ฅผ ํ์ํ๊ธฐ ์ํด์๋ Marker๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
๋ฆฌ์กํธ ๋ฒ์ 18.0 ์ดํ์๋ MarkerF ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค๊ณ ํ๋ค.
GoogleMap ์ปดํฌ๋ํธ ๋ด๋ถ์ MarkerF ์ปดํฌ๋ํธ๋ฅผ ์์ฑํด์ผํ๋ค.
์ธ๋ถ์ ์์ฑํ๋ฉด ๋ง์ปค ํ์๊ฐ ๋ํ๋์ง ์๋๋ค.
๋ง์ปค ์ด๋ฏธ์ง๋ ๊ตฌ๊ธ๋งต ํ๋ซํผ์์ ์ ๊ณตํ๋ ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๋ค.
import { GoogleMap, LoadScript, MarkerF } from '@react-google-maps/api';
...
<GoogleMap ...
<MarkerF position={center} icon={"https://developers.google.com/maps/documentation/javascript/examples/full/images/beachflag.png"}></MarkerF>
</GoogleMap>
์ฐธ๊ณ
https://cotist.tistory.com/5
์ด ๋ถ์ ๋ธ๋ก๊ทธ์์ ๋์์ ๋ง์ด ๋ฐ์์ต๋๋ค
https://developers.google.com/maps/premium/apikey/directions-apikey?hl=ko
google maps ๊ณต์ ๋ฌธ์