ipyleaflet带有on_悬停事件,标记。on_鼠标悬停

2024-06-11 01:41:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚从Scipy2020教程中学习了ipyleaflet。在本教程的示例中,我看到了通过GeoJSON在ipyleaflet上设置悬停事件的可能性。有人能告诉我如何在Marker上进行悬停活动吗

下面是我的测试尝试

m = Map(
    basemap=basemaps.CartoDB.DarkMatter,
    center = center,
    zoom = zoom,
    interpolation='nearest'
)

icon1 = AwesomeIcon(
    name = 'paper-plane-o',
    marker_color='red',
    icono_color='black',
    icon_size=(2,2),
    spin=False
)

marker = Marker(icon=icon1,
    name = glider_mission.split('/')[-1],
    location = ([27.19,-82.79]),
    draggable=False,
    opacity=0.5,
    rise_on_hover=True,
)

html = HTML()
def update_html(marker,**kwargs):
    html.value = '''
        <b>Glider Mission:</b><br>
        {}
    '''.format(marker.name)
marker.on_mouseover(update_html(marker))
m.add_layer(marker)
m

Jupyter实验室给了我错误,比如

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
TypeError: 'NoneType' object is not callable

Tags: namefalseonhtmlupdate教程markercolor
1条回答
网友
1楼 · 发布于 2024-06-11 01:41:05

marker.on_mouseover方法将回调函数作为参数。这里您正在调用update_html(marker),它返回None,这意味着您正在调用marker.on_mouseover(None),因此出现了错误消息

您要做的是:

def get_callback(marker, html):
    def callback(*args, **kwargs):
        html.value = '''
            <b>Glider Mission:</b><br>
            {}
        '''.format(marker.name)

    return callback

marker.on_mouseover(get_callback(marker, html))

get_callback返回一个回调函数(可调用函数),因此on_mouseover方法不再抱怨

相关问题 更多 >