我正在使用openLayers并创建一个OSM基础层 . 默认情况下,图层使用EPSG:900913,坐标以米为单位 . 我想在EPSG中使用度数坐标:4326所以我用以下内容初始化图层:
base_layer.addOptions({ sphericalMercator: true,
projection: new OpenLayers.Projection('EPSG:4326')}, true);
现在 Map 使用度数,但有下一个问题:我在lat中看到纬度为37.296且经度为-5.929(http://www.openstreetmap.org/?lat=37.296&lon=-5.929&zoom=12&layers=Q#且Google Map 中的坐标相同)的点(移动 Map 并在firebug中执行 map.getCenter()
) . -49.75,lon . -5.929 .
为什么?如何使用具有与 openstreetmap.org
中相同度数坐标的OSM图层以及 nominatim.openstreetmap.org
返回的OSM图层?
1 回答
当您正在显示的图块实际呈现在
EPSG:3857
中时,您不能只声明图层是EPSG:4326
. 这是荒谬的 .我不清楚你要在这里做什么,说实话,但是将
displayProjection
设置为EPSG:4326
可能会有所帮助,这会导致OpenLayers在向用户传递值或从用户传递值时使用度 .如果要在代码中读取或设置 Map 位置,则需要重新投影从
getCenter
获得的值,或者通过在位置值上调用transform
方法来自行提供给setCenter
.