使用Folium在地图上新层打印线/多行
我试过使用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
。
这里有一个例子,是这个附加功能的作者提供的。