листовка нет интернет обнаружения и уведомления

0

Если, например, мой Wi-Fi отключен, в листе я вижу новые области карты серыми, но не уведомляет о том, что на самом деле происходит.

если я открою консоль, я вижу:

GET https://a.tiles.mapbox.com/v4/image.png?access_token=correct_token 
net::ERR_INTERNET_DISCONNECTED

кто-нибудь знает способ поймать такие события и отобразить пользовательское предупреждение?

Я уже пытался поймать:

$scope.$watch('tileerror', function (error, tile) {
    alert("No coonection");
});

ps с использованием указателя углового листа

  • 0
    Это потому, что JS вообще не будет уведомлен о том, что произошла ошибка, когда ошибка вызвана отсутствием видимости в Интернете или междоменной проблемой ... Вы можете реализовать событие ontileerror на основе метода setTimeout.
  • 0
    Вероятно, связано со stackoverflow.com/questions/33383092/… но, к сожалению, нет готового решения.
Теги:
leaflet
mapbox

1 ответ

1
Лучший ответ

EDIT: как указывала Ghybs в комментариях есть действительно tileerror событие стрельбы из L.TileLayer, однако, насколько я могу видеть, что это не реализовано в Листовке Директиве Угловой, пожалуйста, поправьте меня, если я ошибаюсь.

У L.TileLayer есть опция для установки замещающего изображения, когда нельзя errorTileUrl: errorTileUrl:

URL-адрес изображения плитки, чтобы показать вместо плитки, которая не загружалась.

new L.TileLayer(URL, {
    errorTileUrl: 'error.png'
});

http://leafletjs.com/reference.html#tilelayer-errortileurl

Если вам нужно выполнить некоторую логику, когда плитки не загружаются, вы можете перезаписать метод L.TileLayer _tileOnError:

L.TileLayer.include({
    _tileOnError: function (done, tile, e) {

        // Do your stuff
        alert('whooops!');

        // Leaflet stuff
        var errorUrl = this.options.errorTileUrl;
        if (errorUrl) {
            tile.src = errorUrl;
        }
        done(e, tile);
    } 
});

https://github.com/Leaflet/Leaflet/blob/master/src/layer/tile/TileLayer.js#L96

  • 0
    Спасибо !, Знаете ли вы, как перезаписать tileOnError директивой angular-leaflet? Я хочу попробовать и принять ответ, но я использую угловую и не иметь L.TileLayer
  • 0
    У вас есть L.Tilelayer, директива использует его внутренне. Он становится глобальным, как только загружается leaflet.js. Поэтому включите этот фрагмент кода после загрузки leaflet.js (где угодно, до тех пор, пока вы не объявите свою карту, и все готово. Когда директива инициализирует L.Tilelayer, она вызовет измененную версию.
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню