问题
当我单击地图时,我想将坐标转换为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]
,它在范围内。