我正在尝试构建一个显示交互式地图的网页(占据页面的100%),其中我提供了包含信息的点或线。 Plotly似乎是完美的,我真的很喜欢它的可视化,但它不支持内置的Open Street Map等地图,它使用Mapbox。我没有任何反对Mapbox的东西,但从我发现它可以免费获得一定数量的视图(当它使用OSM时)。
简单地说:有一个简单的(作为开源和免费使用)方式使用python构建这样一个网页,其中包含一个显示信息的地图吗?
答案 0 :(得分:0)
确实有!您可以使用Mapbox GL JS,而无需进行绘图。这里有一些html代码示例,它们将为您创建这些完整尺寸的地图。它们可以是人造卫星,也可以只是普通地图。
画线: https://docs.mapbox.com/mapbox-gl-js/example/geojson-line/
创建弹出式onclick: https://docs.mapbox.com/mapbox-gl-js/example/popup-on-click/
答案 1 :(得分:0)
您确实可以在 Plotly 和 Dash 中不受限制地免费使用 OSM 地图或 Mapbox API 帐户,请参阅https://plotly.com/python/mapbox-layers/:
<块引用>layout.mapbox.style 中的基本地图
layout.mapbox.style 的可接受值为以下之一:
以下是同一 plotly 文档中的代码示例,该文档使用 OSM 底图而没有任何身份验证令牌:
import pandas as pd
us_cities = pd.read_csv("https://raw.githubusercontent.com/plotly/datasets/master/us-cities-top-1k.csv")
import plotly.express as px
fig = px.scatter_mapbox(us_cities, lat="lat", lon="lon", hover_name="City", hover_data=["State", "Population"],
color_discrete_sequence=["fuchsia"], zoom=3, height=300)
fig.update_layout(mapbox_style="open-street-map")
fig.update_layout(margin={"r":0,"t":0,"l":0,"b":0})
fig.show()
至于构建一个实际的网站,我推荐使用 Dash,它是一个与 plotly 很好地集成的网络服务器。