OpenLayers:4326 ol.proj.transform 不工作

OpenLayers : 4326 ol.proj.transform not working

问题


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

代码


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

pPointClicked 示例 = [-40364190.03366159, 7054830.416117247];

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

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

坐标示例 4326 = [-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,这是不正确的?有谁知道为什么会这样。

转型似乎奏效了。这是我认为正在发生的事情:您不在地图的 "original extent" 范围内,即您向西平移并至少包裹了整个世界两次。

尝试完全缩小,然后在 "same" 位置向东平移两次,然后再次单击。你应该有你要找的坐标。

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

[
  -20037508.342789244,
  -20037508.342789244,
  20037508.342789244,
  20037508.342789244
]

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