Добавление текста в маркеры Folium FastMarkerCluster? - PullRequest
0 голосов
/ 03 июня 2018

С помощью следующего кода я пытаюсь добавить текст в маркеры FastMarkerCluster моего фолиума. Приведенный ниже код создает карту, но без добавления текста.Текст содержится в виде строки, соответствующей каждой длине пары.

Я полагаю, что проблема связана с тем фактом, что df, содержащий текстовый столбец, является объектом серии pandas.Из того, что я понял, это то, как это должно быть указано в этом случае 'df.columnname'.Однако это не сработало.Я также попытался превратить столбец в список, но и без этого подхода.Любые указатели действительно ценятся.

xlat = guns2013['latitude'].tolist()
xlon = guns2013['longitude'].tolist()
locations = list(zip(xlat, xlon))
map2 = folium.Map(location=[38.9, -77.05], tiles='CartoDB dark_matter', 
zoom_start=1)
marker_cluster = MarkerCluster().add_to(map2)
for point in range(0, len(locations)):
   folium.Marker(locations[point], 
   popup='guns2013.texts'[point]).add_to(marker_cluster)

map2

Ответы [ 2 ]

0 голосов
/ 26 июля 2019

Я поиграл с этим, и в конечном итоге вы МОЖЕТЕ передать всплывающие окна из Python в функцию callback следующим образом:

some_map = folium.Map(location=[df['latitude'].mean(), 
   df['longitude'].mean()], 
 zoom_start=9)
               
callback = ('function (row) {' 
                'var marker = L.marker(new L.LatLng(row[0], row[1]), {color: "red"});'
                'var icon = L.AwesomeMarkers.icon({'
                "icon: 'info-sign',"
                "iconColor: 'white',"
                "markerColor: 'green',"
                "prefix: 'glyphicon',"
                "extraClasses: 'fa-rotate-0'"
                    '});'
                'marker.setIcon(icon);'
                "var popup = L.popup({maxWidth: '300'});"
                "const display_text = {text: row[2]};"
                "var mytext = $(`<div id='mytext' class='display_text' style='width: 100.0%; height: 100.0%;'> ${display_text.text}</div>`)[0];"
                "popup.setContent(mytext);"
                "marker.bindPopup(popup);"
                'return marker};')
                             
some_map.add_child(FastMarkerCluster(df[['latitude', 'longitude','use_code_name']].values.tolist(), callback=callback))
0 голосов
/ 03 июня 2018

Конечно же, ответ пришел.Может быть, это помогает кому-то сталкиваться с той же проблемой.Если текст не отображается, проверьте, что df, содержащий его, не является объектом серии pandas, и, если это так, преобразуйте в pandas df с первой строкой.Остальное работает.

df_text = df_old[['texts']]

xlat = guns2013['latitude'].tolist()
xlon = guns2013['longitude'].tolist()
locations = list(zip(xlat, xlon))
map2 = folium.Map(location=[38.9, -77.05], tiles='CartoDB dark_matter', 
zoom_start=1)
marker_cluster = MarkerCluster().add_to(map2)
try:
   for point in range(0, len(locations)):
   folium.Marker(locations[point], popup = folium.Popup(df_text['texts'] 
   [point])).add_to(marker_cluster)    
except:
   pass
map2
...