Tissot Indicatrix

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

#### Tissot Indicatrix

#### EPSG:4326

#### EPSG:3857

Draw Tissot's indicatrices on maps.

Example of Tissot indicatrix maps. The map on the left is an EPSG:4326 map. The one on the right is EPSG:3857.

Related API documentation:

- ol.Feature
,
- ol.Map
,
- ol.Sphere
,
- ol.View
,
- ol.geom.Polygon
,
- ol.layer.Tile
,
- ol.layer.Vector
,
- ol.source.TileWMS
,
- ol.source.Vector

Copy Edit
Tissot Indicatrix Draw Tissot's indicatrices on maps. var vectorLayer4326 = new ol.layer.Vector({ source: new ol.source.Vector() }); var vectorLayer3857 = new ol.layer.Vector({ source: new ol.source.Vector() }); var map4326 = new ol.Map({ layers: [ new ol.layer.Tile({ source: new ol.source.TileWMS({ url: 'https://ahocevar.com/geoserver/wms', params: { 'LAYERS': 'ne:NE1_HR_LC_SR_W_DR' } }) }), vectorLayer4326 ], target: 'map4326', view: new ol.View({ projection: 'EPSG:4326', center: [0, 0], zoom: 2 }) }); var map3857 = new ol.Map({ layers: [ new ol.layer.Tile({ source: new ol.source.TileWMS({ url: 'https://ahocevar.com/geoserver/wms', params: { 'LAYERS': 'ne:NE1_HR_LC_SR_W_DR' } }) }), vectorLayer3857 ], target: 'map3857', view: new ol.View({ center: [0, 0], zoom: 2 }) }); var wgs84Sphere = new ol.Sphere(6378137); var radius = 800000; var x, y; for (x = -180; x < 180; x += 30) { for (y = -90; y < 90; y += 30) { var circle4326 = ol.geom.Polygon.circular(wgs84Sphere, [x, y], radius, 64); var circle3857 = circle4326.clone().transform('EPSG:4326', 'EPSG:3857'); vectorLayer4326.getSource().addFeature(new ol.Feature(circle4326)); vectorLayer3857.getSource().addFeature(new ol.Feature(circle3857)); } } <h4>EPSG:4326</h4> <div id="map4326" class="map"></div> <h4>EPSG:3857</h4> <div id="map3857" class="map"></div>

    <!DOCTYPE html>
    <html>
      <head>
        <title>Tissot Indicatrix</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>
        <h4>EPSG:4326</h4>
        <div id="map4326" class="map"></div>
        <h4>EPSG:3857</h4>
        <div id="map3857" class="map"></div>
        <script>
          var vectorLayer4326 = new ol.layer.Vector({
            source: new ol.source.Vector()
          });

          var vectorLayer3857 = new ol.layer.Vector({
            source: new ol.source.Vector()
          });

          var map4326 = new ol.Map({
            layers: [
              new ol.layer.Tile({
                source: new ol.source.TileWMS({
                  url: 'https://ahocevar.com/geoserver/wms',
                  params: {
                    'LAYERS': 'ne:NE1_HR_LC_SR_W_DR'
                  }
                })
              }),
              vectorLayer4326
            ],
            target: 'map4326',
            view: new ol.View({
              projection: 'EPSG:4326',
              center: [0, 0],
              zoom: 2
            })
          });

          var map3857 = new ol.Map({
            layers: [
              new ol.layer.Tile({
                source: new ol.source.TileWMS({
                  url: 'https://ahocevar.com/geoserver/wms',
                  params: {
                    'LAYERS': 'ne:NE1_HR_LC_SR_W_DR'
                  }
                })
              }),
              vectorLayer3857
            ],
            target: 'map3857',
            view: new ol.View({
              center: [0, 0],
              zoom: 2
            })
          });

          var wgs84Sphere = new ol.Sphere(6378137);

          var radius = 800000;
          var x, y;
          for (x = -180; x < 180; x += 30) {
            for (y = -90; y < 90; y += 30) {
              var circle4326 = ol.geom.Polygon.circular(wgs84Sphere, [x, y], radius, 64);
              var circle3857 = circle4326.clone().transform('EPSG:4326', 'EPSG:3857');
              vectorLayer4326.getSource().addFeature(new ol.Feature(circle4326));
              vectorLayer3857.getSource().addFeature(new ol.Feature(circle3857));
            }
          }
        </script>
      </body>
    </html>