加载所有Tiles时的MapBox事件

时间:2017-04-19 14:45:44

标签: javascript jquery angularjs mapbox mapbox-gl-js

我使用Mapbox GL JS API来操作Mapbox地图。在我通过HTTP将结果(这是一个canvas.toDataURL)上传到服务器之前,我需要调整我的地图(更大的分辨率),然后使用fitbounds返回到原始点。在适合边界触发后,它会花费一段时间来加载所有新的图块。只有在此之后才可以实际执行上传。但是现在,我不知道是否有一个事件可以告诉我是否所有瓷砖都已加载。

我已经在API中尝试了所有可能的加载函数和事件。 GITHUB项目中存在一些问题,但他们现在至少已有一年的时间了,并且没有更新。在2015年中期,他们开始谈论添加空闲事件,但我似乎无法在任何地方找到任何新文档。

有没有人找到让代码等待地图加载的方法?或者有关于此功能更新的任何信息?

我怀疑这很重要,但我正在使用angular.js app。

1 个答案:

答案 0 :(得分:6)

我们刚刚添加了Map#areTilesLoaded支票,听起来就像您正在寻找的那样。这应该在下一个版本中发布(v0.37.0)。与此同时,以下内容应该有效。

map.on('sourcedata', (e)=> {
    if (map.loaded()) {
     // all tiles are loaded 

     // turn off sourcedata listener if its no longer needed
     map.off('sourcedata');
    }
});