ArcGIS REST with 512x512 Tiles

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

#### ArcGIS REST with 512x512 Tiles

Example of a XYZ source in EPSG:4326 using Esri 512x512 tiles.

ArcGIS REST tile services with custom tile sizes (here: 512x512 pixels) and projection (here: EPSG:4326) are supported by `ol.source.XYZ`. A custom tile url function is used to handle zoom level offsets.

Related API documentation:

- ol.Attribution
,
- ol.Map
,
- ol.View
,
- ol.layer.Tile
,
- ol.proj
,
- ol.source.XYZ

Copy Edit
ArcGIS REST with 512x512 Tiles Example of a XYZ source in EPSG:4326 using Esri 512x512 tiles. var attribution = new ol.Attribution({ html: 'Copyright:© 2013 ESRI, i-cubed, GeoEye' }); var projection = ol.proj.get('EPSG:4326'); // The tile size supported by the ArcGIS tile service. var tileSize = 512; var urlTemplate = 'https://services.arcgisonline.com/arcgis/rest/services/' + 'ESRI_Imagery_World_2D/MapServer/tile/{z}/{y}/{x}'; var map = new ol.Map({ target: 'map', layers: [ new ol.layer.Tile({ source: new ol.source.XYZ({ attributions: [attribution], maxZoom: 16, projection: projection, tileSize: tileSize, tileUrlFunction: function(tileCoord) { return urlTemplate.replace('{z}', (tileCoord[0] - 1).toString()) .replace('{x}', tileCoord[1].toString()) .replace('{y}', (-tileCoord[2] - 1).toString()); }, wrapX: true }) }) ], view: new ol.View({ center: [0, 0], projection: projection, zoom: 2, minZoom: 2 }) }); <div id="map" class="map"></div>

    <!DOCTYPE html>
    <html>
      <head>
        <title>ArcGIS REST with 512x512 Tiles</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 attribution = new ol.Attribution({
            html: 'Copyright:© 2013 ESRI, i-cubed, GeoEye'
          });

          var projection = ol.proj.get('EPSG:4326');

          // The tile size supported by the ArcGIS tile service.
          var tileSize = 512;

          var urlTemplate = 'https://services.arcgisonline.com/arcgis/rest/services/' +
              'ESRI_Imagery_World_2D/MapServer/tile/{z}/{y}/{x}';

          var map = new ol.Map({
            target: 'map',
            layers: [
              new ol.layer.Tile({
                source: new ol.source.XYZ({
                  attributions: [attribution],
                  maxZoom: 16,
                  projection: projection,
                  tileSize: tileSize,
                  tileUrlFunction: function(tileCoord) {
                    return urlTemplate.replace('{z}', (tileCoord[0] - 1).toString())
                                      .replace('{x}', tileCoord[1].toString())
                                      .replace('{y}', (-tileCoord[2] - 1).toString());
                  },
                  wrapX: true
                })
              })
            ],
            view: new ol.View({
              center: [0, 0],
              projection: projection,
              zoom: 2,
              minZoom: 2
            })
          });
        </script>
      </body>
    </html>