我想将“ 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?

有帮助吗?

解决方案

正是Osmarender具有硬编码900913的投影,这与此无关。但是,您是否考虑过相反的情况?将您的坐标或层转换为EPSG:900913?在此处检查文档: http://docs.openlayers.org/library/spherical_mercator.html

其他提示

作为 Milovanderlinden 已经指出,您必须改变纬度/经度值(如Google或Bing地图中使用),然后才能在OpenStreetMap层中应用。Osmarender或者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);

什么是基层。您是否要借鉴GMAP或BING地图?如果是这样,那么OpenLayers可能会尝试获取数据以匹配基础层的投影,以使其正确对齐。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top