Ende Juni 2012 ist eine neue Version von OpenLayers (OL) erschienen und mit der Version 2.12 sind einige Anpassungen erforderlich. OpenLayers ist ein Framework mit dem die meisten der Karten angezeigt werden die auf den Basis der OpenStreetMap-Daten gründen.
Seitdem ich mich mit OL beschäftige ist sind einfache tiefgreifende Anpassungen vorzunehmen wenn man den OL-Source direkt vom OL-Server bezieht. In diesem Zusammenhang kann ich nur empfehlen den erforderlichen OL-Source lokal auf seinem Server bereitzustellen. Doch dazu mehr weiter unten.
Nachfolgend einige der wichtigsten Anpassungen die erforderlich sind um eine “einfache” OL-Karte auf die Version 2.12 umzustellen. Werden diese nicht angezeigt und wird der Source vom OL-Server bezogen, dann bleibt die Karte leer – insbesondere die ersten beiden Anpassungen sind zwingend erforderlich.
- OpenLayers.Control.MouseDefaults wird ersetzt durch OpenLayers.Control.Navigation
- Austauschen der OpenStreetMap.js gegen …
Als Default-Layer wird Mapnik angezeigt. Aus der Zeile
var layerMapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik");
wird somit
var layerMapnik = new OpenLayers.Layer.OSM;
- onImageLoadError gibt es nicht mehr als Funktion um eine Ersatzgrafik anzuzeigen, wenn kein Tile ausgeliefert werden kann.
// OpenLayers.Util.onImageLoadError = function() {this.src = "../grafiken/empty.png"};
- OL 2.12 zeigt per Default eine pinkfarbende Grafik an wenn kein Tile ausgeliefert werden kann. Soll eine andere benutzerdefinierte Grafik angezeigt werden dann ist in einer CSS-Datei ein Sector “.olImageLoadError” anzulegen und zum Beispiel über die “background-image”-Eigenschaft ein Bild zuzuweisen.
- Werden in einer OL-Karte Tracks über das GML-Format angezeigt, dann ist hier auch eine Anpassung erforderlich da OpenLayers.Layer.GML nicht mehr unterstützt wird. Alternativ können GPX-Dateien als Vektor-Layer (engl. Beschreibung) eingebunden werden.
Bei mir wurde (exemplarisch) aus
var recycling_hl = new OpenLayers.Layer.GML("XXXXX", "../data/recycling_hl/border.gpx", {
format: OpenLayers.Format.GPX,
style: {strokeColor: 'red', strokeWidth: 5,strokeOpacity: 0.5 },
projection: new OpenLayers.Projection("EPSG:4326")
});
dieser Code
var lgpx = new OpenLayers.Layer.Vector("XXXXX", {
protocol: new OpenLayers.Protocol.HTTP({
url: "Somefile.gpx",
format: new OpenLayers.Format.GPX({extractWaypoints: true, extractRoutes: true, extractAttributes: true})
}),
strategies: [new OpenLayers.Strategy.Fixed()],
style: {fillColor: "darkred", strokeColor: "red", strokeWidth: 2, strokeOpacity: 0.5, pointRadius: 5},
projection: new OpenLayers.Projection("EPSG:4326")
});
Komme ich jetzt nochmal auf die lokale Ablage der OL-Sourcen zu sprechen. Es ist aus zwei Gründen sinnvoll die Sourcen lokal auf seinem Server abzulegen. Zum einen ist man vor solchen unerwarteten Releaseänderungen etwas sicher. Die alte Version läuft weiter und die Karte ist nicht auf einmal “tot”. So kann man sich mit den neuen Änderungen zunächst beschäftigen und testen um dann upzudaten. Besonders wenn man mehrere Baustellen hat ist das von Interesse. Zum anderen ist man etwas Ausfallsicherer – wenn der OL-Server mal nicht verfügbar ist, dann ist es auch mit der Karte nicht. Liegt der Source lokal dann gilt das Motto “ist die Webseite verfügbar – dann ist auch die Karte verfügbar”.
Was ist zu tun? Der Source ist von der OL-Seite herunterzuladen, zu entpacken und hochzuladen auf den eigenen Server. Alle Pfade die auf den OL-Server verweisen sind nun entsprechend auf den lokalen anzupassen und damit ist es das auch schon gewesen.
Ergänzung 2013-07-29
Wird auf einen externen nicht OSM-Tileserver zugegriffen, dann ist die Option
tileOptions: {crossOriginKeyword: null}
zu setzen. Weitere Informationen sind https://github.com/openlayers/openlayers/blob/master/notes/2.12.md zu finden.
Hinweis
Alle Angaben beruhen auf eigenen Erfahrungen, müssen nicht vollständig sein und daher kann auch für Schäden die sich durch die Anwendung direkt oder indirekt ergeben keinerlei Haftung übernommen werden.
Links
OpenLayers-Projekt
Zusammenfassung der Änderungen (engl.)
OpenStreetMap-Projekt
OSM-Forumsbeiträge