2010-04-20 6 views
3

Je veux définir "EPSG: 4326" comme la projection d'une carte OpenLayers, mais quand je l'essaie, je reçois toujours "EPSG: 900913".Changer la projection dans OpenLayers Map

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" 

    ... 

} 

La carte de base est Open map.

Comment puis-je définir la projection sur EPSG: 4326?

Répondre

0

Quelle est la couche de base. Est-ce que vous essayez de dessiner sur GMaps ou Bing Maps? Si c'est le cas, OpenLayers essaie peut-être d'obtenir que les données correspondent à la projection du calque de base afin qu'il s'aligne correctement.

+0

la couche de base est OSM – deamon

5

Comme milovanderlinden a souligné, il faut transformer les valeurs de latitude/longitude (tel qu'il est utilisé dans Google Maps ou Bing) avant peut être appliqué en couches OpenStreetMap comme Osmarender ou Mapnik:

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); 
0

Ce n'est pas un bug, c'est une fonctionnalité. Spherical Mercator est une projection à pixels carrés, de sorte que vos entités vectorielles openlayers peuvent être placées avec précision sur la carte - ce n'est pas le cas avec WSG-84 (EPSG: 4326)