如何在folium圆形地图的每个圆上添加标签,Python

8

嘿,我正在尝试将标签添加到folium.circle地图中,但由于某些原因它不起作用,有人可以帮忙吗?这是我的地图脚本:

import folium
# Make an empty map
m = folium.Map(location=[59.911491, 10.757933], tiles="Mapbox Bright", zoom_start=5)
# I can add marker one by one on the map
hc =list(rf_map["General HC Type"])
def color_producer(hc_type):
    if hc_type =="Oil Fields":
        return 'green'
    elif hc_type =="Oil & Gas Fields":
        return 'deeppink'
    else:
        return 'red'
for i,hc_map in zip(range(0,len(rf_map)),hc):
folium.Circle(
    location=[rf_map.iloc[i]['Latitude Dec Deg'],rf_map.iloc[i]['Longitude Dec Deg']],
    popup=rf_map.iloc[i]['Field Name'],
    radius=rf_map.iloc[i]['Oil Recovery PP Factor']*300,
    fill=True,
    fill_color=color_producer(hc_map),
        color=color_producer(hc_map),
    fill_opacity=0.7,
    label=rf_map.iloc[i]["Field Name"]
).add_to(m)
m.save('map.html')

1
你确定labelCircle的有效参数吗? - Bob Haffner
1个回答

31

嘿。你想要弹出标签还是只是在圆形的中间(或其他地方)放置文本?

弹出式:

要为圆形对象制作弹出框,您只需要使用 add_child 方法。 代码看起来会像这样:

m = folium.Map([60, 10], tiles='Mapbox Bright', zoom_start=5)
folium.Circle([60, 10], 150000, fill=True).add_child(folium.Popup('My name is Circle')).add_to(m)

输出:

enter image description here

普通文本解决方案

如果您发现弹出式解决方案不适合您的需求,那么您可以在地图上放置一个文本对象。文本的坐标可以与圆心相重合。

例如:

import folium
from folium.features import DivIcon


text = 'Test'
circle_lat = 60
circle_lon = 10

m = folium.Map([60, 10], tiles='Mapbox Bright', zoom_start=5)
folium.Circle([circle_lat, circle_lon], 150000, fill=True).add_child(folium.Popup('My name is Circle')).add_to(m)
folium.map.Marker(
    [circle_lat + 0.5, circle_lon - 1.6],
    icon=DivIcon(
        icon_size=(150,36),
        icon_anchor=(0,0),
        html='<div style="font-size: 24pt">%s</div>' % text,
        )
    ).add_to(m)
m

那段代码的输出结果是:

enter image description here

我在这里找到了解决方案。希望我正确理解了你的问题,并且示例有助于解决你的问题。如果你有疑问,或者我误解了问题,请告诉我。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接