Gecachte Kacheln

Um die Karte aufzubauen werden vom Tile Layer standard 256×256 Pixel Images (Kacheln) angefordert. Neue Kacheln werden beim verschieben der Karte, oder beim Zoomen laufend dynamisch vom Server angefordert. Der Browser cached dabei selbst auch Kacheln, aber um Kacheln dynamisch zu rendern wird eine Menge Leistung vom Server abverlangt. Aus diesem Grund werden Kacheln vom Server in einem Cache gehalten. Er muss dann nicht bei jeder Anfrage die Kachel neu generieren, was in einer guten Performance resultiert.

ol.source.XYZ

Die WMS Spezifikation erlaubt eine hohe Flexibilität in Bezug auf die Datenanforderungen vom Client. Ohne Einschränkungen würde das Caching sehr schwierig, oder unmöglich in der Praxis.

Das umgekehrte Extrem ist ein Server, der ein fixes Set an Kacheln für ein festes Zoomlevel und Raster zur verfügung stellt. Dies können allgemein als Kachel-Layer mit XYZ Quellen zusammengefasst werden. Dabei sind X und Y die Spalten und Zeilen des Rasters und Z repräsentiert den Zoomlevel.

ol.source.OSM

Das OpenStreetMap (OSM) ist ein nicht kommerzielles Karten-Projekt. Das Ziel ist eine Weltkarte, die für jedermann frei zugänglich ist. OSM stellt einige unterschiedlich renderings der Daten in Form gecachten Kachel-Sets zur verfügung. Diese renderings entsprechen dem oben beschriebenen XYZ Raster und können in einer ol Karte verwendet werden. Die ol.source.OSM Layer Source bietet eine Anbindung an diese OpenStreetMap Kacheln.

Einbindug OSM Layer

  var map = new ol.Map({
    target: 'map',
    layers: [
      new ol.layer.Tile({
        source: new ol.source.OSM()
      })
    ],
    view: new ol.View({
      center: ol.proj.transform([-93.27, 44.98], 
		'EPSG:4326', 
		'EPSG:3857'),
      zoom: 9
    }),
    controls: ol.control.defaults({
      attributionOptions: {
        collapsible: false
      }
    })
  });

Projections

Geodaten können auf unterschiedlichen Bezugssystemen basieren. Während sich einige Bezugssysteme auf Geografische Koordinaten mit longitude und latitude abstützen, benutzen andere Bezugssysteme eine lokale Projektion die auf Metern basiert. (z.B. WGS84 im Vergleich zum Schweizer Gitter LV03).

OpenLayers muss wissen, welches Bezugssystem verwendet wird, um die Karte und die Position korrekt darzustellen. Intern wird dies durch das ol.proj.Projection Objekt repräsentiert. Die Funktion transform nimmt Strings entgegen, welche das Bezugssystem repräsentieren.

Die OSM Karten Kacheln und auch andere bekannte Dienste wie Google Maps und Bing verwenden die Mercator Projektion. Um die Geografischen Koordinaten einer Position korrekt zu übergeben, werden diese mit der ol.proj.transform Funktion von „EPSG4326“ in die von OSM erforderlichen „EPSG:3857“ Mercator Koordinaten transformiert (http://epsg.io/3857).

4326 ist der ESPG Bezeichner des WGS84 Bezugssystem. (http://epsg.io/4326)

OpenLayers kann auch in andere Bezugssystem umrechnen, es braucht dazu aber weitere Konfigurationen.

Layer

Das Erstellen des Kachel Layers ist mit OSM einfach. Es kann die ol.source.OSM ohne weitere Konfiguration verwendet werden.

Einbindung Bing Layer (Proprietäre Layer)

OpenLayer kann auch mit proprietären Layern umgehen, indem es direkt mit der API des Service kommuniziert. Ein solcher Fall ist beispielsweise die Bing-Karte, oder Google Maps.

Um die Bing Karte einzubinden, wird die ol.source.BingMaps verwendet. Damit die Bing API verwendet werden kann, muss ein Schlüssel mitgegeben werden. Dieser kann man bekommen, indem man sich für einen API Schlüssel auf BIng registriert: https://www.bingmapsportal.com/

 var map = new ol.Map({
        target: 'map',
        layers: [
          new ol.layer.Tile({
            source: new ol.source.BingMaps({
              imagerySet: 'Road',
              key: 'Ak-dzM4wZjSqTlzveKz5u0d4IQ4bRzVI309GxmkgSVr1ewS6iPSrOvOKhA-CJlm3'
            })
          })
        ],
        view: new ol.View({
          center: ol.proj.transform([-93.27, 44.98], 'EPSG:4326', 'EPSG:3857'),
          zoom: 9
        })
      });

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*