80 lines
2.3 KiB
Python
80 lines
2.3 KiB
Python
from folium.elements import JSCSSMixin
|
|
from folium.features import MacroElement
|
|
from folium.template import Template
|
|
from folium.utilities import remove_empty
|
|
|
|
|
|
class PolyLineTextPath(JSCSSMixin, MacroElement):
|
|
"""
|
|
Shows a text along a PolyLine.
|
|
|
|
Parameters
|
|
----------
|
|
polyline: folium.features.PolyLine object
|
|
The folium.features.PolyLine object to attach the text to.
|
|
text: string
|
|
The string to be attached to the polyline.
|
|
repeat: bool, default False
|
|
Specifies if the text should be repeated along the polyline.
|
|
center: bool, default False
|
|
Centers the text according to the polyline's bounding box
|
|
below: bool, default False
|
|
Show text below the path
|
|
offset: int, default 0
|
|
Set an offset to position text relative to the polyline.
|
|
orientation: int, default 0
|
|
Rotate text to a specified angle.
|
|
attributes: dict
|
|
Object containing the attributes applied to the text tag.
|
|
Check valid attributes here:
|
|
https://developer.mozilla.org/en-US/docs/Web/SVG/Element/text#attributes
|
|
Example: {'fill': '#007DEF', 'font-weight': 'bold', 'font-size': '24'}
|
|
|
|
See https://github.com/makinacorpus/Leaflet.TextPath for more information.
|
|
|
|
"""
|
|
|
|
_template = Template(
|
|
"""
|
|
{% macro script(this, kwargs) %}
|
|
{{ this.polyline.get_name() }}.setText(
|
|
{{ this.text|tojson }},
|
|
{{ this.options|tojavascript }}
|
|
);
|
|
{% endmacro %}
|
|
"""
|
|
)
|
|
|
|
default_js = [
|
|
(
|
|
"polylinetextpath",
|
|
"https://cdn.jsdelivr.net/npm/leaflet-textpath@1.2.3/leaflet.textpath.min.js",
|
|
)
|
|
]
|
|
|
|
def __init__(
|
|
self,
|
|
polyline,
|
|
text,
|
|
repeat=False,
|
|
center=False,
|
|
below=False,
|
|
offset=0,
|
|
orientation=0,
|
|
attributes=None,
|
|
**kwargs
|
|
):
|
|
super().__init__()
|
|
self._name = "PolyLineTextPath"
|
|
self.polyline = polyline
|
|
self.text = text
|
|
self.options = remove_empty(
|
|
repeat=repeat,
|
|
center=center,
|
|
below=below,
|
|
offset=offset,
|
|
orientation=orientation,
|
|
attributes=attributes,
|
|
**kwargs
|
|
)
|