Spaces:
Running
Running
import ipyleaflet | |
import solara | |
import ipywidgets as widgets | |
zoom = solara.reactive(2) | |
center = solara.reactive((20, 0)) | |
class Map(ipyleaflet.Map): | |
def __init__(self, **kwargs): | |
super().__init__(**kwargs) | |
self.layout.height = '600px' | |
# Add what you want below | |
label = widgets.Label('Clicked location') | |
widget = widgets.VBox([label]) | |
control = ipyleaflet.WidgetControl(widget=widget, position='bottomright') | |
self.add_control(control) | |
def handle_interaction(**kwargs): | |
latlon = kwargs.get("coordinates") | |
if kwargs.get("type") == "click": | |
output = widgets.Output() | |
widget.children = [label, output] | |
with output: | |
print(latlon) | |
self.on_interaction(handle_interaction) | |
def Page(): | |
with solara.Column(style={"min-width": "500px"}): | |
solara.SliderInt(label="Zoom level", value=zoom, min=1, max=20) | |
Map.element( | |
zoom=zoom.value, | |
on_zoom=zoom.set, | |
center=center.value, | |
on_center=center.set, | |
scroll_wheel_zoom=True, | |
) | |
solara.Text(f"Zoom: {zoom.value}") | |
solara.Text(f"Center: {center.value}") | |