我得到了包含位置信息的.csv文件,并被要求从邮政编码中检索lat / long。我执行了这段代码:
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)
m
但是,叶贴图仅显示文件中的最后一项,而不是一次显示所有这些。有帮助吗?
我无法运行它,所以我会猜测。
所有问题是,您在循环内创建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)
# display map
m