使用Folium在地图上创建标记会导致空白HTML页面

时间:2018-08-28 17:21:49

标签: python-3.x folium

我尝试使用python3中的folium库创建一个Map。直到我在地图上添加标记,它都可以正常工作。添加标记后,输出结果将显示在空白的HTML页面中。

import folium

map = folium.Map(location=[20.59,78.96], tiles = "Mapbox Bright")

folium.Marker([26.80,80.76],popup="Hey, It's Moradabad").add_to(map)
map.save("mapOutput.html")

2 个答案:

答案 0 :(得分:2)

根据我的经验,folium对单引号(')非常敏感。

原因是,folium生成javascript,并将您的字符串转换为javascript字符串,并用单引号将其引起来。但是,它并不会转义字符串中包含的任何单引号(甚至不确定在js中是否可行),因此在字符串中具有单引号与不关闭python中的字符串具有相同的效果。

解决方案:用反引号(`)或(更好)使用@Bob Haffner的答案替换字符串中的所有单引号。


编辑:出于偶然,我偶然发现了另一个解决方案。显然folium.Popup有一个自变量parse_html。像这样使用它:

folium.Marker([x,y], popup=folium.Popup("Foo'Bar",parse_html=True)).add_to(map)

但是,如果没有遇到unicodeescape错误,我将无法使其工作。尽管如此,据推测它已存在,并且可能对您有用。


编辑2:正如我在github上被告知的那样,此问题将在下一版本中修复。参考:folium#962

答案 1 :(得分:2)

@MCO是绝对正确的。

我喜欢利用http://www.bursamalaysia.com/market/listed-companies/company-announcements/4372609来处理问题字符,

import folium
import html

map = folium.Map(location=[20.59,78.96], tiles = "Mapbox Bright")

folium.Marker([26.80,80.76],popup=html.escape("Hey, It's Moradabad")).add_to(map)
map.save("mapOutput.html")