2013-08-04 2 views
0

Что я делаю неправильно? Я пытаюсь получить значения широты и долготы от функции, но я получаю undefined.извлекать значения множителей из функции

var getPos = function() { 
    if (navigator.geolocation) 
    { 
    navigator.geolocation.getCurrentPosition(function(p) 
    { 
     var lat = p.coords.latitude, 
     lng = p.coords.longitude; 
     return [lat, lng];   
    }) 

    } 
} 

var co = getPos(), 
    la = co[0], 
    ln = co[1]; 
alert(la+ln); 
+1

Вы ничего не возвращаете. Этот 'return' находится внутри другой области. – elclanrs

ответ

1

navigator.geolocation.getCurrentPosition является асинхронным, поэтому вы ничего не получаете, вы можете использовать функцию обратного вызова и действовать на возвращаемые значения, например, так:

var getPos = function(callback) { 
    if (navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(function(p) { 
     var rlat = p.coords.latitude, 
     lng = p.coords.longitude; 
     callback([lat, lng]);   
    }) 
    } 
}; 
getPos(function(lat, long) { 
    // do what you need with those 
}); 

Вы можете прочитать о том, что в the docs:

Чтобы получить текущее местоположение пользователя, вы можете вызвать метод getCurrentPosition(). Это инициирует асинхронный запрос для определения позиции пользователя и запрашивает аппаратное обеспечение позиционирования для получения актуальной информации.

+0

Привет Альберто, спасибо за ваш ответ, я новичок в этом ... И я не очень хорошо понимаю, как я могу получить доступ к ценностям откуда угодно, когда мне нужно. например, мне нужны координаты в одной точке, поэтому я спрашиваю у своей функции, и я мог бы получить доступ к – allan

+0

. Вы определяете функцию, как вы это делали, и вызываете ее там, где вам нужно, я не понимаю, я открыт для вас, хотя, пожалуйста Более конкретно. –

+0

Еще раз спасибо, и извините за мой английский ... мне нужна функция, которую я мог бы вызвать из любого места в моем приложении и получить координаты для использования в тот момент, когда мне нужно, например, когда мне нужно загрузить карту поэтому я просто вызываю функцию и получаю координаты, это возможно? и еще раз спасибо за вашу страсть и беспокойство. – allan

Смежные вопросы