hi @crachel
When using open-street-map template, I get the relayoutData
printed. For example, I get:
{‘mapbox.center’: {‘lon’: -99.88767635096002, ‘lat’: 33.130783012662036}, ‘mapbox.zoom’: 4.5, ‘mapbox.bearing’: 0, ‘mapbox.pitch’: 0, ‘mapbox._derived’: {‘coordinates’: [[-114.52354376038313, 38.785437325640004], [-85.25180894153786, 38.785437325640004], [-85.25180894153786, 27.08718413770059], [-114.52354376038313, 27.08718413770059]]}}
When I use your last piece of code, using open street map:
from dash import Dash, ctx, html, dcc, Input, Output
from dash.exceptions import PreventUpdate
import plotly.express as px
import pandas as pd
from plotly.graph_objects import Scattermapbox
from plotly.graph_objs.layout import Margin
app = Dash(__name__)
# assume you have a "long-form" data frame
# see https://plotly.com/python/px-arguments/ for more options
# df = pd.DataFrame({
# "Fruit": ["Apples", "Oranges", "Bananas", "Apples", "Oranges", "Bananas"],
# "Amount": [4, 1, 2, 2, 4, 5],
# "City": ["SF", "SF", "SF", "Montreal", "Montreal", "Montreal"]
# })
#
# fig = px.bar(df, x="Fruit", y="Amount", color="City", barmode="group")
app.layout = html.Div(children=[
html.H1(children='Hello Dash'),
html.Div(id='test-div', children='''
Dash: A web application framework for your data.
'''),
dcc.Graph(
id='example-graph',
clickData={
'points': [{'text': 'null'}] # used during initial load of app
},
figure=dict(
data=[Scattermapbox()],
layout=dict(
uirevision=False,
autosize = True,
margin = Margin(l=0, r=0, t=0, b=0),
showlegend = True,
legend=dict(font=dict(size=10), orientation='h'),
xaxis=dict(hoverformat='.5f'),
yaxis=dict(hoverformat='.5f'),
mapbox = dict(
# accesstoken = YOURACCESSTOKEN,
style = "open-street-map",
center = dict(lon=-100.450278, lat=31.442778),
zoom = 4.5,
)
)
),
)
])
@app.callback(
Output('test-div', 'className'),
[Input('example-graph', 'relayoutData')]
)
def update_from_report_operator_map_clickdata(clickData):
prop_id = ctx.triggered[0]['prop_id']
print(prop_id)
print (clickData)
raise PreventUpdate
if __name__ == '__main__':
app.run_server(debug=True,port=8050)