2016-07-18 4 views
0

Я пытаюсь вернуть position.coords.latitude и долготу в качестве переменных для использования в другом месте кода. Как заставить функцию возвращать используемые переменные?Javascript Navigator.geolocation

if (navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(function(position) { 
    var lat = position.coords.latitude; 
    var lon = position.coords.longitude; 
    var values = [lat, lon]; 

    return values; 

    }); 
} 

console.log(values); 
+1

Вы этого не сделаете; асинхронные функции не возвращаются ... – dandavis

ответ

0

Вы должны использовать методы обратного вызова.

Есть чтение этого:

https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/getCurrentPosition

var options = { 
    enableHighAccuracy: true, 
    timeout: 5000, 
    maximumAge: 0 
}; 

function success(pos) { // success callback 
    var crd = pos.coords; 

    console.log('Your current position is:'); 
    console.log('Latitude : ' + crd.latitude); 
    console.log('Longitude: ' + crd.longitude); 
    console.log('More or less ' + crd.accuracy + ' meters.'); 

    var values = [crd.latitude, crd.longitude]; 
    doSomethingWithCoordinateValues(values); 
}; 

function doSomethingWithCoordinateValues(coords) { 
    // do something with 'coords' 
} 

function error(err) { // error callback 
    console.warn('ERROR(' + err.code + '): ' + err.message); 
}; 

navigator.geolocation.getCurrentPosition(success, error, options); 

Вы также могли иметь чтения этого answer, который гласит:

Если вызов внутренней функции является асинхронным, то все функция «обертывания» этого вызова также должна быть асинхронной, чтобы «вернуть» ответ.