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

4 回答 4

5

正如milovanderlinden指出的那样,您必须先转换纬度/经度值(如在 Google 或 Bing 地图中使用的那样),然后才能将其应用于 OpenStreetMap 图层,例如Osmarenderor Mapnik

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);
于 2010-07-29T21:59:56.440 回答
2

Osmarender 有一个硬编码的 900913 投影,与此无关。但是你有没有考虑过反其道而行之?将您的坐标或图层转换为 EPSG:900913?在此处查看文档:http: //docs.openlayers.org/library/spherical_mercator.html

于 2010-05-18T14:56:14.833 回答
0

什么是基础层。你想在 GMaps 或 Bing Maps 上绘图吗?如果是这样,那么 OpenLayers 可能会尝试让数据与基础层的投影相匹配,以便正确排列。

于 2010-04-21T20:55:40.420 回答
0

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

于 2010-08-25T13:58:50.820 回答