Spaces:
Running
Running
import leafmap | |
import solara | |
import ipywidgets as widgets | |
import pandas as pd | |
zoom = solara.reactive(2) | |
center = solara.reactive((20, 0)) | |
def get_datasets(m): | |
url = 'https://raw.githubusercontent.com/opengeos/ee-tile-layers/main/datasets.tsv' | |
df = pd.read_csv(url, sep='\t') | |
setattr(m, 'df', df) | |
return df | |
def add_widget(m, position="topright"): | |
get_datasets(m) | |
df = m.df | |
datasets = df['id'].values.tolist() | |
style = {"description_width": "initial"} | |
padding = "0px 0px 0px 5px" | |
dataset = widgets.Dropdown( | |
options=datasets, | |
description="Dataset:", | |
style=style, | |
layout=widgets.Layout(padding=padding, width="275px"), | |
) | |
dataset.value = None | |
def dataset_changed(change): | |
if change["new"]: | |
selected = change["new"] | |
if selected not in m.get_layer_names(): | |
m.add_ee_layer(selected) | |
dataset.observe(dataset_changed, names="value") | |
m.add_widget(dataset, position=position) | |
class Map(leafmap.Map): | |
def __init__(self, **kwargs): | |
super().__init__(**kwargs) | |
# Add what you want below | |
self.add_basemap("SATELLITE", shown=False) | |
self.find_layer("Google Satellite").visible = False | |
self.add_layer_manager() | |
add_widget(self) | |
def Page(): | |
with solara.Column(style={"min-width": "500px"}): | |
# solara components support reactive variables | |
# solara.SliderInt(label="Zoom level", value=zoom, min=1, max=20) | |
# using 3rd party widget library require wiring up the events manually | |
# using zoom.value and zoom.set | |
Map.element( # type: ignore | |
zoom=zoom.value, | |
on_zoom=zoom.set, | |
center=center.value, | |
on_center=center.set, | |
scroll_wheel_zoom=True, | |
toolbar_ctrl=False, | |
data_ctrl=False, | |
height="780px", | |
) | |
solara.Text(f"Zoom: {zoom.value}") | |
solara.Text(f"Center: {center.value}") | |