2010-04-20 227 views
3

我想将“EPSG:4326”设置为OpenLayers地图的投影,但是当我尝试它时,我总是会收到“EPSG:900913”。在OpenLayers地图中更改投影

function init() { 

    var options = { 
      projection: new OpenLayers.Projection("EPSG:4326") // ignored 
    }; 

    map = new OpenLayers.Map('map', options); 

    var layer = new OpenLayers.Layer.OSM.Osmarender("Osmarender"); 
    map.addLayer(layer); 

    ... 

    alert(map.getProjection()); // returns "EPSG:900913" 

    ... 

} 

底图是开放的街道地图。

如何设置投影到EPSG:4326?

回答

0

什么是基础层。您是否尝试使用GMaps或Bing地图?如果是这样,那么OpenLayers可能会试图获取数据以匹配基础层的投影,以便它正确排列。

+0

基本层是OSM – deamon 2010-04-26 14:32:47

5

由于milovanderlinden已经指出的那样,你必须之前在OpenStreetMap的层像OsmarenderMapnik应用于变换纬度/经度值(如谷歌或Bing地图使用):

var datapoint = new OpenLayers.LonLat(-71.0, 42.0); 
var proj_1 = new OpenLayers.Projection("EPSG:4326"); 
var proj_2 = new OpenLayers.Projection("EPSG:900913"); 
datapoint.transform(proj_1, proj_2); 
0

这不是一个错误,它是一个功能。球面墨卡托是一个方形像素投影,因此您的开放式矢量特征可以准确地放置在地图上 - WSG-84(EPSG:4326)的情况并非如此