【问题标题】:How to convert "normal" coordinates to OSM coordinates in OpenLayers如何在 OpenLayers 中将“正常”坐标转换为 OSM 坐标
【发布时间】:2014-05-09 14:56:07
【问题描述】:

我对 OpenLayers 还很陌生,并且已经遇到了我的第一个问题。我正在尝试将“正常”坐标转换为我从谷歌地图复制到 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);

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

【问题讨论】:

  • 如果您将转换位排除在外,它是否正确居中?
  • 不,它解决了另一个(“错误”)位置
  • 它应该在哪里设置中心?
  • 我不确定我是否会使用正常这个词。 4326 表示纬度和经度(或更准确地说是经度/纬度,正如 scai 指出的那样),而 3857 是球形墨卡托,以米为单位。

标签: javascript openlayers openstreetmap


【解决方案1】:

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

但是,您将 latlon 混为一谈。 OpenLayers.LonLat() 首先接受 lon,然后接受 lat,因为名称已经告诉您。但是你是先通过lat,然后是lon,这当然会导致完全不同的位置。

【讨论】:

  • 谢谢!你拯救了一天
【解决方案2】:

您的位置是在 Steinwerder(汉堡港)还是在非洲之角附近?我假设第一个,所以纬度是北纬 53 度,经度是西纬 9 度。

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

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

只需要知道输入坐标参考,使用getProjectObject函数就可以得到目标参考。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-04
    • 2021-05-29
    • 2014-09-24
    • 2015-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-26
    相关资源
    最近更新 更多