MYa*_*208 5 html python ipyleaflet py-shiny
我想在 python中使用from m.add_layeripyleaflet Popus(如此处给出)。但是,它并没有按预期工作。我的最小工作示例如下:
from shiny import App, render, ui
from shinywidgets import output_widget, reactive_read, register_widget
from ipywidgets import HTML
from ipyleaflet import Map, Marker, Popup
app_ui = ui.page_fluid(
output_widget("m")
)
def server(input, output, session):
center = (52.204793, 360.121558)
m = Map(center=center, zoom=9, close_popup_on_click=False)
message1 = HTML()
message1.value = "Try clicking the marker!"
# Popup with a given location on the map:
popup = Popup(
location=center,
child=message1,
close_button=False,
auto_close=False,
close_on_escape_key=False
)
m.add_layer(popup) # This line is not working
register_widget("m", m)
app = App(app_ui, server)
Run Code Online (Sandbox Code Playgroud)
想知道我在这里缺少什么基本内容吗?
小智 -1
看起来该m.add_layer(popup)行不起作用,因为您尝试使用 ipyleafletMap对象作为 Shiny 小部件,但 Shiny 无法识别它。相反,您可以使用output_widgetfrom 函数shinywidgets从 ipyleaflet 对象创建一个 Shiny 小部件Map,然后使用该add_layer方法将弹出窗口添加到地图;
from shiny import App, render, ui
from shinywidgets import output_widget, reactive_read, register_widget
from ipywidgets import HTML
from ipyleaflet import Map, Marker, Popup
app_ui = ui.page_fluid(
output_widget("m")
)
def server(input, output, session):
center = (52.204793, 360.121558)
m = Map(center=center, zoom=9, close_popup_on_click=False)
message1 = HTML()
message1.value = "Try clicking the marker!"
# Popup with a given location on the map:
popup = Popup(
location=center,
child=message1,
close_button=False,
auto_close=False,
close_on_escape_key=False
)
m.add_layer(popup)
output.m = output_widget("m", width="100%", height="500px")
register_widget("m", m)
app = App(app_ui, server)
Run Code Online (Sandbox Code Playgroud)