https://developers.google.com/maps/documentation/javascript/?hl=ko
일단 먼저 링크로 들어갑니다.
일단 저기서 천천히 따라하시면 됩니다.
근데 일단 빠르게 진행을 해보려면
index.html에 아래 코드를 넣어줍니다.
<script
src="https://maps.googleapis.com/maps/api/js?key=%REACT_APP_GOOGLE_API_KEY%&v=weekly"
defer
></script>
그리고 저기 src에 API를 추가해줘야하는데 React를 사용하실때 환경변수를 통해 HTML에서 사용하고 싶으면 저렇게
%환경변수 이름%을 추가하면 된다고 하더라구요.
그리고 모달 안에는 문서에서 주는 기본 뼈대 코드를 이용해 구현했습니다. 여기서 props로 center에는 문서에서 예제로 주는 { lat: -25.344, lng: 131.031 } 를 넣어주고 zoom은 16을 넣었을때가 제일 이뻐서 그렇게 넣어주었습니다.
주소를 이용한 구글맵 좌표 얻기
아 그런데 항상 저희가 저렇게 하드코딩된 좌표를 가지고 올 수 있는 법이 아니죠. 그래서 주소만 입력하면 좌표를 뱉어주게끔 서버해서 해줘야하는데요. Geocoding API를 사용하면 되겠습니다.
https://developers.google.com/maps/documentation/geocoding/?hl=ko
const request = require("requestify");
const HttpError = require('../models/http-error');
// API KEY 가져오기
require("dotenv").config();
const API_KEY = process.env.GOOGLE_API_KEY
async function getCoordsForAddress(address) {
console.log(API_KEY);
const url = `https://maps.googleapis.com/maps/api/geocode/json?address=${encodeURIComponent(address)}&key=${API_KEY}`;
const response = await request.get(url);
const data = response.getBody();
if(!data || data.status === 'ZERO_RESULTS') {
const error = new HttpError('Could not find location for the specified address.', 422);
throw error;
}
const coordinates = data.results[0].geometry.location;
return coordinates;
}
module.exports = getCoordsForAddress;
여기서 희안하게 Axios를 안쓰고 requestify라는 라이브러리를 가져와 HTTP 요청을 했는데, Axios로는 제대로된 좌표가 안 가져와져서 대체 방안으로 해결한 경우입니다.
'Project > MERN' 카테고리의 다른 글
S3 + Multer를 이용한 Image Upload (0) | 2023.01.11 |
---|---|
에러 - validateDOMNesting(...): <button> cannot appear as a descendant of <button>. (0) | 2023.01.02 |
에러 - Do not use 'new' for side effects. (0) | 2022.12.22 |
에러 - Visible, non-interactive elements with click handlers must have at least one keyboard listener. (1) | 2022.12.20 |
에러 - Type null is not assignable to type T.ts(2345) (0) | 2022.12.16 |