Example of a WMTS based HiDPI layer.
The WMTS source has a tilePixelRatio option. A HiDPI capable WMTS could provide tiles with 512x512 pixel tiles, but use them in a 256x256 pixel tile grid. In this case tilePixelRatio needs to be set to 2.
tilePixelRatio
2
<!DOCTYPE html> <html> <head> <title>WMTS HiDPI example</title> <script src="https://code.jquery.com/jquery-1.11.2.min.js"></script> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script> <link rel="stylesheet" href="http://openlayers.org/en/3.8.1/css/ol.css" type="text/css"> <script src="http://openlayers.org/en/3.8.1/build/ol.js"></script> <style> .map { background: white; } </style> </head> <body> <div class="container-fluid"> <div class="row-fluid"> <div class="span12"> <div id="map" class="map"></div> </div> </div> </div> <script> var capabilitiesUrl = 'http://www.basemap.at/wmts/1.0.0/WMTSCapabilities.xml'; // HiDPI support: // * Use 'bmaphidpi' layer (pixel ratio 2) for device pixel ratio > 1 // * Use 'geolandbasemap' layer (pixel ratio 1) for device pixel ratio == 1 var hiDPI = ol.has.DEVICE_PIXEL_RATIO > 1; var layer = hiDPI ? 'bmaphidpi' : 'geolandbasemap'; var tilePixelRatio = hiDPI ? 2 : 1; var map = new ol.Map({ target: 'map', view: new ol.View({ center: [1823849, 6143760], zoom: 11 }) }); $.ajax(capabilitiesUrl).then(function(response) { var result = new ol.format.WMTSCapabilities().read(response); var options = ol.source.WMTS.optionsFromCapabilities(result, { layer: layer, matrixSet: 'google3857', requestEncoding: 'REST', style: 'normal' }); options.tilePixelRatio = tilePixelRatio; map.addLayer(new ol.layer.Tile({ source: new ol.source.WMTS(options) })); }); </script> </body> </html>