如何在OpenLayers中将“普通”坐标转换为OSM坐标

3

我在OpenLayers中还是新手,但已经遇到了第一个问题。我尝试将我从Google地图复制的“普通”坐标转换为OSM以将我的地图定位到特定区域。 据我所知,“普通”的坐标系统是EPSG:4326,而OSM是EPSG:3857或EPSG:900913,它们是相同的。因此,我的JavaScript代码如下:

map.setCenter(new OpenLayers.LonLat(53.537460, 9.953227).transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:3857")), 5);

但这个中心位于完全不同的位置。我错过了什么吗?

如果省略转换位,它是否会正确居中? - Genti Saliu
不,它解析到另一个(“错误”的)位置。 - olkoza
它应该在哪里设置中心? - Beterraba
2
我不确定我会使用“正常”这个术语。4326表示纬度和经度(或更正确地说,经度/纬度,正如scai所指出的),而3857是球形墨卡托投影,以米为单位。 - John Powell
2个回答

5

谷歌地图OSM显示的位置完全相同。除此之外就很奇怪了。

然而,您混淆了纬度(lat)经度(lon)。正如名称所示,OpenLayers.LonLat()首先接受lon,然后是lat。但是您传递的是lat,然后是lon,这当然会导致完全不同的位置。


谢谢!你拯救了这一天。 - Muhammad Faizan Khan

2

您的位置是在斯泰因韦德(汉堡港)还是非洲之角?我猜测是前者,因此纬度为53度北,经度为9度西。

这应该可以将您的地图定位到正确的位置。

map.setCenter(new OpenLayers.LonLat(9.953227,53.537460).transform('EPSG:4326', map.getProjectionObject()), 5);

您只需要知道输入坐标参考系,并使用getProjectObject函数获取目标参考系即可。


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