【问题标题】:Creating marker on map using Folium results in blank HTML page使用 Folium 在地图上创建标记会导致空白 HTML 页面
【发布时间】:2018-10-15 04:47:45
【问题描述】:

我尝试在 python3 中使用 folium 库创建地图。在我向地图添加标记之前,它工作正常。添加标记后,输出结果只是一个空白的 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")

【问题讨论】:

    标签: python-3.x folium


    【解决方案1】:

    @MCO 绝对正确。

    我喜欢利用html.escape() 来处理这样的问题角色

    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")
    

    【讨论】:

    • 很高兴知道,谢谢。这应该是公认的答案
    【解决方案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

    【讨论】:

    • 是单引号引起了问题!谢谢
    猜你喜欢
    • 2018-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-17
    • 2023-04-09
    • 2020-10-07
    • 2015-06-29
    相关资源
    最近更新 更多