加载所有 Tiles 时的 MapBox 事件
MapBox event when all Tiles are loaded
我正在使用 Mapbox GL JS API 来操作 Mapbox 地图。在我通过 HTTP 将结果(canvas.toDataURL)上传到服务器之前,我需要调整地图大小(更大的分辨率),然后使用 fitbounds 返回到原始点。 fit bounds 触发后,地图需要一段时间才能加载所有新图块。只有在这之后我才能真正执行上传。不过现在,我不知道是否有事件能够告诉我是否所有图块都已加载。
我已经尝试了 API 中所有可能的加载函数和事件。 GITHUB 项目存在一些问题,但它们现在至少已有一年历史并且没有更新。 2015 年中旬,他们开始谈论添加一个空闲事件,但我似乎无法在任何地方找到它的任何新文档。
有没有人找到让代码等待地图加载的方法?或者有关于此功能更新的任何信息?
我怀疑这是否重要,但我正在 angular.js 应用程序中工作。
我们刚刚添加了一个 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');
}
});
我正在使用 Mapbox GL JS API 来操作 Mapbox 地图。在我通过 HTTP 将结果(canvas.toDataURL)上传到服务器之前,我需要调整地图大小(更大的分辨率),然后使用 fitbounds 返回到原始点。 fit bounds 触发后,地图需要一段时间才能加载所有新图块。只有在这之后我才能真正执行上传。不过现在,我不知道是否有事件能够告诉我是否所有图块都已加载。
我已经尝试了 API 中所有可能的加载函数和事件。 GITHUB 项目存在一些问题,但它们现在至少已有一年历史并且没有更新。 2015 年中旬,他们开始谈论添加一个空闲事件,但我似乎无法在任何地方找到它的任何新文档。
有没有人找到让代码等待地图加载的方法?或者有关于此功能更新的任何信息?
我怀疑这是否重要,但我正在 angular.js 应用程序中工作。
我们刚刚添加了一个 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');
}
});