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

懵懂的女人 提交于 2019-12-02 01:13:51

问题


I'm using Mapbox GL JS and loading tileset layers from my Mapbox account. Some of these tileset layers are only available for zoom levels 10 to 15.

The default zoom level of my map is 5, and when I load the map I get a JavaScript console error, saying that the tileset is 404ing:

Is there any way I can avoid this? I don't want to recreate the tileset all the way to zoom level 5, as it will unnecessarily increase its size.

I don't think the console error is causing any problems in Chrome, but I don't know whether it will in other browsers.


回答1:


The easiest way is to replace the default error handler, filtering out the "Not Found" message:

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



回答2:


I have improved our 404 handling for future releases.

In this case, you will still see the browser-provided GET https://... 404 (Not Found) message but not the Javascript Error: Not Found exception message.




回答3:


If you are using your own tile server you can set it up to give a No Content 204 HTTP status.

Here is what it would like in a custom made node.js tile server:

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


来源:https://stackoverflow.com/questions/42772538/mapbox-how-to-avoid-javascript-errors-for-tilesets-that-arent-available-at-the

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!