🖥️ IT, 컴퓨터/🐍 Python

[Python] Folium으로 만든 동적지도에 위치 이름 팝업 띄우기

김 홍시 2023. 12. 17.
반응형

 

문제상황

 

 

https://kimhongsi.tistory.com/entry/Python-%EA%B2%BD%EC%9C%84%EB%8F%84-%EC%A2%8C%ED%91%9C%EB%A1%9C-shp-%EB%A7%8C%EB%93%A4%EC%96%B4%EC%84%9C-%EC%A7%80%EB%8F%84%EB%A1%9C-%ED%91%9C%ED%98%84%ED%95%98%EA%B8%B0-follium

 

[Python] folium :: 폴리움으로 경위도 좌표로 shp 만들어서 동적 지도 만들기

[Python] Create an shp with longitude-latitude coordinates and plot it as a map (folium) 1. 점(point) shp인 경우 import shapefile import geopandas as gpd from shapely.geometry import Point import folium import pandas as pd charger = pd.read_csv("경위

kimhongsi.tistory.com

에서 만든 지도이다.

 

마커를 눌렀을 때 장소에 대한 자세한 내용이 표시되도록 하고 싶다.

 

 

마커 / 툴팁 / 팝업

마커 (Marker)
정의: 마커는 지도 상의 특정 위치를 나타내는 아이콘입니다. 이것은 주로 관심 지점(Points of Interest, POI)을 표시하는 데 사용됩니다.
용도: 마커는 사용자가 지도에서 특정 위치를 쉽게 식별할 수 있도록 돕습니다. 예를 들어, 관광 명소, 상점, 버스 정류장 등의 위치를 표시할 때 사용할 수 있습니다.
사용자 상호작용: 사용자는 마커를 클릭하여 추가 정보를 얻거나, 다른 행동(예: 상세 페이지로의 이동)을 취할 수 있습니다.


툴팁 (Tooltip)
정의: 툴팁은 마커나 지도의 특정 요소 위에 마우스를 올렸을 때 나타나는 작은 정보 상자입니다. 이 상자는 간단한 텍스트 정보를 제공합니다.
용도: 툴팁은 사용자가 마커나 지도 요소에 대한 간단한 정보를 빠르게 얻고자 할 때 유용합니다. 예를 들어, 마커의 이름이나 간단한 설명을 표시하는 데 사용될 수 있습니다.
특징: 툴팁은 일반적으로 마우스를 해당 요소 위에 올렸을 때 자동으로 나타나며, 마우스를 치우면 사라집니다.


팝업 (Popup)
정의: 팝업은 사용자가 마커나 지도의 특정 요소를 클릭했을 때 나타나는 상세 정보 창입니다.
용도: 팝업은 툴팁보다 더 많은 정보를 제공하는 데 사용됩니다. 예를 들어, 장소의 상세 설명, 사진, 링크 등이 포함될 수 있습니다.
사용자 상호작용: 팝업은 사용자가 해당 마커나 요소를 클릭했을 때 나타나며, 종종 '닫기' 버튼을 클릭하여 닫을 수 있습니다.

 

 

해결방법

# 각 포인트에 대한 상세 정보 말풍선 추가
for _, row in gdf.iterrows():
    tooltip = f"{row['다이소 점포명']}"
    popup_text = f"점포명: {row['다이소 점포명']}<br>주소: {row['주소']}"
    popup = folium.Popup(popup_text, max_width=300)
    folium.Marker(
        location=[row.geometry.y, row.geometry.x],
        popup=popup,
        tooltip=tooltip
    ).add_to(m)

위의 코드를 추가하자.

 

툴팁 코드 설명 : 마커에 마우스 가까이 대었을 때 점포명이 나오도록 함

팝업텍스트 코드 설명 : 마커를 눌렀을 때 점포명과 주소가 나오도록 함. 이때 점포명은 '다이소 점포명' 열을, 주소는 '주소'열을 사용.

 

 

전체 코드는 아래

import pandas as pd
import geopandas as gpd
import folium
from shapely.geometry import Point

# CSV 파일 로드
charger = pd.read_csv("다이소_주소.csv", encoding="UTF-8")

# 경위도 좌표
geometry = [Point(x, y) for x, y in zip(charger["X"], charger["Y"])]

# GeoDataFrame 생성
gdf = gpd.GeoDataFrame(charger, geometry=geometry, crs="EPSG:4326")

# 지도 생성
m = folium.Map(location=[37.5, 127], zoom_start=11)

# 각 포인트에 대한 상세 정보 말풍선 추가
for _, row in gdf.iterrows():
    tooltip = f"{row['다이소 점포명']}"
    popup_text = f"점포명: {row['다이소 점포명']}<br>주소: {row['주소']}"
    popup = folium.Popup(popup_text, max_width=300)
    folium.Marker(
        location=[row.geometry.y, row.geometry.x],
        popup=popup,
        tooltip=tooltip
    ).add_to(m)

# 배경 지도 추가
folium.TileLayer('CartoDB positron', name='Light Map', control=False).add_to(m)

# 지도 보여주기
folium.LayerControl().add_to(m)
m

이와 같이 툴팁과 팝업이 모두 활성화됨 

반응형

댓글