使用Folium在地图上新层打印线/多行

16 投票
3 回答
22393 浏览
提问于 2025-04-18 07:47

我试过使用Python的folium库,效果挺不错的,但有一个功能我找不到,或者说我觉得缺少:我想在地图上新加一层,显示多行文本。

我查看了文档,只能找到如何添加标记和多边形标记的内容。关于在新层上打印文本,我只找到了一些像这样的例子

但我需要的东西要简单得多。我想我可以用GeoJSON格式插入包含多行信息的内容,但我甚至不知道这个GeoJSON应该是什么格式。

有没有什么办法可以让我实现多行文本的显示呢?

附注:如果你不知道怎么用Python/Folium实现这个功能,我也很乐意听听我应该在JavaScript输出中添加什么,以便用Leaflet实现多行文本(Folium库就是用的这个)。

3 个回答

4

以上两种方法对我来说都没用,无法将新线条添加为folium.Map对象的新图层(我使用的是folium 0.11)。对我有效的方法是使用folium.FeatureGroup

coords = [[[42.3554025, -71.0728116], [42.3554142, -71.0728438]],
 [[42.3554142, -71.0728438], [42.3554296, -71.0728738]]]
test_map = folium.Map([42.3554025, -71.0728116], tiles='Cartodb Positron', zoom_start=15)
fg = folium.FeatureGroup("Lines")
folium.PolyLine(coords).add_to(fg)
f.add_to(test_map)
folium.LayerControl(position='bottomright').add_to(test_map)
test_map

这段代码会打印出一个地图,地图上有一个“线条”图层,当你切换这个图层时,就能看到在上面坐标绘制的线条。

14

在之前的例子中,有些函数现在已经不推荐使用了;看起来现在更好的做法是使用类似下面的方式:

import folium

# Coordinates are 10 points on the great circle from Boston to
# San Francisco.
# Reference: http://williams.best.vwh.net/avform.htm#Intermediate
coordinates = [
    [42.3581, -71.0636],
    [42.82995815, -74.78991444],
    [43.17929819, -78.56603306],
    [43.40320216, -82.37774519],
    [43.49975489, -86.20965845],
    [41.4338549, -108.74485069],
    [40.67471747, -112.29609954],
    [39.8093434, -115.76190821],
    [38.84352776, -119.13665678],
    [37.7833, -122.4167]]

# Create the map and add the line
m = folium.Map(location=[41.9, -97.3], zoom_start=4)
my_PolyLine=folium.PolyLine(locations=coordinates,weight=5)
m.add_child(my_PolyLine)
# m.save('line_example_newer.html')
8

我终于找到了一种在2014年1月实现的方式,这个方法在Folium里,但没有文档说明。这个方法叫做line

这里有一个例子,是这个附加功能的作者提供的。

撰写回答