OpenLayer坐标系

时间:2012-07-17 11:15:38

标签: javascript geolocation geocoding openlayers

我很难理解OpenLayers使用的坐标系。

英国莱斯特大约是。

Latitude:  52.63973017532399
Longitude: -1.142578125

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

Latitude:  6915601.9146245
Longitude: -125089.1967713

e.g:

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

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

现在可以这样做:

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