如何在 Dash 布局中插入带有标记的 Folium 地图?

How to insert Folium map with Markers in Dash layout?

我有一张使用 Folium 创建的地图,保存为 HTML 文件。它包含一些标记。 现在我想将这张地图作为 IFrame 元素插入到我的 Plotly-Dash 布局中。我设法做到了这一点:

app.layout = html.Div(children=[
        html.Iframe(id='map', srcDoc=open('index.html', 'r').read())
], style={'padding': 10, 'flex': 1})

但标记嵌入 Dash 布局时不会出现。为什么它们没有出现在 Dash 中?

Folium 的替代品是 dash-leaflet。虽然这两个组件都是基于传单的,但 dash-leaflet 提供了与 Dash 更紧密的集成。这是一个带有一些标记的小例子,

import dash_html_components as html
import dash_leaflet as dl
from dash import Dash

# A few cities in Denmark.
cities = [dict(title="Aalborg", position=[57.0268172, 9.837735]),
          dict(title="Aarhus", position=[56.1780842, 10.1119354]),
          dict(title="Copenhagen", position=[55.6712474, 12.5237848])]
# Create example app.
app = Dash()
app.layout = html.Div([
    dl.Map(children=[dl.TileLayer()] + [dl.Marker(**city) for city in cities],
           style={'width': '100%', 'height': '50vh', 'margin': "auto", "display": "block"}, id="map"),
])

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

您可以在 the documentation 中看到更多示例。