Frage

Ich will set „EPSG: 4326“, wie die Projektion eines Openlayers Karte, aber wenn ich es versuchen, habe ich immer „EPSG: 900913“.

function init() {

    var options = {
            projection: new OpenLayers.Projection("EPSG:4326")  // ignored
    };

    map = new OpenLayers.Map('map', options);

    var layer = new OpenLayers.Layer.OSM.Osmarender("Osmarender");
    map.addLayer(layer);

    ...

    alert(map.getProjection());  // returns "EPSG:900913"

    ...

}

Die Basiskarte ist offen Stadtplan.

Wie kann ich die Projektion auf EPSG gesetzt: 4326

War es hilfreich?

Lösung

Es ist Osmarender, die ein 900.913 Projektion fest einprogrammiert hat, nichts zu tun. Aber haben Sie darüber nachgedacht, was umgekehrt zu nehmen? Transforming Ihre Koordinaten oder eine Schicht EPSG: 900.913? Überprüfen Sie die Dokumentation hier: http://docs.openlayers.org/library/spherical_mercator.html

Andere Tipps

Wie milovanderlinden hat darauf hingewiesen, Sie haben Breiten- / Längenwerte zu transformieren (wie in Google oder Bing Maps verwendet), bevor die in OpenStreetMap Schichten likeOsmarenderorMapnik angewandt werden:

var datapoint = new OpenLayers.LonLat(-71.0, 42.0);
var proj_1 = new OpenLayers.Projection("EPSG:4326");
var proj_2 = new OpenLayers.Projection("EPSG:900913");
datapoint.transform(proj_1, proj_2);

Was ist die Basisschicht. Versuchen Sie, auf GMaps oder Bing Maps zu ziehen? Wenn ja, dann versucht werden, Openlayers können die Daten zu erhalten, die Projektion der Basisschicht entsprechen, so dass es Linien richtig auf.

Es ist kein Fehler, es ist ein Feature. Spherical Mercator ist ein Quadrat-Pixel-Vorsprung, so dass Ihre Openlayers Vektor-Features genau auf der Karte platziert werden - dies ist nicht der Fall mit WSG-84 (EPSG: 4326)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top