在开放层图中更改投影
-
28-09-2019 - |
题
我想将“ 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)并非如此
不隶属于 StackOverflow