簡體   English   中英

Openlayers3獲取更改事件的地圖坐標

[英]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'
  );
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM