WMTS

This example uses OpenLayers v4.0.1. The latest is v.

#### WMTS

Example of a WMTS source.

This example shows how to manually create the configuration for accessing a WMTS. The WMTS Layer from capabilities example shows how to create the configuration from a GetCapabilities response.

Related API documentation:

- ol.Map
,
- ol.View
,
- ol.control
,
- ol.extent
,
- ol.layer.Tile
,
- ol.proj
,
- ol.source.OSM
,
- ol.source.WMTS
,
- ol.tilegrid.WMTS

Copy Edit
WMTS Example of a WMTS source. var projection = ol.proj.get('EPSG:3857'); var projectionExtent = projection.getExtent(); var size = ol.extent.getWidth(projectionExtent) / 256; var resolutions = new Array(14); var matrixIds = new Array(14); for (var z = 0; z < 14; ++z) { // generate resolutions and matrixIds arrays for this WMTS resolutions[z] = size / Math.pow(2, z); matrixIds[z] = z; } var map = new ol.Map({ layers: [ new ol.layer.Tile({ source: new ol.source.OSM(), opacity: 0.7 }), new ol.layer.Tile({ opacity: 0.7, source: new ol.source.WMTS({ attributions: 'Tiles © <a href="https://services.arcgisonline.com/arcgis/rest/' + 'services/Demographics/USA_Population_Density/MapServer/">ArcGIS</a>', url: 'https://services.arcgisonline.com/arcgis/rest/' + 'services/Demographics/USA_Population_Density/MapServer/WMTS/', layer: '0', matrixSet: 'EPSG:3857', format: 'image/png', projection: projection, tileGrid: new ol.tilegrid.WMTS({ origin: ol.extent.getTopLeft(projectionExtent), resolutions: resolutions, matrixIds: matrixIds }), style: 'default', wrapX: true }) }) ], target: 'map', controls: ol.control.defaults({ attributionOptions: /** @type {olx.control.AttributionOptions} */ ({ collapsible: false }) }), view: new ol.View({ center: [-11158582, 4813697], zoom: 4 }) }); <div id="map" class="map"></div>

    <!DOCTYPE html>
    <html>
      <head>
        <title>WMTS</title>
        <link rel="stylesheet" href="https://openlayers.org/en/v4.0.1/css/ol.css" type="text/css">
        <!-- The line below is only needed for old environments like Internet Explorer and Android 4.x -->
        <script src="https://cdn.polyfill.io/v2/polyfill.min.js?features=requestAnimationFrame,Element.prototype.classList,URL"></script>
        <script src="https://openlayers.org/en/v4.0.1/build/ol.js"></script>
      </head>
      <body>
        <div id="map" class="map"></div>
        <script>
          var projection = ol.proj.get('EPSG:3857');
          var projectionExtent = projection.getExtent();
          var size = ol.extent.getWidth(projectionExtent) / 256;
          var resolutions = new Array(14);
          var matrixIds = new Array(14);
          for (var z = 0; z < 14; ++z) {
            // generate resolutions and matrixIds arrays for this WMTS
            resolutions[z] = size / Math.pow(2, z);
            matrixIds[z] = z;
          }

          var map = new ol.Map({
            layers: [
              new ol.layer.Tile({
                source: new ol.source.OSM(),
                opacity: 0.7
              }),
              new ol.layer.Tile({
                opacity: 0.7,
                source: new ol.source.WMTS({
                  attributions: 'Tiles © <a href="https://services.arcgisonline.com/arcgis/rest/' +
                      'services/Demographics/USA_Population_Density/MapServer/">ArcGIS</a>',
                  url: 'https://services.arcgisonline.com/arcgis/rest/' +
                      'services/Demographics/USA_Population_Density/MapServer/WMTS/',
                  layer: '0',
                  matrixSet: 'EPSG:3857',
                  format: 'image/png',
                  projection: projection,
                  tileGrid: new ol.tilegrid.WMTS({
                    origin: ol.extent.getTopLeft(projectionExtent),
                    resolutions: resolutions,
                    matrixIds: matrixIds
                  }),
                  style: 'default',
                  wrapX: true
                })
              })
            ],
            target: 'map',
            controls: ol.control.defaults({
              attributionOptions: /** @type {olx.control.AttributionOptions} */ ({
                collapsible: false
              })
            }),
            view: new ol.View({
              center: [-11158582, 4813697],
              zoom: 4
            })
          });
        </script>
      </body>
    </html>