I went off from the Panel DeckGL example and managed to bind a callback (working example below although you might have to download the JSOn from the link), but for some wird reason I can not make the hvplot object update with the callback in the output. @Marc if you have any ideas other than wrapping the hvplot in a pn.panel
let me know sir 
import hvplot.pandas
import pandas as pd
import panel as pn
import pydeck as pdk
from bokeh.sampledata.degrees import data as deg
pd.options.mode.chained_assignment = None
hvplot.extension('plotly')
pn.extension("deckgl", stretch_width_policy="both")
DATA_URL = "https://raw.githubusercontent.com/ajduberstein/geo_datasets/master/biergartens.json"
ICON_URL = (
"https://upload.wikimedia.org/wikipedia/commons/c/c4/Projet_bi%C3%A8re_logo_v2.png"
)
data = pd.read_json(DATA_URL)
INITIAL_HVPLOT = pn.panel(deg.hvplot.line(
x="Year",
y=[
"Art and Performance",
"Business",
"Biology",
"Education",
"Computer Science",
],
value_label="% of Degrees Earned by Women",
legend="top",
height=500,
title="Initial Title",
))
INITIAL_VIEW_STATE = pdk.ViewState(
latitude=51, longitude=7.4, zoom=9, max_zoom=16, pitch=0, bearing=0
)
icon_data = {
"url": ICON_URL,
"width": 242,
"height": 242,
"anchorY": 242,
}
data["icon_data"] = None
for i in data.index:
data["icon_data"][i] = icon_data
view_state = pdk.data_utils.compute_view(data[["lon", "lat"]], 0.1)
icon_layer = pdk.Layer(
type="IconLayer",
data=data,
get_icon="icon_data",
get_size=4,
size_scale=15,
get_position=["lon", "lat"],
pickable=True,
)
deck_gl_obj = pdk.Deck(
layers=[icon_layer],
initial_view_state=INITIAL_VIEW_STATE,
tooltip={"text": "{tags}"},
)
deck_gl = pn.pane.DeckGL(deck_gl_obj, sizing_mode="stretch_width", height=600)
def panel_watcher(events):
INITIAL_HVPLOT.object.opts(title=f"Map Clicked at {events.new.get('coordinate')}")
deck_gl.param.watch(panel_watcher, "click_state")
out_row = pn.Row(deck_gl, INITIAL_HVPLOT)
out_row.servable()
For those who had the same hiccup trying to access the properties of the Event
Event(
what='value',
name='click_state',
obj=DeckGL(
dict,
click_state={'coordinate': [-2.9896073...},
height=600,
hover_state={'coordinate': [-2.9896073...},
mapbox_api_key='pk.eyJ1IjoicGFuZWxvcmciLC...,
sizing_mode='stretch_width',
view_state={'width': 1353, ...}),
cls=DeckGL(
dict,
click_state={
'coordinate': [-2.9896073...},
height=600,
hover_state={
'coordinate': [-2.9896073...},
mapbox_api_key='pk.eyJ1IjoicGFuZWxvcmciLC...,
sizing_mode='stretch_width',
view_state={'width': 1353, ...
}
),
old={},
new={
'coordinate': [-2.9896073038243594, 52.02611611860193],
'lngLat': [-2.9896073038243594, 52.02611611860193],
'index': -1},
type='changed'
)
I am going to work on a more impressive demo and report back.