구글 지도에 지리적 좌표를 표시하는 방법은 매우 다양합니다. 하지만 그 결과를 로컬 HTML 파일로 저장하고 싶다면, gmplot이라는 파이썬 모듈을 활용하는 것이 가장 깔끔한 해결책입니다.
gmplot은 구글 지도 위에 데이터를 플로팅할 수 있게 해주는 파이썬 라이브러리입니다. matplotlib와 비슷한 인터페이스를 제공하며, 구글 지도 위에 각종 데이터를 얹어 보여줄 수 있는 HTML과 자바스크립트 코드를 자동으로 생성해 줍니다.
설치 방법
gmplot이 아직 설치되어 있지 않다면 pip 명령어 한 줄로 간단히 설치할 수 있습니다.
pip install gmplot
위 명령어를 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다.

출력 결과를 보면 최신 버전인 gmplot-1.2.0이 컴퓨터에 정상적으로 설치된 것을 알 수 있습니다.
gmplot 라이브러리는 탐색적 지도 뷰를 아주 간단하게 만들 수 있는 다양한 플로팅 메서드를 제공합니다. 또한 생성 결과를 HTML로 바로 내보낼 수 있어 매우 유연하게 활용할 수 있습니다.
아래에서 대표적인 활용 사례를 하나씩 살펴보겠습니다.
케이스 1 – gmplot으로 기본 지도 만들기
특정 위치의 지도를 표시하려면 해당 위치의 위도(latitude)와 경도(longitude) 값, 그리고 확대 배율(zoom)을 지정해야 합니다.
# gmplot 라이브러리 임포트
from gmplot import *
# 지도 생성
# 첫 두 인자는 지리적 좌표(위도, 경도), 세 번째는 확대 배율
gmap = gmplot.GoogleMapPlotter(17.438139, 78.39583, 18)
# 파일을 저장할 위치
gmap.draw("C:\\Users\\rajesh\\Desktop\\map11.html")
실행 결과

참고: 위 화면처럼 지도에 워터마크가 표시되는 이유는, 현재 구글 지도 서비스가 API를 통해서는 무료가 아니기 때문입니다. 더 선명한 지도를 보려면 본인의 API 키를 등록해야 합니다. 아래 코드를 참고하세요.
케이스 1 (GOOGLE_API_KEY 적용)
# gmplot 라이브러리 임포트
from gmplot import *
# 지도 생성
gmap = gmplot.GoogleMapPlotter(17.438139, 78.39583, 18)
# 구글 지도는 현재 유료 서비스이므로 API 키가 필요합니다.
# 아래 줄을 주석 처리한 채 실행하면 "For Development Purpose Only"
# 문구와 함께 저해상도 지도가 표시됩니다.
#gmap.apikey = "Your_API_KEY"
gmap.apikey = "AIzaSyDeRNMnZ__VnQDiATiuz4kPjF_c9r1kWe8"
# 파일 저장 위치
gmap.draw("C:\\Users\\rajesh\\Desktop\\map11.html")
참고: 구글 지도 API 키('Your_API_KEY')를 발급받아 gmap.apikey에 할당해야 합니다. 아래 출력 예시는 필자가 직접 발급받은 키를 사용한 결과이며, 누구나 아래 링크에서 무료로 API 키를 발급받을 수 있습니다.
https://developers.google.com/maps/documentation/embed/get-api-key
실행 결과

케이스 2 – 구글 지도에 폴리곤(다각형) 그리기
# gmplot 패키지 임포트
import gmplot
latitude_list = [17.4567417, 17.5587901, 17.6245545]
longitude_list = [78.2913637, 78.007699, 77.9266135]
gmap = gmplot.GoogleMapPlotter(17.438139, 78.3936413, 11)
# 산점도 표시
gmap.scatter(latitude_list, longitude_list, '#FF0000', size=40, marker=False)
# polygon 메서드는 좌표를 이용해 다각형을 그립니다.
gmap.polygon(latitude_list, longitude_list, color='cornflowerblue')
gmap.apikey = "Your_API_KEY"
gmap.draw("C:\\Users\\rajesh\\Desktop\\map3.html")
실행 결과

케이스 3 – 산점도 표시 후 좌표 사이에 선 그리기
# gmplot 패키지 임포트
import gmplot
# 위도/경도 좌표 설정 (차르미나르 주변 주요 명소)
Charminar_top_attraction_lats, Charminar_top_attraction_lons = zip(*[
(17.3833, 78.4011), (17.4239, 78.4738), (17.3713, 78.4804),
(17.3616, 78.4747), (17.3578, 78.4717), (17.3604, 78.4736),
(17.2543, 78.6808), (17.4062, 78.4691), (17.3950, 78.3968),
(17.3587, 78.2988), (17.4156, 78.4750)])
# 지도의 중심 좌표와 확대 배율 지정
gmap3 = gmplot.GoogleMapPlotter(17.3616, 78.4747, 13)
# 산점도 표시
gmap3.scatter(Charminar_top_attraction_lats, Charminar_top_attraction_lons,
'#FF0000', size=50, marker=False)
# plot 메서드는 주어진 좌표들 사이에 선을 그립니다.
gmap3.plot(Charminar_top_attraction_lats, Charminar_top_attraction_lons,
'cornflowerblue', edge_width=3.0)
# 구글 API 키
gmap3.apikey = "Your_API_Key"
# HTML로 저장
gmap3.draw(r"c:\users\rajesh\desktop\maps\scatter.html")
실행 결과

케이스 4 – 히트맵과 산점도를 함께 사용해 지진 분포 표현하기
# 필요한 라이브러리 임포트 import gmplot import numpy as np # 위도/경도 700개를 무작위로 생성 latitude = (np.random.random_sample(size=700) - 0.5) * 180 longitude = (np.random.random_sample(size=700) - 0.5) * 360 # 지도의 중심 좌표와 확대 배율 지정 gmap = gmplot.GoogleMapPlotter(0, 0, 2) # 히트맵 플로팅 gmap.heatmap(latitude, longitude) gmap.scatter(latitude, longitude, c='r', marker=True) # 구글 API 키 gmap.apikey = "Your_Google_API_Key" # HTML로 저장 gmap.draw(r"c:\users\rajesh\desktop\maps\country_heatmap.html")
실행 결과
