2012-07-17 105 views
8

我很努力地理解OpenLayers使用的坐标系。OpenLayer坐标系

莱斯特,英国是在大约。

Latitude: 52.63973017532399 
Longitude: -1.142578125 

但使用的OpenLayers显示相同的位置我必须使用:

Latitude: 6915601.9146245 
Longitude: -125089.1967713 

如:

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

这些显然不是经纬度坐标,是有一些转换我需要考虑?

工作示例是http://craig-russell.co.uk/demos/openlayers/so_map.html

回答

7

它看起来像我确实需要之间进行映射的坐标系。 这与transform()函数来完成,像这样:

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

现在可以做到:

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