Я начинаю изучать javascript и возиться с gps. В настоящее время у меня возникают проблемы с определением функции.javascript asynchronous scoping
Код
$(document).ready(function() {
var lat, lng;
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function (position) {
$(document).data('lat', position.coords.latitude); //undefined outside
lat = position.coords.latitude; //undefined outside
lng = position.coords.longitude; //undefined outside
});
}
var coords = new google.maps.LatLng(lat,lng); //lat & lng are undefined
});
проблема заключается в том, что любое значение я придаю в локальной области видимости функции, созванном getCurrentPosition не хранится. Что лучше всего подходит для решения этой проблемы. Я предполагаю, что это просто вернуть объект обратно, содержащий данные, но как именно я это делаю? Я пытался это сделать, но он все еще не работал
Это не проблема с областью, это проблема времени. Проблема в том, что координаты не установлены до тех пор, пока не будет создана переменная «координаты» (геолокация является асинхронной) – geocodezip
Посмотрите на http://stackoverflow.com/q/14220321/218196, чтобы понять проблему (даже подумал, что это об Ajax, это относится ко всем асинхронным ситуациям). –