I am having issues with updating layers & basemaps to an ipyleaflet map in a panel application. Layer updates work in notebooks but there appears to be a ipywidgets_bokeh communication issue preventing updates in browser.
As seen in the screenshot below, the map goes grey when I try to change a layer and I see errors in the console.
I am building an app for submission to the Anaconda contest and am hoping to get some kind of solution figured out in the next week or two, even if it requires some workaround. Any help would be greatly appreciated!
from ipyleaflet import (Map, basemaps, basemap_to_tiles)
import panel as pn
import param
layers = dir(basemaps.OpenStreetMap)
class MapManager(param.Parameterized):
ls = param.ListSelector([layers[-1]], objects=layers)
_map = Map(center=(47.4, -122.2), zoom=6, scroll_wheel_zoom=True)
def __init__(self, **params):
super().__init__(**params)
self.param.watch(self.update_layer, ['ls'], what='value')
# @pn.depends('items.value', watch=True)
def update_layer(self, selection):
print('updating layer:')
print(selection.new[0])
# create basemap
bmap = basemap_to_tiles(basemaps.OpenStreetMap[selection.new[0]])
# clear last layer and add new basemap
self._map.clear_layers()
self._map.add_layer(bmap)
pass
def panel(self):
return pn.Column(self.param.ls, pn.panel(self._map))
map_mgr = MapManager()
map_mgr.panel().servable()