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属性,设置一下。