2014-05-09 119 views
3

我对OpenLayers相当陌生,并且已经停留在我的第一个问题上。我试图将“Google地图”中复制的“正常”坐标转换为OSM坐标,以便将我的地图集中到某个区域。 现在据我所知,“正常”坐标系统EPSG:4326和OSM一个是EPSG:3857或EPSG:900913,这是相同的。所以我的Javascript代码是:如何将OpenLayers中的“normal”坐标转换为OSM坐标

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

但是,这中心到一个完全不同的位置。我错过了什么?

+0

如果您将转换位退出,它会正确居中吗? –

+0

不,它解决了另一个(“错误的”)位置 – olkoza

+0

它在哪里设置中心? – Beterraba

回答

4

Google MapsOSM显示完全一样的位置。其他一切都会很奇怪。

但是,您正在混合latlonOpenLayers.LonLat()接受第一个lon,然后纬度作为名称已经告诉你。但是你首先通过lat然后lon,这当然会导致完全不同的位置。

+0

谢谢!你节省了一天的时间 –

2

是您在Steinwerder(Hamburger Hafen)还是在非洲之角的位置?我假设第一个纬度是北纬53度,西经9度。

这应该将您的地图设置在正确的位置。

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

你只需要知道输入的坐标参考,并使用getProjectObject函数来获取目标参考。

相关问题