Настройка цвета Python Folium MarkerCluster - PullRequest
0 голосов
/ 20 сентября 2018

Я создаю листовую карту в фолиуме с помощью MarkerCluster.Я изучил всю документацию и искал примеры, но не могу понять, как настроить цвет для данного MarkerCluster или FeatureGroup (например, один набор зеленого, а не синего по умолчанию).

Я пытался создатьмаркеры по отдельности и итеративно добавляли их в MarkerCluster, и это дало мне нужный мне цвет, но затем html-таблица iFrame не работала должным образом, и всплывающие окна не появлялись.

Код, который я имеюнаписано работает безупречно (html-таблица, используемая для всплывающих окон, не поставляется), но я бы очень хотел иметь возможность изменить цвет для одного набора маркеров и сохранить всплывающие окна, используя методы в моем коде.Любое руководство будет с благодарностью!

or_map = folium.Map(location=OR_COORDINATES, zoom_start=8)

res_popups, res_locations = [], []
com_popups, com_locations = [], []
for idx, row in geo.iterrows():
    if row['Type'] == 'Residential':
        res_locations.append([row['geometry'].y, row['geometry'].x])
        property_type = row['Type']
        property_name = row['Name']
        address = row['address']
        total_units = row['Total Unit']
        iframe = folium.IFrame(table(property_type, property_name, 
                                     address, total_units), width=width, 
                                     height=height)
        res_popups.append(iframe)
    else:
        com_locations.append([row['geometry'].y, row['geometry'].x])
        property_type = row['Type']
        property_name = row['Name']
        address = row['address']
        total_units = row['Total Unit']
        iframe = folium.IFrame(table(property_type, property_name, address, 
                                     total_units), width=width, 
                                     height=height)
        com_popups.append(iframe)


r = folium.FeatureGroup(name='UCPM Residential Properties')
r.add_child(MarkerCluster(locations=res_locations, popups=res_popups))
or_map.add_child(r)

c = folium.FeatureGroup(name='UCPM Commercial Properties')
c.add_child(MarkerCluster(locations=com_locations, popups=com_popups))
or_map.add_child(c)

display(or_map)

1 Ответ

0 голосов
/ 20 сентября 2018

Вместо того, чтобы просто сбрасывать все свои местоположения в кластер, вы можете зациклить их и создать маркер для каждого из них - таким образом вы можете установить цвет маркера.После создания вы можете добавить маркер в нужный MarkerCluster.

for com_location, com_popup in zip(com_locations, com_popups):
    folium.Marker(com_location,
              popup=com_popup
              icon=folium.Icon(color='red', icon='info-sign')
              ).add_to(cluster)

Другой подход заключается в изменении функции стиля, как показано здесь (In [4] и In [5]).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...