Openlayers3获取更改事件的地图坐标

时间:2016-07-07 10:09:11

标签: javascript openlayers-3

当用户与地图交互时,我使用地图事件来检查地图的坐标。然后我将这个新的地图坐标传递给cookie,以便下次用户访问地图时记住坐标。

我在检索正确的纬度和经度投影时遇到问题。我使用mapbox作为源代码。

这是初始坐标:

[55.378051, -3.43597299999999] = UK

然后我使用地图更改事件来抓取地图中心的坐标。

map.getView().on('change:center', function) {

   var coord = ol.proj.transform(map.getView().getCenter(), 'EPSG:3857', 'EPSG:4326');   
   var lon = coord[1];
   var lat = coord[0];

   Cookies.set(_myLonCoord, lon);
   Cookies.set(_myLatCoord, lat);

});

如果我将地图移动到德国,这是我得到的坐标:[8.686417,50.057008999999994],这看起来完全正确。

然后我再次加载页面,地图视图离开了南非的海岸。一些预测问题正在这里发生。

我的控制台上一直出现错误,我尝试多次更改投影转换。

ol.js:249 Uncaught TypeError: Failed to execute 'putImageData' on 'CanvasRenderingContext2D': The provided double value is non-finite.

1 个答案:

答案 0 :(得分:1)

确保您已将此Cookie坐标转换回EPSG:3857,同时确保您正在处理numbers而不是string,请参阅parseFloat() }:

// a helper function
function to3857(coord) {
  return ol.proj.transform(
    [parseFloat(coord[0]), parseFloat(coord[1])],
    'EPSG:4326', 'EPSG:3857'
  );
}