You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Python Shiny中用ipyleaflet的m.add_layer添加Popup失效求助

解决Python Shiny中ipyleaflet Popup无法显示的问题

你的代码里有两个关键问题导致Popup不按预期工作:

  • Popup默认处于关闭状态:ipyleaflet的Popup组件默认open属性为False,即便添加到地图也不会自动显示,需要显式设置为True才能在加载时展示。
  • 经度值超出有效范围:你设置的中心经度360.121558超出了经度合法区间(-180°到180°),会被解析为0°,导致地图定位偏离预期位置。

修改后的完整代码:

from shiny import App, render, ui
from shinywidgets import output_widget, 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, 0.121558)
    m = Map(center=center, zoom=9, close_popup_on_click=False)
    message1 = HTML()
    message1.value = "Try clicking the marker!"

    # 添加open=True让Popup默认打开
    popup = Popup(
        location=center,
        child=message1,
        close_button=False,
        auto_close=False,
        close_on_escape_key=False,
        open=True
    )
    
    m.add_layer(popup)
    register_widget("m", m)

app = App(app_ui, server)

如果希望Popup绑定到Marker上(点击Marker才显示),可以把Popup赋值给Marker的popup属性,而非直接添加到地图,示例代码如下:

# 替换原代码中Popup创建和add_layer的部分
marker = Marker(location=center)
marker.popup = popup
m.add_layer(marker)

内容的提问来源于stack exchange,提问作者MYaseen208

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 14:11:14