This is a dynamic basemap¶
In [ ]:
Copied!
In [1]:
Copied!
from ipyleaflet import Map, basemaps
from ipywidgets import Dropdown, Button, VBox, Layout
import ipyleaflet
from ipyleaflet import Map, basemaps
from ipywidgets import Dropdown, Button, VBox, Layout
import ipyleaflet
In [2]:
Copied!
apa = Map(center=(40, -100), zoom=4)
dropdown = Dropdown(
options={
"OpenStreetMap": basemaps.OpenStreetMap.Mapnik,
"OpenTopoMap": basemaps.OpenTopoMap,
"Satellite": basemaps.Esri.WorldImagery,
"Dark": basemaps.CartoDB.DarkMatter,
},
description="Basemap:",
)
dropdown.observe(lambda change: setattr(apa, "basemap", change["new"]), names="value")
apa.add_control(ipyleaflet.WidgetControl(widget=dropdown, position="topright"))
apa
apa = Map(center=(40, -100), zoom=4)
dropdown = Dropdown(
options={
"OpenStreetMap": basemaps.OpenStreetMap.Mapnik,
"OpenTopoMap": basemaps.OpenTopoMap,
"Satellite": basemaps.Esri.WorldImagery,
"Dark": basemaps.CartoDB.DarkMatter,
},
description="Basemap:",
)
dropdown.observe(lambda change: setattr(apa, "basemap", change["new"]), names="value")
apa.add_control(ipyleaflet.WidgetControl(widget=dropdown, position="topright"))
apa
Out[2]:
In [3]:
Copied!
boton = Button(description="Ocultar")
def toggle(b):
dropdown.layout.visibility = (
"hidden" if dropdown.layout.visibility != "hidden" else "visible"
)
boton.description = (
"Mostrar" if dropdown.layout.visibility == "hidden" else "Ocultar"
)
boton.on_click(toggle)
apa.add_control(
ipyleaflet.WidgetControl(widget=VBox([dropdown, boton]), position="topright")
)
apa
boton = Button(description="Ocultar")
def toggle(b):
dropdown.layout.visibility = (
"hidden" if dropdown.layout.visibility != "hidden" else "visible"
)
boton.description = (
"Mostrar" if dropdown.layout.visibility == "hidden" else "Ocultar"
)
boton.on_click(toggle)
apa.add_control(
ipyleaflet.WidgetControl(widget=VBox([dropdown, boton]), position="topright")
)
apa
Out[3]:
In [4]:
Copied!
class MapaInteractivo(Map):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self._configurar_controles()
def _configurar_controles(self):
self.dropdown = Dropdown(
options=[
("OpenStreetMap", basemaps.OpenStreetMap.Mapnik),
("OpenTopoMap", basemaps.OpenTopoMap),
("Satellite", basemaps.Esri.WorldImagery),
("Dark", basemaps.CartoDB.DarkMatter),
],
description="Mapa:",
)
self.boton = Button(description="Ocultar")
self.dropdown.observe(lambda c: setattr(self, "basemap", c["new"]), "value")
self.boton.on_click(
lambda b: [
setattr(
self.dropdown.layout,
"visibility",
(
"hidden"
if self.dropdown.layout.visibility != "hidden"
else "visible"
),
),
setattr(
self.boton,
"description",
(
"Mostrar"
if self.dropdown.layout.visibility == "hidden"
else "Ocultar"
),
),
]
)
self.add_control(
ipyleaflet.WidgetControl(
widget=VBox([self.dropdown, self.boton]), position="topright"
)
)
class MapaInteractivo(Map):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self._configurar_controles()
def _configurar_controles(self):
self.dropdown = Dropdown(
options=[
("OpenStreetMap", basemaps.OpenStreetMap.Mapnik),
("OpenTopoMap", basemaps.OpenTopoMap),
("Satellite", basemaps.Esri.WorldImagery),
("Dark", basemaps.CartoDB.DarkMatter),
],
description="Mapa:",
)
self.boton = Button(description="Ocultar")
self.dropdown.observe(lambda c: setattr(self, "basemap", c["new"]), "value")
self.boton.on_click(
lambda b: [
setattr(
self.dropdown.layout,
"visibility",
(
"hidden"
if self.dropdown.layout.visibility != "hidden"
else "visible"
),
),
setattr(
self.boton,
"description",
(
"Mostrar"
if self.dropdown.layout.visibility == "hidden"
else "Ocultar"
),
),
]
)
self.add_control(
ipyleaflet.WidgetControl(
widget=VBox([self.dropdown, self.boton]), position="topright"
)
)
In [5]:
Copied!
mi_mapa = MapaInteractivo(center=(40, -100), zoom=4)
mi_mapa
mi_mapa = MapaInteractivo(center=(40, -100), zoom=4)
mi_mapa
Out[5]: