2016-07-07 8 views
0

マップイベントを使用して、ユーザーがマップの座標を確認します。次に、この新しいマップ座標をクッキーに渡して、次にユーザーがマップにアクセスするときに座標を記憶するようにします。Openlayers3変更イベントのマップ座標を取得

正しい緯度と経度の投影を取得する際に問題が発生しています。私はソースに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

parseFloat()見、あなたがnumbersの代わりstringを扱っていることを確認してください、あなたはこのクッキーを変換していることは、バックEPSG:3857に座標を確認してください:私はその後、取得しようとするので、

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

を新しい座標私はこれを行う必要がありますか? 'EPSG:4326'、 'EPSG:3857')。map.getView()。setCenter(ol.proj.transform(to3867([Cookies.get(_myLonCoord、lon)、Cookies.get(_myLatCoord、lat)]) ;)? –

+0

@NicolasT番号 'map.getView().setCenter(to3867([Cookies.get(_myLonCoord、lon)、Cookies.get(_myLatCoord、lat)]))' –

+0

ありがとう@JonatasWalker。 !! ありがとうございました! –

関連する問題