OpenLayers:4326 ol.proj.transform无效

时间:2017-06-12 09:39:02

标签: javascript transform openlayers openlayers-3

问题

当我点击地图时,我想将坐标转换为 4326 的格式。当我这样做时,似乎数组的Latitude部分变换正常,但经度部分不正确且无效。

代码

当我点击地图时, SingleClick 事件会触发,然后我会获取用户点击的位置坐标:

pPointClicked示例= [-40364190.03366159,7054830.416117247];

session.Map.on('singleclick', function (e) {
    var pPointClicked = e.coordinate;
});

我尝试使用以下代码将这些坐标转换为 4326

coord4326的示例= [-362.59768838343064,53.38659640004323];

session.Map.on('singleclick', function (e) {
    var pPointClicked = e.coordinate;

    var coord4326 = ol.proj.transform(pPointClicked, 'EPSG:3857', 'EPSG:4326');
});

正如您所看到的,转换变量中的第一个值是 -362.59768838343064 ,这是不正确的?有谁知道为什么会这样。

1 个答案:

答案 0 :(得分:1)

转型似乎有效。这就是我认为正在发生的事情:你不在地图的“原始范围”内,即你向西平移并将整个世界包裹至少两次。

尝试完全缩小,然后在“相同”位置向东平移两次,然后再次单击。你应该有你正在寻找的坐标。

以下是另一个提示:EPSG:3857中的世界范围是:

[
  -20037508.342789244,
  -20037508.342789244,
  20037508.342789244,
  20037508.342789244
]

[-40364190.03366159, 7054830.416117247]超出了这个范围,但是如果你平移两次世界,你应该得到:289173.348083102, 7054830.416117247],这是在范围内。