回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我想<a href="https://dash-leaflet.herokuapp.com/#geojson_hideout" rel="nofollow noreferrer">filter</a>和<a href="https://dash-leaflet.herokuapp.com/#choropleth_us" rel="nofollow noreferrer">style</a>通过类似于<a href="https://dash-leaflet.herokuapp.com/" rel="nofollow noreferrer">docs site</a>的隐藏属性,但无法解决它</p>
<p>现在,我被困在这里:</p>
<pre><code>import dash_html_components as html
import dash_leaflet as dl
import dash_core_components as dcc
import dash_leaflet.express as dlx
from dash import Dash
from dash.dependencies import Output, Input
from dash_extensions.javascript import assign
# A few cities in Denmark.
cities = [dict(name="Aalborg", lat=57.0268172, lon=9.837735),
dict(name="Aarhus", lat=56.1780842, lon=10.1119354),
dict(name="Copenhagen", lat=55.6712474, lon=12.5237848)]
# Create drop down options.
dd_options = [dict(value=c["name"], label=c["name"]) for c in cities]
dd_defaults = [o["value"] for o in dd_options]
# Generate geojson with a marker for each city and name as tooltip.
geojson = dlx.dicts_to_geojson([{**c, **dict(tooltip=c['name'])} for c in cities])
# Create javascript function that filters on feature name.
geojson_filter = assign("function(feature, context){console.log(context); return context.props.hideout.dd_defaults.includes(feature.properties.name);}")
# Create example app.
app = Dash()
app.layout = html.Div([
dl.Map(children=[
dl.TileLayer(),
dl.GeoJSON(data=geojson, options=dict(filter=geojson_filter), hideout=dict(dd_defaults=dd_defaults, test="test"), id="geojson", zoomToBounds=True)
], style={'width': '100%', 'height': '50vh', 'margin': "auto", "display": "block"}, id="map"),
dcc.Dropdown(id="dd", value=dd_defaults, options=dd_options, clearable=False, multi=True)
])
# Link drop down to geojson hideout prop (could be done with a normal callback, but clientside is more performant).
app.clientside_callback(
"""function(value, hideout){
hideout.dd_defaults = value
console.log(hideout);
return hideout
;}
""",
Output("geojson", "hideout"), Input("dd", "value"), Input("geojson", "hideout"))
if __name__ == '__main__':
app.run_server()
</code></pre>
<p>我认为当我传回整个藏身处组件时,它应该会起作用,但事实并非如此。是虫子还是我做错了什么?问题似乎是当我将字典传递给隐藏组件时</p>