首页 文章

OpenLayers:4326 ol.proj.transform无效

提问于
浏览
2

问题


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

代码


当我点击Map,SingleClick事件触发时,我会得到用户点击的坐标:

Example of pPointClicked = [-40364190.03366159, 7054830.416117247];

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

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

Example of 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 回答

  • 1

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

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

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

    [
      -20037508.342789244,
      -20037508.342789244,
      20037508.342789244,
      20037508.342789244
    ]
    

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

相关问题