在OpenLayers地图中更改投影

3

我想将"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个回答

5

正如milovanderlinden所指出的那样,在将Google或Bing地图中使用的纬度/经度值应用于OpenStreetMap图层(如OsmarenderMapnik)之前,您必须对其进行转换:

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

2

0

什么是基础层?你是在尝试在 GMaps 或 Bing Maps 上绘制吗?如果是这样,那么 OpenLayers 可能正在尝试获取与基础层投影匹配的数据,以便正确对齐。


0

这不是一个错误,而是一个特性。球面墨卡托投影是一个方形像素投影,因此您的OpenLayers矢量要素可以准确地放置在地图上 - 这在WSG-84(EPSG:4326)中并非如此。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接