如何在 folium.circile 地图 python 中的每个圆圈上添加标签

Mer*_*ani 2 python folium

嘿,我正在尝试将标签添加到 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')
Run Code Online (Sandbox Code Playgroud)

kor*_*nos 14

嘿。你想要弹出标签还是只是一个圆圈中间(或其他地方)的文本?

弹出:

要为圆形对象制作弹出框,您只需要使用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)
Run Code Online (Sandbox Code Playgroud)

输出:

在此处输入图片说明

常规文本解决方案

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

例如:

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
Run Code Online (Sandbox Code Playgroud)

该代码的输出是:

在此处输入图片说明

我在这里找到了文本的解决方案。我希望正确理解了这个问题,并且这些示例有助于解决您的问题。如果您有任何疑问或我误解了问题中的某些内容,请告诉我。