2010-04-09 6 views
3

Je peux avec succès faire:OpenLayers Projections

point.transform(new OpenLayers.Projection("EPSG:900913"), new OpenLayers.Projection("EPSG:4326")); 

à un point qui est au format Google (en mètres), mais quand je veux faire l'inverse: à un point

point.transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:900913")); 

c'est en 4326 (format régulier lat/lon), j'ai quelques problèmes.

Toute valeur négative semble devenir NaN (pas un nombre) lorsque je fais la transformation. Y a-t-il quelque chose à propos de la transformation à l'envers que je ne comprends pas? Edit: Pire encore, quand je n'ai pas de valeurs négatives, les coordonnées semblent désactivées. J'obtiens les coordonnées en dessinant un carré à l'écran, puis en sauvegardant ces coordonnées dans une base de données et en les chargeant plus tard. Je peux dessiner un carré près de la pointe de l'Afrique (coordonnées positives), puis quand il se charge, c'est près du sommet de l'Afrique, dans l'océan Atlantique. Je suis vraiment faire quelque chose de mal ....

Edit: Voici mon code: http://pastie.org/911524

Plus précisément: voilà comment j'initialiser mon carte:

var navControl = new OpenLayers.Control.Navigation(); 
       map = new OpenLayers.Map('map', { 

       // restrictedExtent: bounds.clone(), 


       }); 
     //actually draws the map 
     layerMapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik", { 
     displayOutsideMaxExtent: false, 
     wrapDateLine: true 
     //numZoomLevels: 10 
     }); 
+0

Pouvez-vous afficher les coordonnées spécifiques? Quelle projection utilise votre carte? – amercader

Répondre

2

Ah, j'ai tout compris: À un moment donné de mon code, j'ai confondu la latitude et la longitude, ce qui a tout chamboulé.

2

Si vous voulez vraiment utiliser toute la puissance de transformation de coordonnées, vous devez améliorer les couches ouvertes avec proj4js http://proj4js.org/ un cadre de transformation de coordonnées complètes.

+0

OpenLayers nécessite Proj4JS pour les transformations de projection - mais il doit être explicitement inclus. – winwaed

+2

Pas tout à fait vrai. La transformation de/vers EPSG: 4326 et EPSG: 900913 est incluse par défaut dans un petit sous-ensemble de proj4js inclus dans les scripts Openlayers. – milovanderlinden