2012-07-17 20 views
8

Tôi đang đấu tranh để hiểu hệ thống tọa độ được sử dụng bởi OpenLayers.Hệ thống điều phối OpenLayer

Leicester, Vương quốc Anh có giá xấp xỉ.

Latitude: 52.63973017532399 
Longitude: -1.142578125 

Nhưng để hiển thị cùng một vị trí sử dụng OpenLayers tôi phải sử dụng:

Latitude: 6915601.9146245 
Longitude: -125089.1967713 

ví dụ:

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

Đây là rõ ràng không Latitude-Longitude tọa độ, là có một số chuyển đổi tôi cần phải tính đến?

Một ví dụ làm việc là http://craig-russell.co.uk/demos/openlayers/so_map.html

Trả lời

7

Dường như tôi cần để ánh xạ giữa các hệ tọa độ. này được thực hiện với sự transform() chức năng như vậy:

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

Bây giờ có thể làm:

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