Openlayers 在更改事件时获取地图坐标
Openlayers3 get map coordinates on change event
我使用地图事件在用户与地图交互时检查地图的坐标。然后我将这个新的地图坐标传递给 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.
确保您将此 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'
);
}
我使用地图事件在用户与地图交互时检查地图的坐标。然后我将这个新的地图坐标传递给 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.
确保您将此 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'
);
}