OSM mit OL ohne Internetverbindung verwenden.

Hallo,

ich möchte OSM lokal mit OpenLayer verwenden. Meine Frage ist nun wie kann ich das bewerkstelligen, dass OL sich lokal die Kartendaten holt bzw. wo.

MfG

Hallo,
zunächst mal musst du dir die Tiles erstmal runterladen. Wie man das am besten macht, weiß ich auch nicht, da ich sie selber mit Kosmos rendere.

Jedenfalls kannst du dann, statt die Online-Layer zu benutzen, eine eigene Layer-Klasse erstellen, die sich die Tiles lokal aus einem Unterordner beschafft.

/**
 * Class: OpenLayers.Layer.OSM.Kosmos
 *
 * Inherits from:
 *  - <OpenLayers.Layer.OSM>
 */
OpenLayers.Layer.OSM.Kosmos = OpenLayers.Class(OpenLayers.Layer.OSM, {
    /**
     * Constructor: OpenLayers.Layer.OSM.Kosmos
     *
     * Parameters:
     * name - {String}
     * options - {Object} Hashtable of extra options to tag onto the layer
     */
    initialize: function(name, options) {
        var url = [
            "tiles/"
        ];
        options = OpenLayers.Util.extend({ numZoomLevels: 17, attribution: "" }, options);
        var newArguments = [name, url, options];
        OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments);
    },

    CLASS_NAME: "OpenLayers.Layer.OSM.Kosmos"
});

Die Klasse hat Kosmos im Namen, da sie eigentlich für Kosmos Tiles gedacht ist, aber ich nehme mal an das funktioniert für Tiles von anderen Renderern genauso.

Dann musst du in der drawmap()-Funktion (oder wie sie bei dir heisst) nurnoch den Layer erstellen und hinzufügen.

layerKosmos = new OpenLayers.Layer.OSM.Kosmos("Meine lokale Karte");
map.addLayers([layerKosmos]);

Ansonsten muss das Grundgerüst aussehen, wie in den bekannten OpenLayers Beispielen. Wenn du komplett offline arbeiten und nicht nur die Tiles lokal holen willst, dann musst du auch noch die eingebundenen JavaScript-Dateien runterladen und den Verweis ändern.

<script type="text/javascript" src="http://www.openlayers.org/api/OpenLayers.js"></script>
<script type="text/javascript" src="http://www.openstreetmap.org/openlayers/OpenStreetMap.js"></script>

Zu beispielsweise:

<script type="text/javascript" src="OpenLayers.js"></script>
<script type="text/javascript" src="OpenStreetMap.js"></script>

Gruß

Danke für die Hilfe.