const source = newZoomify({ url: zoomifyUrl, size: [imgWidth, imgHeight], crossOrigin: 'anonymous', zDirection: -1, // Ensure we get a tile with the screen resolution or higher // 确保我们得到屏幕分辨率或更高的切片 }); const extent = source.getTileGrid().getExtent();
const retinaPixelRatio = 2; const retinaSource = newZoomify({ url: zoomifyUrl, size: [imgWidth, imgHeight], crossOrigin: 'anonymous', zDirection: -1, // Ensure we get a tile with the screen resolution or higher-确保我们得到屏幕分辨率或更高的切片 // 以下两项配置:Display retina tiles from a higher zoom level-显示可用于Retina显示屏的切片数据 tilePixelRatio: retinaPixelRatio, tileSize: 256 / retinaPixelRatio, });
const layer = newTileLayer({ source: source, });
const map = newMap({ layers: [layer], target: 'map', view: newView({ // adjust zoom levels to those provided by the source // 将缩放级别调整为数据源提供的缩放级别 resolutions: layer.getSource().getTileGrid().getResolutions(), // constrain the center: center cannot be set outside this extent // 约束中心:不能将中心设置在此范围之外 extent: extent, constrainOnlyCenter: true, }), }); map.getView().fit(extent);
const control = document.getElementById('zoomifyProtocol'); control.addEventListener('change', function (event) { const value = event.currentTarget.value; if (value === 'zoomify') { layer.setSource(source); } elseif (value === 'zoomifyretina') { layer.setSource(retinaSource); } });