Is there any way to get OpenLayers 3 to scale past the native zoom as is possible in Leaflet?
For reference, in Leaflet simply set maxZoom higher than maxNativeZoom and it stretches or perhaps scales the tile for a closer view.
In this example tiles go to 16. I'd like to scale 16 up to 18 for a closer view:
map = new ol.Map({
target: 'map_div',
renderer: 'canvas',
view: new ol.View({
center: ol.proj.transform([X_LO,X_LA], 'EPSG:4326', 'EPSG:3857'),
zoom: 16,
minZoom: 4,
maxZoom: 16
})
});
L1=new ol.layer.Tile({
source: new ol.source.XYZ({
url:'http://blahblah.com/map_tiles.php?Z={z}&X={x}&Y={y}'
}),
maxResolution:152.87,// 9
minResolution:1.94// 16
});
map.addLayer(L1);
Solution from @erilem
map = new ol.Map({
target: 'map_div',
renderer: 'canvas',
view: new ol.View({
center: ol.proj.transform([X_LO,X_LA], 'EPSG:4326', 'EPSG:3857'),
zoom: 16,
minZoom: 4,
maxZoom: 18
})
});
L1=new ol.layer.Tile({
source: new ol.source.XYZ({
url:'http://blahblah.com/map_tiles.php?Z={z}&X={x}&Y={y}',
maxZoom: 16
})
});
map.addLayer(L1);
Best Answer
You just need to have more resolutions/zoom levels in your view than in your XYZ source.
By default the
maxZoom
forol.source.XYZ
is 42. You will want to set it to 16 in your case. You also want to removemaxResolution
andminResolution
from your layer, otherwise the layer won't be displayed when the view resolution is outside the[minResolution, maxResolution]
range.And you will need to set
maxZoom
to 18 in your view. So when the view will change to zoom level 17 and 18 tiles at zoom level 16 will be used.