Mapbox:如何避免当前缩放级别不可用的图块集的 JavaScript 错误?

Mapbox: How to avoid JavaScript errors for tilesets that aren't available at the current zoom level?

我正在使用 Mapbox GL JS 并从我的 Mapbox 帐户加载 tileset 图层。其中一些 tileset 图层仅适用于 10 到 15 的缩放级别。

我的地图的默认缩放级别是 5,当我加载地图时,我得到一个 JavaScript 控制台错误,说 tileset 是 404ing:

有什么办法可以避免这种情况吗?我不想一直重新创建 tileset 到缩放级别 5,因为它会不必要地增加其大小。

我认为控制台错误不会导致 Chrome 出现任何问题,但我不知道它是否会在其他浏览器中出现。

最简单的方法是替换默认错误处理程序,过滤掉 "Not Found" 消息:

map.on('error', e => {
    // Hide those annoying non-error errors
    if (e && e.error !== 'Error: Not Found')
        console.error(e);
});

I have improved our 404 handling for future releases.

在这种情况下,您仍会看到浏览器提供的 GET https://... 404 (Not Found) 消息,但看不到 Javascript Error: Not Found 异常消息。

如果您使用自己的磁贴服务器,您可以将其设置为无内容 204 HTTP status

这是在定制的 node.js 磁贴服务器中想要的:

app.use(function(req, res, next) {
  if(res.status(404)) {
    res.sendStatus(204)
  }
});