angularjs 单张没有互联网侦测及通知

uqzxnwby  于 11个月前  发布在  Angular
关注(0)|答案(2)|浏览(120)

例如,如果我的WiFi离线,在传单上,我看到新的Map区域灰色,但没有通知真正发生了什么。
如果我打开控制台,我看到:

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");
});


p.s.使用角瓣指示

6mzjoqzu

6mzjoqzu1#

编辑:正如Ghybs在评论中指出的那样,确实有一个tileerror事件从L.TileLayer触发,但据我所知,它没有在Angular Leaflet指令中实现,如果我错了,请纠正我。
L.TileLayer确实有一个选项,用于在无法加载图块时设置替换图像,称为: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

neskvpey

neskvpey2#

我想补充一点,IH8建议的机制对于阻止由损坏或缺失的图层端点引起的错误非常有用。以下对模式的修改检查单个瓦片。如果有错误,则从Map中删除违规图层,并使用回退(本地)图像L.imageOverlay

var badtilecount = 0;
L.TileLayer.include({
    _tileOnError: function (done, tile, e) {

        // Do your stuff
        if (badtilecount == 0) {
        badtilecount += 1 
        alert('On-Line map not found at ' + esriUrl + 'Using local context map. ' + badtilecount);
        map.removeLayer(Esri_WorldTopoMap);
        map.addLayer(fallbackmap);
        }

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

字符串

相关问题