openlayers 3 - 加载具有最高缩放级别图块的TileLayer,但显示所有缩放级别

时间:2016-08-01 15:20:37

标签: javascript openlayers-3

是否可以从TileImage源加载Tile图层,并使用具有特定范围的最高分辨率(缩放)的图块,并为所有缩放级别显示这些图块。我有高分辨率图像,我希望将其显示为另一个Tile图层上方的图层,例如Bing或OSM。

示例来源

var source = new ol.source.TileImage({
projection: 'EPSG:900913',
tileGrid: new ol.tilegrid.TileGrid({
projection: 'EPSG:900913',
extent: projectionExtent,
//extent: ol.proj.transformExtent([-83.7893967, 42.851353, -83.7855987, 42.849371], "EPSG:4326", "EPSG:900913"),
resolutions: resolutions,
tileSize:[pictometryImageSize, pictometryImageSize]
}),
tileUrlFunction: function(tileCoord, pixelRatio, projection){
var zoom = tileCoord[0];

console.log(zoom)

if(zoom == 21){
    var tileGrid = this.getTileGrid();
    var center = ol.proj.transform(ol.extent.getCenter(tileGrid.getTileCoordExtent(tileCoord)),"EPSG:900913", "EPSG:4326");
    return 'www.myrealtileurl;
}
//return undefined;
//return 'https://dummy.com';
},
minZoom: 0,
maxZoom: 21

});

1 个答案:

答案 0 :(得分:1)

我希望我能正确理解你。首先,您可以使用maxZoom限制图层范围。其次,您可以使用minZoomvar map = new ol.Map({ target: 'map', layers: [ new ol.layer.Tile({ source: new ol.source.OSM() }), new ol.layer.Tile({ extent: ol.proj.transformExtent([-110, 42, -100, 48], "EPSG:4326", "EPSG:3857"), source: new ol.source.XYZ({ maxZoom: 6, minZoom: 6, url: 'http://server.arcgisonline.com/ArcGIS/rest/services/' + 'World_Topo_Map/MapServer/tile/{z}/{y}/{x}' }) }) ], view: new ol.View({ center: ol.proj.fromLonLat([-105.89, 45.09]), zoom: 6 }) }); 属性锁定缩放。 OpenLayers将自己调整tile的大小。下面是一个示例,其中ArcGIS切片图层在范围和缩放中被锁定:

\\1*