Search code examples
pythonpython-3.xiconsmapsfolium

folium draw star marker


I am looking into drawing three different markers on a folium map: square, circle and star. The first two are done using BeautifyIcon plugins. I am having trouble to plot the star. I would like to draw only the star without the pin. Any suggestion?

import folium

# Make an empty map
m = folium.Map(location=[15, 0], tiles="OpenStreetMap", zoom_start=2)

# square marker
icon_square = folium.plugins.BeautifyIcon(
    icon_shape='rectangle-dot', 
    border_color='red', 
    border_width=10,
)
folium.Marker([50, -70], tooltip='square', icon=icon_square).add_to(m)

# circle marker
icon_circle = folium.plugins.BeautifyIcon(
    icon_shape='circle-dot', 
    border_color='green', 
    border_width=10,
)
folium.Marker([-20, 25], tooltip='circle', icon=icon_circle).add_to(m)

# star marker
icon_star = folium.Icon(
    prefix='fa', 
    icon='star', 
    icon_color='blue',
)
folium.Marker([60, 125], tooltip='star', icon=icon_star).add_to(m)


m.save('markers_on_folium_map.html')

Solution

  • Just working on BeautifyIcon options can satisfy your needs:

    import folium
    from folium.plugins import BeautifyIcon
    
    # Make an empty map
    m = folium.Map(location=[15, 0], tiles="OpenStreetMap", zoom_start=2)
    
    # square marker
    icon_square = BeautifyIcon(
        icon_shape='rectangle-dot', 
        border_color='red', 
        border_width=10,
    )
    folium.Marker([50, -70], tooltip='square', icon=icon_square).add_to(m)
    
    # circle marker
    icon_circle = BeautifyIcon(
        icon_shape='circle-dot', 
        border_color='green', 
        border_width=10,
    )
    folium.Marker([-20, 25], tooltip='circle', icon=icon_circle).add_to(m)
    
    # star marker
    icon_star = BeautifyIcon(
        icon='star',
        inner_icon_style='color:blue;font-size:30px;',
        background_color='transparent',
        border_color='transparent',
    )
    
    folium.Marker([60, 125], tooltip='star', icon=icon_star).add_to(m)
    
    m.save('markers_on_folium_map.html')
    

    and you get:

    enter image description here