python - 将仪表板传单控件映射到 map 外的其他按钮

标签 python leaflet plotly-dash

Dash-leaflet 允许添加控件,例如 ZoomControlMeasureControlEditControl 来映射图层。我想知道是否可以使用 Dash 按钮来执行与这些控件相同的操作。

例如,是否可以使用放置在 map 外部的几个 Dash 按钮来放大/缩小?

最佳答案

要使用 Dash 按钮,您需要创建回调来执行所需的 map 属性修改。这是一个小示例,其中 Dash 按钮模仿 ZoomControl 的行为,

import dash_html_components as html
import dash_leaflet as dl
from dash_extensions.enrich import Input, Output, State, Dash

zoom_min, zoom_max, zoom0 = 1, 18, 6  # min/max zoom levels might depend on the tiles used 
app = Dash(prevent_initial_callbacks=True)
app.layout = html.Div([
    dl.Map(dl.TileLayer(), style={'width': '1000px', 'height': '500px'}, id="map", zoom=zoom0),
    html.Button("Zoom in", id="zoom_in"), html.Button("Zoom out", id="zoom_out")
])


@app.callback(Output("map", "zoom"), Input("zoom_in", "n_clicks"), State("map", "zoom"))
def zoom_in(_, zoom):
    return min(zoom_max, zoom + 1)


@app.callback(Output("map", "zoom"), Input("zoom_out", "n_clicks"), State("map", "zoom"))
def zoom_out(_, zoom):
    return max(zoom_min, zoom - 1)


if __name__ == '__main__':
    app.run_server()

对于像 EditControl 这样更复杂的控件,通过 Dash 按钮模仿行为并非易事。在这种情况下,您可以尝试使用 CSS 更改按钮的外观,或者修改 React 层中的组件来满足您的需求。

关于python - 将仪表板传单控件映射到 map 外的其他按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68510848/

相关文章:

python - 使用 SQLAlchemy 在关联表中插入数据时出现 IntegrityError

r - 是否可以使用rMaps在R中的 map 上绘制路线?

python - 如何将一个仪表板应用程序导出到html独立文件中以与其他人共享?

flask - 如果从 Flask 创建并调用 dash 应用程序,则 Dash 回调不起作用

Python 写 MIDI 文件

python - 无法终止 Chrome 进程并使用 ChromeDriver 和 Chrome 通过 Python 中的 Selenium 运行内存不足

javascript - 如何使用 css 对齐传单 map 中的响应图像

javascript - 从mysql加载数据到leaflet

css - 如何使用 dash-bootstrap 将标题文本垂直和水平居中

python - 如何在 MacOS High Sierra 上修复 Home-brew 的权限