没有显示Folium地图

问题描述 投票:7回答:4

在冠层版本1.5.5.3123上运行;

大叶版:0.1.2,构建:1

以下代码;

import folium  
import pandas as pd
LDN_COORDINATES = (51.5074, 0.1278)  
from IPython.display import HTML
import shapefile
#create empty map zoomed in on London
LDN_COORDINATES = (51.5074, 0.1278) 
map = folium.Map(location=LDN_COORDINATES, zoom_start=12)
display(map)  

返回

<folium.folium.Map at 0x10c01ae10>

但没有别的。

如何在ipython笔记本中显示地图?

python canopy folium
4个回答
1
投票

我发现this tutorial on Folium in iPython Notebooks非常有帮助。您创建的原始Folium实例不足以让iPython显示地图 - 您需要做更多工作才能获得iPython可以呈现的HTML。

要在iPython笔记本中显示,您需要使用myMap._build_map()方法生成html,然后将其包装在具有iPython样式的iFrame中。

import folium  
from IPython.display import HTML, display
LDN_COORDINATES = (51.5074, 0.1278) 
myMap = folium.Map(location=LDN_COORDINATES, zoom_start=12)
myMap._build_map()
mapWidth, mapHeight = (400,500) # width and height of the displayed iFrame, in pixels
srcdoc = myMap.HTML.replace('"', '&quot;')
embed = HTML('<iframe srcdoc="{}" '
             'style="width: {}px; height: {}px; display:block; width: 50%; margin: 0 auto; '
             'border: none"></iframe>'.format(srcdoc, width, height))
embed

通过返回embed作为iPython单元格的输出,iPython将自动在返回的iFrame上调用display.display()。在这种情况下,如果您之后渲染其他内容或在循环或函数中使用它,则只需要调用display()

另请注意,使用map作为变量名可能会与几个类的.map()方法混淆。


3
投票

考虑到上面的答案,另一种简单的方法是使用Jupyter笔记本。

例如(在Jupyter笔记本上):

import folium

london_location = [51.507351, -0.127758]

m = folium.Map(location=london_location, zoom_start=15)
m

并在调用'm'时看到结果。


3
投票

_build_map()不再存在。以下代码对我有用

import folium
from IPython.display import display
LDN_COORDINATES = (51.5074, 0.1278)
myMap = folium.Map(location=LDN_COORDINATES, zoom_start=12)
display(myMap)

2
投票

你有没有理由使用过时的Folium版本?

这个ipython笔记本澄清了1.2和2之间的一些差异,并解释了如何在iframe中放置folium地图。 http://nbviewer.jupyter.org/github/bibmartin/folium/blob/issue288/examples/Popups.ipynb

代码看起来像这样(在上面的笔记本中找到,它添加了一个标记,但是可以把它拿出来):

m = folium.Map([43,-100], zoom_start=4)

html="""
    <h1> This is a big popup</h1><br>
    With a few lines of code...
    <p>
    <code>
        from numpy import *<br>
        exp(-2*pi)
    </code>
    </p>
    """
iframe = folium.element.IFrame(html=html, width=500, height=300)
popup = folium.Popup(iframe, max_width=2650)

folium.Marker([30,-100], popup=popup).add_to(m)

m

这些文档也在运行,http://folium.readthedocs.io/en/latest/

© www.soinside.com 2019 - 2024. All rights reserved.