我得到了一个包含位置信息的.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
地图只显示文件中的最后一项,而不是一次显示所有的项目。
我不能运行它,所以我将猜测。
所有的问题是,你创建 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)