我正在使用bokeh服务器并使用gmap组件,并使用GeoJsonDataSource
在其上显示一些圆圈以填充位置数据。
所以,我有一些东西:
map_options = GMapOptions()
map_options.map_type = 'roadmap'
map_options.zoom = 12
map_options.lat = -1.5
map_options.lng = 50.0
map_source = GeoJSONDataSource()
hover = HoverTool()
hover.tooltips = [('Location', '@x, @y')]
# I can create the map and draw circles and hover on the circles as follows:
map = gmap(api_key, map_options)
map.circle(x="x", y="y", size=15, source=map_source)
map.add_tools(hover)
# to make the circle clckable
map.add_tools(TapTool())
# try and make a callback
def callback(attr, old, new):
# Somehow I need to get the actual underlying data which generated this circle element in the map_source
print(">")
map_source.on_change('indices', callback)
# The line above gives an error
# ValueError("attempted to add a callback on nonexistent %s.%s
# property" % (self.__class__.__name__, attr))
# Doing the following has no effect
map_source.on_change('selected', callback)
这可以正常工作,我可以看到我的圈子,也可以将其悬停在上面以显示位置。此外,TapTool可以正常工作。因此,我可以单击一个圆圈,其余的淡入背景。但是我不知道如何获取当前选定圆的索引。
答案 0 :(得分:1)
您要
map_source.selected.on_change('indices', callback)