0

我正在尝试运行有关如何使用 Flask-Admin 显示地图的示例:https ://github.com/flask-admin/flask-admin/tree/master/examples/geo_alchemy 。

在 README.rst 中有这样的指令:

  1. 你会注意到地图没有被渲染。要查看它们,您必须在 Mapbox 注册一个免费帐户并相应地设置 MAPBOX_MAP_ID 和 MAPBOX_ACCESS_TOKEN 配置变量。

我已经有一个有效的 MAPBOX_ACCESS_TOKEN,我去 MapBox 寻找一个 MAPBOX_MAP_ID。在那里我读到 MAP_ID 已被弃用,现在我必须获得一个图块集 ID,它被描述为由<my_mapbox_user_name>.the_tileset_ID本身组成的标签。

所以我找到了他们在说明中描述的代码(在我的例子中,mapbox-streets-v8)并满足了 config.py 参数:

MAPBOX_MAP_ID = '<my_mapbox_user_name>.mapbox-streets-v8'
MAPBOX_ACCESS_TOKEN = 'pk.eyJ1...'

但是,我看不到任何显示的地图或任何错误消息。

我该如何解决?

4

1 回答 1

0

我认为文件 Lib\site-packages\flask_admin\static\admin\js\form.js 中有一个小错误。为获取磁贴而生成的原始 URL 是:

https://api.mapbox.com/styles/v1/mapbox/<MAPBOX_MAP_ID parameter>/tiles/12/2258/2457?access_token=<MAPBOX_ACCESS_TOKEN parameter>

但是,正确的是:

https://api.mapbox.com/styles/v1/<MAPBOX_MAP_ID parameter>/tiles/12/2258/2457?access_token=<MAPBOX_ACCESS_TOKEN parameter>

也就是说,我必须从 URL 中删除mapbox单词。

为此,我对 form.js 文件进行了一些更改:

      //var mapboxUrl = 'https://api.mapbox.com/styles/v1/mapbox/'+window.MAPBOX_MAP_ID+'/tiles/{z}/{x}/{y}?access_token='+window.MAPBOX_ACCESS_TOKEN
      var mapboxUrl = 'https://api.mapbox.com/styles/v1/'+window.MAPBOX_MAP_ID+'/tiles/{z}/{x}/{y}?access_token='+window.MAPBOX_ACCESS_TOKEN

然后,它现在正在工作:

在此处输入图像描述

于 2020-12-17T13:28:18.440 回答