Changement de projection dans OpenLayers Carte
-
28-09-2019 - |
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
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 likeOsmarender
orMapnik
:
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)