2012-07-17 19 views
8

Tengo dificultades para comprender el sistema de coordenadas utilizado por OpenLayers.OpenLayer Coordinate System

Leicester, Reino Unido está a aprox.

Latitude: 52.63973017532399 
Longitude: -1.142578125 

Pero para mostrar la misma ubicación mediante OpenLayers Tengo que usar:

Latitude: 6915601.9146245 
Longitude: -125089.1967713 

por ejemplo:

var center = new OpenLayers.LonLat(-125089.1967713, 6915601.9146245); 
var map  = new OpenLayers.Map("demoMap"); 
map.addLayer(new OpenLayers.Layer.OSM()); 
map.setCenter(center, 12); 

Estos están claramente coordenadas no latitud y longitud, ¿hay alguna conversión I necesidad de tener en cuenta?

Un ejemplo de trabajo es http://craig-russell.co.uk/demos/openlayers/so_map.html

Respuesta

7

Parece que sí necesito para trazar entre los sistemas de coordenadas. Esto se hace con la función transform() así:

var coor_from = new OpenLayers.Projection("EPSG:4326"); 
var coor_to = new OpenLayers.Projection("EPSG:900913"); 
var center = new OpenLayers.LonLat(-1.142578125, 52.63973017532399); 
var map  = new OpenLayers.Map("demoMap"); 
center.transform(coor_from, coor_to); 
map.addLayer(new OpenLayers.Layer.OSM()); 
map.setCenter(center, 12); 
0

Ahora es posible hacer:

var map = new OpenLayers.Map("demoMap"); 
var p = map.getView().getProjection(); 
var cord = ol.proj.fromLonLat([longitude, latitude], p);