如何在本地Python版Apache Superset中配置OpenStreetMap替代MapBox?
解决Apache Superset配置OpenStreetMap替代MapBox无效果的问题
问题原因
你参考的PR#33603并未合并到Superset 5.0.0正式版本,仅在beta6及后续的beta版本、正式版本中包含了让DECKGL_BASE_MAP配置生效的相关功能逻辑。因此在5.0.0正式版中修改配置后,地图样式选择器不会出现OpenStreetMap选项。
可行解决方案
方案一:升级Superset版本
直接升级到包含PR#33603的版本(如beta6或更高版本,待对应稳定正式版发布后也可升级),升级完成后,你之前配置的DECKGL_BASE_MAP、Talisman的connect-src以及CORS相关设置会生效,地图样式选择器中就能看到OpenStreetMap选项。
方案二:手动补全5.0.0正式版的功能(不推荐)
如果暂时不想升级版本,需要手动补充前端层面的支持(该PR同时修改了后端配置和前端地图选择器逻辑),步骤如下:
- 找到本地Superset的前端代码目录,通常路径为
venv/lib/pythonX.X/site-packages/superset-frontend(X.X为你的Python版本) - 修改地图选择相关的前端组件代码,添加OpenStreetMap的选项映射
- 安装Node.js环境后,在前端目录执行
npm install && npm run build重新构建前端资源 - 重启Superset服务
此方案操作复杂,且后续版本升级会覆盖手动修改的内容,优先推荐方案一。
配置验证
升级或修改完成后,确保以下配置正确:
TALISMAN_ENABLED = True # 在TALISMAN_CONFIG和TALISMAN_DEV_CONFIG的connect-src中添加https://c.tile.openstreetmap.org DECKGL_BASE_MAP = [ ['https://c.tile.openstreetmap.org/{z}/{x}/{y}.png', 'OpenStreetMap' ], ] ENABLE_CORS = True CORS_OPTIONS: dict[Any, Any] = { "origins": [ "https://c.tile.openstreetmap.org", ] }
重启Superset服务后即可生效。
内容的提问来源于stack exchange,提问作者Je Je
相关产品推荐
相关产品推荐

