Mapbox: как избежать ошибок JavaScript для наборов тайлов, которые недоступны при текущем уровне масштабирования?

Я использую Mapbox GL JS и загружаю слои набора плиток из своей учетной записи Mapbox. Некоторые из этих слоев набора листов доступны только для уровней масштабирования от 10 до 15.

Уровень масштабирования моей карты по умолчанию равен 5, и когда я загружаю карту, я получаю сообщение об ошибке консоли JavaScript, в котором говорится, что набор плиток имеет значение 404:

введите описание изображения здесь

Как я могу этого избежать? Я не хочу полностью воссоздавать набор тайлов до уровня масштабирования 5, поскольку это приведет к ненужному увеличению его размера.

Я не думаю, что ошибка консоли вызывает какие-либо проблемы в Chrome, но я не знаю, будет ли это в других браузерах.


person Richard    schedule 13.03.2017    source источник
comment
Я не могу воспроизвести эту ошибку в последней версии. Какую версию ты используешь?   -  person Lucas Wojciechowski    schedule 14.03.2017
comment
Я использовал 0.32 - только что обновился до 0.33. Я по-прежнему вижу ошибки, связанные с отсутствием плиток, но возможно ли, что эти плитки отсутствуют по какой-либо другой причине, а не по уровню масштабирования?   -  person Richard    schedule 14.03.2017
comment
На случай, если это поможет кому-то еще, я обнаружил, что плитки загружались с ошибкой 404, потому что они потерпели неудачу во время процесса создания плитки типпеканоэ, потому что при преобразовании они были более 500 КБ.   -  person Richard    schedule 16.03.2017


Ответы (3)


Самый простой способ - заменить обработчик ошибок по умолчанию, отфильтровав сообщение «Не найдено»:

map.on('error', e => {
    // Hide those annoying non-error errors
    if (e && e.error !== 'Error: Not Found')
        console.error(e);
});
person Steve Bennett    schedule 14.03.2017
comment
Принимаю, поскольку это решает симптом, спасибо! Чтобы решить основную проблему, см. Мой комментарий к исходному вопросу. - person Richard; 16.03.2017
comment
Круто - я обнаружил, что этот симптом довольно часто появляется даже с наборами фрагментов, размещенными на Mapbox, как только вы перемещаетесь за пределы диапазона набора фрагментов. - person Steve Bennett; 17.03.2017

Я улучшил нашу обработку 404 для будущих выпусков.

В этом случае вы по-прежнему будете видеть сообщение GET https://... 404 (Not Found), предоставляемое браузером, но не сообщение об исключении Error: Not Found Javascript.

person Lucas Wojciechowski    schedule 20.03.2017

Если вы используете свой собственный тайловый сервер, вы можете настроить его так, чтобы он выдавал Нет содержимого 204 HTTP-статус.

Вот что хотелось бы от заказного тайлового сервера node.js:

app.use(function(req, res, next) {
  if(res.status(404)) {
    res.sendStatus(204)
  }
});
person Raphaël Verdier    schedule 07.06.2018
comment
Согласно соответствующему билету GitHub, это предпочтительное решение для Mapbox. разработчиков. - person bluenote10; 12.03.2020