我有一些GPS数据,我在Map上绘制。我能够成功地使用follow和Jupyter绘制这些数据一次一组地:
mapPoints = [ [lat1, lng1], [lat2, lng2], ... ]
m = folium.Map(location=location, zoom_start=15)
folium.PolyLine(mapPoints).add_to(m)
m
这将显示我想要/期望的Map。当我尝试生成多个Map时:
maps = []
for item in clustersOfPoints:
mapPoints = getListOfLatLngs(item)
m = folium.Map(location=location, zoom_start=15)
folium.PolyLine(mapPoints).add_to(m)
maps.append(m)
m
...
for map in maps:
map
没有显示任何内容。循环中的mapPoints列表是正确的(我已经通过检查值进行了验证),并且map
变量包含一个folio. folio.Map对象列表(也通过检查进行了验证)。
我怎样才能让它生成我想要的一系列Map渲染?
1条答案
按热度按时间v2g6jxz61#
您是否尝试调整代码块的最后一部分,其中循环Map以指定显示每个Map?像这样:
(You可以删除生成循环中
maps.append(m)
下面的m
行。它在那里什么都不做)。说明
你的第一个代码块可以工作,因为Jupyter notebook单元格中的最后一行(或者更具体地说,最后一个表达式或对象调用)是特殊的。您可能遇到过与每个单元格中的最后一行相关的REPL模型。无论最后一行是什么,都将对其进行评估,并以最佳方式显示该类型的数据。你什么都不用做。这就是为什么如果你在一个单元格的第一行输入
2 + 2
,然后在第二行输入3 + 3
,当你运行这个单元格时,你只会看到6
作为输出。但是,您可以将这两行更改为
print(2 + 2)
和print(3 + 3)
或display(2 + 2)
和display(3 + 3)
,然后重新运行单元格,并在连续的行上显示每个计算的结果。因此,通过我上面建议的更改,您可以明确地您希望显示每个folium贴图。并且不依赖于由特殊的Jupyter显示处理来处理的最后一个评估的东西。人们通常会认为最后一行需要处理的是
for
循环,或者任何缩进,比如if - then
条件子句,使得它不是最外面的东西,所以它不会被Jupyter对最后一个表达式的特殊处理所处理,请参阅here以获得更完整的解释。您的for
循环示例更清楚,该单元格中的最后一个求值是for
循环,耗尽了Map列表,并且没有返回任何内容,因此在这种情况下,Jupyter没有特别处理和显示任何内容。不过,为了使情况更加混乱,最近在单元格中检测到的任何matplotlib代码都会尝试显示。最后不再需要
plot.show()
由特殊的Jupyter显示处理来处理。但叶的情况并非如此。我认为Matplotlib是个例外,因为它是目前唯一一个集成了更独特、更方便处理的地方。