leaflet 的tilelayer,如何在最大级别的瓦片下,仍能放大

        leaflet的tilelayer在最大级别的瓦片后,继续拉取的话,不会让最大级别的瓦片放大,而是加载下一级的瓦片。但是,下一级的瓦片是不存在的。所以,就会出现加载错误(如果设置的加载失败显示的图片,则会显示图片),导致出现灰屏。如果,想要最大级别下,继续拉大,会再放大图片的效果,则可以这样。
首先自定义一个变量 unlimited,表示是否启用该效果。然后,重写tilelayer的 _removeAllTiles方法:
_removeAllTiles :  function () {
/**
* can not zoom unlimited
*/
    if(! this. options. unlimited){
        for ( var  key  in  this. _tiles) {
            this. _removeTile( key);
        }
    }
}
其实,这里的关键是,当缩放级别时,如果即将缩放的级别大于最大的级别,leaflet会删除之前加载的所有瓦片。
这里我们不这么做,那么leaflet就会继续放大视点。

当然,这里还会出现一个问题,就是图层切换时,依然产生问题,这里我们可以自定义一个 tileMaxZoom属性,设置一下。

猜你喜欢

转载自blog.csdn.net/amesteur/article/details/80272134
今日推荐