Folium地图不显示邮政编码中的标记位置

2024-05-16 07:34:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到了一个包含位置信息的.csv文件,任务是从邮政编码中检索纬度/经度。我执行了以下代码:

import postcodes_io_api
import pandas as pd
import folium

df = pd.read_csv(r'C:\Users\AUDIO-VISUAL\Desktop\MapPinpoint\RadioFibreSites.csv', 
                 encoding='ISO-8859-1')

api = postcodes_io_api.Api(debug_http=True)

for x in df["Postcode"]:
    data = api.get_postcode(x)
    latitude = [data["result"]["latitude"]]
    longitde = [data["result"]["longitude"]]

    m = folium.Map(location=[57.240618, -2.449411],
                  zoom_start = 12,
                  tiles='Stamen Terrain')

    for la, lon in zip([data["result"]["latitude"]], [data["result"]["longitude"]]):
        folium.Marker([la, lon], popup='<i>Mt. Hood Meadows</i>').add_to(m)

但是folium映射只显示文件中的最后一项,而不是一次显示所有项


Tags: csvinioimportapidffordata
1条回答
网友
1楼 · 发布于 2024-05-16 07:34:42

我不能运行它,所以我会猜

所有的问题都是在循环内创建Map,然后为每个postcode创建新映射,并放置一个标记,在下一个循环中创建新映射而不使用以前的标记

只需在循环之前创建一次贴图

import postcodes_io_api
import pandas as pd
import folium

df = pd.read_csv(r'C:\Users\AUDIO-VISUAL\Desktop\MapPinpoint\RadioFibreSites.csv', encoding='ISO-8859-1')

api = postcodes_io_api.Api(debug_http=True)

# create map only once
m = folium.Map(location=[57.240618, -2.449411], 
                 zoom_start = 12,
                  tiles='Stamen Terrain')

# convert post and add to map
for postcode in df["Postcode"]:
    data = api.get_postcode(postcode)

    latitude = [data["result"]["latitude"]]
    longitde = [data["result"]["longitude"]]

    for la, lon in zip(latitude, longitde):
        folium.Marker([la, lon], popup='<i>Mt. Hood Meadows</i>').add_to(m)

# probably display map in Jupyter or IPython
m

顺便说一句:我不知道为什么你把数据放在[ ]里,然后你就用zip()了——这可能行得通

# convert post and add to map
for postcode in df["Postcode"]:
    data = api.get_postcode(postcode)

    lat = data["result"]["latitude"]
    lon = data["result"]["longitude"]

    folium.Marker([la, lon], popup='<i>Mt. Hood Meadows</i>').add_to(m)

相关问题 更多 >