Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript OpenLayers:4326 ol.proj.transform不工作 问题_Javascript_Transform_Openlayers_Openlayers 3 - Fatal编程技术网

Javascript OpenLayers:4326 ol.proj.transform不工作 问题

Javascript OpenLayers:4326 ol.proj.transform不工作 问题,javascript,transform,openlayers,openlayers-3,Javascript,Transform,Openlayers,Openlayers 3,当我点击地图时,我想把坐标转换成4326的格式。当我这样做时,数组的纬度部分似乎转换得很好,但经度部分不正确且无效 代码 当我单击地图时,SingleClick事件触发,然后我得到用户单击位置的坐标: 点击点的示例=[-40364190.033661597054830.416117247] session.Map.on('singleclick', function (e) { var pPointClicked = e.coordinate; }); session.Map.on(

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

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

点击点的示例=[-40364190.033661597054830.416117247]

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

    var coord4326 = ol.proj.transform(pPointClicked, 'EPSG:3857', 'EPSG:4326');
});
我尝试使用以下代码将这些坐标转换为4326:

coord4326的示例=[-362.59768838343064,53.38659640004323]

session.Map.on('singleclick', function (e) {
    var pPointClicked = e.coordinate;
});
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.033661597054830.416117247]
超出该范围,但是如果你平移两次来包装世界,你应该得到:
289173.3480831027054830.416117247]
,在该范围内。

谢谢你的回答。我有点不明白你的回答是什么意思?尝试完全缩小,然后在“同一”位置向东平移两次“…打开此示例:。打开浏览器开发工具(F12)。粘贴此内容以获取范围:map.getView().calculateExtent(map.getSize())。向西游了很多次,并尝试再次获得范围。你会看到,你越是“包装”这个世界,你就会发现,对于给定的位置,范围是不“相同”的。一旦我们得到了它,它就变得很明显,但这有点难以解释,对吗?:)很高兴听到积极的反馈。快乐编码。