Question

Je veux ensemble "EPSG: 4326" comme la projection d'une carte OpenLayers, mais quand je l'essayer, je reçois toujours "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"

    ...

}

La carte de base est ouverte plan.

Comment puis-je régler la projection à EPSG: 4326

Était-ce utile?

La solution

Il est Osmarender qui a une projection hardcoded 900913, rien à faire à ce sujet. Mais avez-vous envisagé de prendre les choses dans l'autre sens? Transformer vos coordonnées ou couche à EPSG: 900913? Consultez ici la documentation: http://docs.openlayers.org/library/spherical_mercator.html

Autres conseils

milovanderlinden a indiqué, 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 likeOsmarenderorMapnik:

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

Quelle est la couche de base. Essayez-vous de dessiner sur les cartes gmaps ou Bing? Si oui, alors OpenLayers peuvent essayer d'obtenir les données correspondent à la projection de la couche de base afin qu'il soit aligné correctement.

Il est pas un bug, il est une fonctionnalité. Mercator sphérique est une projection pixel carré, de sorte que vos OpenLayers fonctionnalités vectorielles peuvent être placées avec précision sur la carte - ce n'est pas le cas avec WSG-84 (EPSG: 4326)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top