Ändern Projektion in Openlayers Karte
-
28-09-2019 - |
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
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 likeOsmarender
orMapnik
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)