2010-04-20 66 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)的情況並非如此