Google Maps and WMTS Kartverket

by HoffZ

HTML

<script src="https://maps.google.com/maps/api/js?sensor=false&amp;libraries=drawing"></script>
<p>
  Test
</p>
<div id="map">

</div>

CSS

#map {
  width: 500px;
  height: 400px;
}

JavaScript

var map;

String.prototype.format = function() {
  var formatted = this;
  for (var i = 0; i < arguments.length; i++) {
    var regexp = new RegExp('\\{' + i + '\\}', 'gi');
    formatted = formatted.replace(regexp, arguments[i]);
  }
  return formatted;
};

init()

function init() {

  var BASE_URL = 'http://wmts10.geo.admin.ch';
  var BASE_URL_KARTVERKET = 'http://opencache.statkart.no/gatekeeper/gk/gk.open_wmts?&layer=topo4graatone&style=default&tilematrixset=EPSG%3A25833&Service=WMTS&Request=GetTile&Version=1.0.0&Format=image%2Fpng&TileMatrix=EPSG%3A25833%3A4&';

      var layer = 'ch.swisstopo.pixelkarte-farbe';
    var timestamp = 'current';
    var format = 'jpeg';
    var url = BASE_URL + '/1.0.0/'+layer+'/default/'+timestamp.toString()+'/3857/{z}/{x}/{y}.' + format;


  //Define OSM map type pointing at the OpenStreetMap tile server

  var KartverketType = new google.maps.ImageMapType({
 maxZoom: 20,
 minZoom: 7,
    name: 'Kartverket',
    tileSize: new google.maps.Size(256, 256),
    getTileUrl: function(coord, zoom) {
      return BASE_URL_KARTVERKET + 'TileCol=7&TileRow=6'
    }
  })


  var PixelkarteType = new google.maps.ImageMapType({
    maxZoom: 20,
    minZoom: 7,
    name: "Pixelkarte",
    tileSize: new google.maps.Size(256, 256),
    credit: 'swisstopo',
    getTileUrl: function(coord, zoom) {
      return BASE_URL + '/1.0.0/' + layer + '/default/' + timestamp.toString() + '/3857/' + zoom + "/" + coord.x + "/" + coord.y + ".jpeg";
    }
  });

  var OrthophotoType = new google.maps.ImageMapType({
    maxZoom: 20,
    minZoom: 7,
    name: "Orthophoto",
    tileSize: new google.maps.Size(256, 256),
    credit: 'swisstopo',
    getTileUrl: function(coord, zoom) {
      return BASE_URL + '/1.0.0/ch.swisstopo.swissimage/default/20140620/3857/' + zoom + "/" + coord.x + "/" + coord.y + ".jpeg";
    }
  });

  map = new google.maps.Map(document.getElementById("map"), {
    zoom: 10,
    center: new google.maps.LatLng(46.94, 7.45),
   ...