Folium地图不显示来自邮编的标记位置。

问题描述 投票:0回答:1

我得到了一个包含位置信息的.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 地图只显示文件中的最后一项,而不是一次显示所有的项目。

python pandas dataframe folium
1个回答
0
投票

我不能运行它,所以我将猜测。

所有的问题是,你创建 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)
© www.soinside.com 2019 - 2024. All rights reserved.