带有 on_hover 事件的 ipyleaflet,Marker.on_mouseover
ipyleaflet with on_hover event, Marker.on_mouseover
我刚刚从 scipy 2020 教程中学习了 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 Lab 给我报错,比如
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
TypeError: 'NoneType' object is not callable
marker.on_mouseover
方法将回调函数作为参数。此处您调用 update_html(marker)
,其中 returns 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
returns 回调函数(可调用),因此 on_mouseover
方法不会再报错了。
我刚刚从 scipy 2020 教程中学习了 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 Lab 给我报错,比如
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
TypeError: 'NoneType' object is not callable
marker.on_mouseover
方法将回调函数作为参数。此处您调用 update_html(marker)
,其中 returns 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
returns 回调函数(可调用),因此 on_mouseover
方法不会再报错了。