python-3.x 使用Folium显示多个Map

sauutmhj  于 2023-05-19  发布在  Python
关注(0)|答案(1)|浏览(114)

我有一些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渲染?

v2g6jxz6

v2g6jxz61#

您是否尝试调整代码块的最后一部分,其中循环Map以指定显示每个Map?像这样:

for map in maps:
  display(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是个例外,因为它是目前唯一一个集成了更独特、更方便处理的地方。

相关问题