问题



当我单击地图时,我想将坐标转换为4326的格式。执行此操作时,似乎数组的纬度部分可以很好地转换,但经度部分不正确且无效。





当我单击地图时,将触发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,这是不正确的吗?有谁知道为什么会这样。

最佳答案

转型似乎正在奏效。我想这就是正在发生的事情:您不在地图的“原始范围内”,即,您向西移动并至少缠绕了整个世界两次。

尝试完全缩小,然后在东方的“相同”位置平移两次,然后再次单击。您应该拥有所需的坐标。

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

[
  -20037508.342789244,
  -20037508.342789244,
  20037508.342789244,
  20037508.342789244
]


[-40364190.03366159, 7054830.416117247]不在此范围内,但是如果平移两次以环绕世界,则应该得到:289173.348083102, 7054830.416117247],它在范围内。

09-20 17:11