希望TileSuperMapRest可传入maxZoom,minZoom参数
luo-geng opened this issue · 4 comments
Request a feature or report a bug? [这是一个需求还是一个缺陷]
缺陷
One-line summary [问题简述]
TileSuperMapRest可传入maxZoom,minZoom。防止layer设置maxZoom,minZoom和source不一致时(特别是当source的maxzoom小于layer的maxzoom时),出现瓦片加载错乱或者不加载的问题
Version [产品及版本]
- iClient product (for leaflet,for openlayers,for mapboxgl,classic)[iClient 产品]:ol
- iClient version [iClient 版本]:10.2.0
- Browser version [浏览器类型和版本]:
- OS Version [操作系统类型和版本]:
Actual Behavior [当前现象]
layer设置maxZoom,minZoom和source不一致时(特别是当source的maxzoom小于layer的maxzoom时),出现瓦片加载错乱或者不加载的问题,因为上传文件大小有限制,用了灰色gif
这里在node_modules修改TileSuperMapRest的maxZoom,minZoom后,在高级别Zoom下可以加载,为修改之前,高级别Zoom时瓦片加载不了


Expected Behavior [期望现象]
TileSuperMapRest可传入maxZoom,minZoom
之前提过一个pr112
Example of reproducing the issue [重现现象的例子]
What is motivation or use case for changing the behavior? [需求的场景和目的是什么?]
感谢您提的issue。可否麻烦您提供demo代码,或者线上实例 (JSFiddle/JSBin/Codepen)。方便我们重现及调试问题,谢谢。
openlayers中一般控制source的 minzoom,maxzoom, tilesize等参数是通过传入tilegrid来实现的,可new ol. tilegrid.tileGrid(),也可通过ol.source.TileSuperMapRest.createTileGrid或ol.tilegrid.createXYZ方法快速创建tilegrid
var layer = new ol.layer.Tile({
source: new ol.source.TileSuperMapRest({
url: url,
wrapX: true,
tileGrid: ol.source.TileSuperMapRest.createTileGrid([-180, -90, 180, 90], 6, 0, 256)
}),
projection: 'EPSG:4326'
});
openlayers中一般控制source的 minzoom,maxzoom, tilesize等参数是通过传入tilegrid来实现的,可new ol. tilegrid.tileGrid(),也可通过ol.source.TileSuperMapRest.createTileGrid或ol.tilegrid.createXYZ方法快速创建tilegrid
var layer = new ol.layer.Tile({ source: new ol.source.TileSuperMapRest({ url: url, wrapX: true, tileGrid: ol.source.TileSuperMapRest.createTileGrid([-180, -90, 180, 90], 6, 0, 256) }), projection: 'EPSG:4326' });
嗯,源码里src/openlayers/mapping/TileSuperMapRest.js的tileUrlFunction没传入 minzoom,maxzoom,链接
源码中的期望只是在没有传递tilegrid的场景下,生成一个默认的。您遇到这个场景,地图信息比较明确,建议是自己构造tilegrid传入。这样做更符合ol的使用方式,并且不需要通过给source增加其他option参数来
