3995 Leaflet support

example to support EPSG3995

by gaubert

HTML

<link rel="stylesheet" href="https://unpkg.com/leaflet@1.0.2/dist/leaflet.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet/0.7.7/leaflet-src.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/proj4js/2.3.15/proj4.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/proj4leaflet/0.7.2/proj4leaflet.js"></script>
<div id="map">
</div>

CSS

#map {
  height: 600px
}

JavaScript

var customCRS = new L.Proj.CRS('EPSG:3995',
  "+proj=stere +lat_0=90 +lat_ts=71 +lon_0=0 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs", 
  {
    origin: [-12403632.820000000298023,17760.814940000000206], // correct origin needs to be set
    resolutions: [22600, 11300, 5650, 2825, 1412.5, 706.25, 353.125, 176.5625, 88.28125, 44.140625], // 10 example zoom level resolutions
    tileSize: 256,
    bounds: L.bounds([-12403632.820, 17760.815,12417841.080,-13082466.960]) // max bounds also need to be set
  });

var wmsBKLayer = L.tileLayer.wms('http://eumetview.eumetsat.int/geoserv/wms', {
  layers: 'bkg-raster:bkg-raster',
  format: 'image/png',
  transparent: true
});

var wmsCountryBorders = L.tileLayer.wms('http://eumetview.eumetsat.int/geoserv/wms', {
  layers: 'overlay:vector-overlay',
  format: 'image/png',
  transparent: true,
});

var wmsAirmassLayer = L.tileLayer.wms('http://eumetview.eumetsat.int/geoserv/wms', {
  layers: 'meteosat:msg_airmass_3995',
  format: 'image/png',
  transparent: true,
  attribution: "Foo Bar"
});

var map = new L.map('map', {
  center: L.latLng(70, -10),
  zoom: 0,
  tileSize: 256,
  continuousWorld: true,
  worldCopyJump: false,
  crs: customCRS,
  layers: [wmsBKLayer]
});

/*var wmsAirmassLayer = new L.tileLayer.wms('http://vwids.eumetsat.int/geoserv/wms', {
    layers: 'meteosat:msg_airmass',
    crs: L.CRS.EPSG4326
}).addTo(map);*/

var baseMaps = {
  "background": wmsBKLayer
};

var overlayMaps = {
  "MSG airmass": wmsAirmassLayer,
  "CountryBorders" : wmsCountryBorders
};

L.control.layers(baseMaps, overlayMaps).addTo(map);