Files
Buffteks-Website/venv/lib/python3.12/site-packages/folium/plugins/beautify_icon.py
2025-05-08 21:10:14 -05:00

116 lines
3.3 KiB
Python

from branca.element import MacroElement
from folium.elements import JSCSSMixin
from folium.template import Template
from folium.utilities import remove_empty
class BeautifyIcon(JSCSSMixin, MacroElement):
"""
Create a BeautifyIcon that can be added to a Marker
Parameters
----------
icon: string, default None
the Font-Awesome icon name to use to render the marker.
icon_shape: string, default None
the icon shape
border_width: integer, default 3
the border width of the icon
border_color: string with hexadecimal RGB, default '#000'
the border color of the icon
text_color: string with hexadecimal RGB, default '#000'
the text color of the icon
background_color: string with hexadecimal RGB, default '#FFF'
the background color of the icon
inner_icon_style: string with css styles for the icon, default ''
the css styles of the icon
spin: boolean, default False
allow the icon to be spinning.
number: integer, default None
the number of the icon.
Examples
--------
Plugin Website: https://github.com/masajid390/BeautifyMarker
>>> BeautifyIcon(
... text_color="#000", border_color="transparent", background_color="#FFF"
... ).add_to(marker)
>>> number_icon = BeautifyIcon(
... text_color="#000",
... border_color="transparent",
... background_color="#FFF",
... number=10,
... inner_icon_style="font-size:12px;padding-top:-5px;",
... )
>>> Marker(
... location=[45.5, -122.3],
... popup=folium.Popup("Portland, OR"),
... icon=number_icon,
... )
>>> BeautifyIcon(icon="arrow-down", icon_shape="marker").add_to(marker)
"""
_template = Template(
"""
{% macro script(this, kwargs) %}
var {{ this.get_name() }} = new L.BeautifyIcon.icon(
{{ this.options|tojavascript }}
)
{{ this._parent.get_name() }}.setIcon({{ this.get_name() }});
{% endmacro %}
"""
)
ICON_SHAPE_TYPES = [
"circle",
"circle-dot",
"doughnut",
"rectangle-dot",
"marker",
None,
]
default_js = [
(
"beautify_icon_js",
"https://cdn.jsdelivr.net/gh/marslan390/BeautifyMarker/leaflet-beautify-marker-icon.min.js",
)
]
default_css = [
(
"beautify_icon_css",
"https://cdn.jsdelivr.net/gh/marslan390/BeautifyMarker/leaflet-beautify-marker-icon.min.css",
)
]
def __init__(
self,
icon=None,
icon_shape=None,
border_width=3,
border_color="#000",
text_color="#000",
background_color="#FFF",
inner_icon_style="",
spin=False,
number=None,
**kwargs
):
super().__init__()
self._name = "BeautifyIcon"
self.options = remove_empty(
icon=icon,
icon_shape=icon_shape,
border_width=border_width,
border_color=border_color,
text_color=text_color,
background_color=background_color,
inner_icon_style=inner_icon_style,
spin=spin,
isAlphaNumericIcon=number is not None,
text=number,
**kwargs
)