在OpenLayers Map中更改投影

时间:2010-04-20 09:31:41

标签: javascript geospatial openlayers openstreetmap proj4js

我想将“EPSG:4326”设置为OpenLayers地图的投影,但是当我尝试时,我总是得到“EPSG:900913”。

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?

4 个答案:

答案 0 :(得分:5)

正如 milovanderlinden 所指出的那样,你必须先转换纬度/经度值(如Google或Bing地图中所用),然后才能应用于Osmarender或{{OpenStreetMap层。 1}}:

Mapnik

答案 1 :(得分:2)

Osmarender有一个硬编码的900913预测,与此无关。但你有没有考虑过相反的事情?将坐标或图层转换为EPSG:900913?请查看此处的文档:http://docs.openlayers.org/library/spherical_mercator.html

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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