iPython中的Folium地图不显示地图。引发错误:'未捕获的ReferenceError:L未定义'

时间:2015-04-19 00:39:08

标签: javascript dictionary ipython leaflet folium

尝试使用folium leaflet库在iPython中显示基本地图。 最近通过Anaconda安装了iPython,其中Folium安装了Pip。确认一切都是最新的

在iPython中运行此代码

import folium
map = folium.Map(location=[48, -102], zoom_start=3)
map.create_map('map.html')
map

我收到一个空白框。我在html上检查了控制台。我收到一些无法加载资源:net::ERR_FILE_NOT_FOUND追溯到Uncaught ReferenceError: L is not defined。我检查了html文档,发现传单参考如下:

    src="//cdnjs.cloudflare.com/ajax/libs/leaflet/0.7.3/leaflet.js">

我认为问题在于相关链接,但我在folium文档中找不到解决此问题的信息。

谢谢你的帮助。我期待着向前付钱。

1 个答案:

答案 0 :(得分:0)

我发现这个tutorial on Folium in iPython Notebooks非常有帮助。另外,我对这个似乎相关的其他Stackoverflow question做了详细的回答。

要在iPython笔记本中显示,您需要使用myMap._build_map()方法生成html,将其包装在iframe中,然后将iFrame返回给iPython进行显示。

以下是您的情况示例:

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

请注意,.create_map()方法会将完整的地图HTML保存到文件中,而您希望将HTML代码保存在iPython中以方便显示 - 这就是我们使用._build_map()的原因。以embed开头的行是魔术发生的地方 - 我们将folium生成的HTML内容包装在iframe中,iframe可根据需要进行样式设置,然后作为单元格的输出返回。 IPython在内部调用返回到单元格的结果.display(),因此你应该有一个漂亮的居中地图。