2016-07-07 17 views
0

Ich verwende ein Kartenereignis, um die Koordinaten der Karte zu überprüfen, wenn ein Benutzer damit interagiert. Ich übergebe diese neuen Kartenkoordinaten dann an Cookies, damit das nächste Mal, wenn der Benutzer auf die Karte zugreift, die Koordinaten gespeichert werden.Openlayers3 bekomme Kartenkoordinaten bei Änderungsereignis

Ich habe Probleme beim Abrufen der richtigen Längen- und Breitengradprojektion. Ich verwende mapbox für die Quelle.

Dies ist die Anfangskoordinaten:

[55.378051, -3.43597299999999] = UK 

Dann verwende ich eine Ereignis-Karte ändern, um die Koordinaten für die Mitte der Karte zu greifen.

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); 

}); 

Wenn ich die Karte nach Deutschland zu bewegen ist dies die Koordinaten, die ich bekomme: [8.686417,50.057008999999994], die ganz korrekt zu sein scheinen.

Dann lade ich die Seite erneut, und die Kartenansicht ist vor der Küste in Südafrika. Einige Projektionsprobleme passieren hier.

Ich bekomme immer Fehler auf meiner Konsole und ich habe versucht, die Projektion Transformation mehrmals zu ändern.

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

Antwort

1

Stellen Sie sicher, dass dieses Cookie sind die Umwandlung zu EPSG:3857 Koordinaten zurück, auch sicherstellen, dass Sie mit numbers statt string zu tun haben, sehen parseFloat():

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

Also, wenn ich dann versuchen, das bekommen neue Koordinaten muss ich nur tun? 'map.getView(). setCenter (ol.proj.transform (to3867 ([Cookies.get (_myLonCoord, lon), Cookies.get (_myLatCoord, lat)]), 'EPSG: 4326', 'EPSG: 3857') ; ' –

+0

@NicolasT Nr.' Map.getView(). SetCenter (bis3867 ([Cookies.get (_myLonCoord, lon), Cookies.get (_myLatCoord, lat)])) ' –

+0

Danke @JonatasWalker.Das hat perfekt funktioniert !! Danke! –

Verwandte Themen