특정 장소의 지리적 좌표, 즉 위도(latitude)와 경도(longitude)를 알아내고 싶다면 Google Maps 지오코딩(Geocoding) API를 활용하면 됩니다. 지오코딩은 'Dehradun(델라두운)'처럼 사람이 읽을 수 있는 주소 문자열을 위도·경도 값으로 변환해 주는 기술로, 위치 기반 서비스를 개발할 때 가장 기본이 되는 기능입니다.
사전 준비 사항
장소의 좌표를 조회하려면 먼저 Google 지오코딩 API 키가 필요합니다. 아래 공식 문서에서 발급받을 수 있으며, 사용량에 따라 무료 할당량 내에서 이용할 수 있습니다.
https://developers.google.com/maps/documentation/geocoding/get-api-key
API 키 외에 파이썬 환경에서는 다음 두 가지 모듈을 사용합니다.
- requests — Google 서버에 HTTP 요청을 보내 좌표 데이터를 받아옵니다.
- json — 응답으로 받은 JSON 데이터를 파이썬 딕셔너리 객체로 변환합니다.
전체 소스 코드
# 필요한 라이브러리 임포트
import requests
import json
# 장소 이름 입력 받기
place = input("장소 이름을 입력하세요: ")
# Google Maps API 키를 변수에 저장
apiKey = 'YOUR_API_KEY'
# Google 지오코딩 API URL을 변수에 저장
url = 'https://maps.googleapis.com/maps/api/geocode/json?'
# requests 모듈의 get 메서드를 호출하고 응답 객체를 저장
r = requests.get(url + 'address=' + place + '&key=' + apiKey)
# 응답 객체에서 JSON 형식의 결과 추출
res = r.json()
# 결과 출력
print(res)
코드 동작 원리
- 사용자로부터 장소 이름을 입력받습니다.
- 입력된 장소 이름과 API 키를 지오코딩 API URL 뒤에 붙여 GET 요청을 전송합니다.
- 응답 객체의
.json()메서드를 호출해 JSON 데이터를 파이썬 딕셔너리로 변환합니다. - 변환된 전체 결과를 화면에 출력합니다.
실행 결과
장소 이름을 입력하세요: Dehradun
{'results': [{'address_components': [{'long_name': 'Dehradun', 'short_name': 'Dehradun', 'types': ['locality', 'political']}, {'long_name': 'Dehradun', 'short_name': 'Dehradun', 'types': ['administrative_area_level_2', 'political']}, {'long_name': 'Uttarakhand', 'short_name': 'UK', 'types': ['administrative_area_level_1', 'political']}, {'long_name': 'India', 'short_name': 'IN', 'types': ['country', 'political']}], 'formatted_address': 'Dehradun, Uttarakhand, India', 'geometry': {'bounds': {'northeast': {'lat': 30.4041936, 'lng': 78.1089305}, 'southwest': {'lat': 30.2466633, 'lng': 77.92533879999999}}, 'location': {'lat': 30.3164945, 'lng': 78.03219179999999}, 'location_type': 'APPROXIMATE', 'viewport': {'northeast': {'lat': 30.4041936, 'lng': 78.1089305}, 'southwest': {'lat': 30.2466633, 'lng': 77.92533879999999}}}, 'place_id': 'ChIJr4jIVsMpCTkRmYdRMsBiNUw', 'types': ['locality', 'political']}], 'status': 'OK'}
주요 응답 필드 살펴보기
- formatted_address — 사람이 읽기 쉬운 형태의 전체 주소입니다.
- geometry.location — 우리가 찾던 핵심 값인 위도(lat)와 경도(lng)가 담겨 있습니다.
- place_id — 해당 장소를 고유하게 식별하는 Google의 ID입니다.
- status — 요청 처리 상태를 나타내며, 성공 시 'OK'가 반환됩니다.
응답 전체가 아니라 위도와 경도만 깔끔하게 추출하고 싶다면 아래처럼 딕셔너리 경로를 지정하면 됩니다.
lat = res['results'][0]['geometry']['location']['lat']
lng = res['results'][0]['geometry']['location']['lng']
print(f'위도: {lat}, 경도: {lng}')
# 출력 예시
# 위도: 30.3164945, 경도: 78.03219179999999
참고로 Google Maps Platform은 API 키 발급 시 결제 계정 연동이 필요하며, 월간 무료 크레딧 범위 내에서는 비용 없이 사용할 수 있습니다. 또한 API 키가 외부에 노출되지 않도록 환경 변수 등으로 안전하게 관리하는 것이 좋습니다.