2015-08-06 2 views
0

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

var UserCoords = { lat: '', lng: '' }; 
function getLocation() { 
    if (navigator.geolocation) { 
     navigator.geolocation.getCurrentPosition(showPosition); 

    } else { 
     alert("Geolocation is not supported by this browser."); 
    } 
} 

function showPosition(position) { 
    UserCoords.lat = position.coords.latitude; 
    UserCoords.lng = position.coords.longitude; 
    console.log(UserCoords);//Works 
} 

function getUserCoords() { 
    getLocation(); 
    console.log(UserCoords);//Returns lat and lng empty 
    OtherFunction(UserCoords.lat, UserCoords.lng); 
} 

Я также попытался:

function getLocation() { 
    if (navigator.geolocation) { 
     navigator.geolocation.getCurrentPosition(function (position) { 
      UserCoords.lat = position.coords.latitude; 
      UserCoords.lng = position.coords.longitude; 
      console.log(UserCoords);//Works 
     }); 
} 

Но ни работы.

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

UPDATE:

jsfiddle: http://jsfiddle.net/9fvcqcvz

+0

Вставьте его в скрипку, пожалуйста ... –

+1

Возможный дубликат [неспособный справиться с асинхронным характером навигатора.geolocation] (http://stackoverflow.com/questions/2707191/unable-to-cope-with-the -асинхронный-природа-навигатор-геолокация) – Andreas

+0

@eugensunic - Добавлена ​​ссылка jsfiddle. –

ответ

0

Это еще не заселена, когда вы пытаетесь получить к нему доступ. Функция обратного вызова showposition будет запускаться только после того, как браузер получит координаты (после того, как пользователь примет его) Так что любой вызов функции с помощью UserCoords следует вызывать ПОСЛЕ этого.

+0

Как бы я это сделал? –

+0

Посмотрите эту ссылку, как предложил Андреас: http://stackoverflow.com/questions/2707191/unable-to-cope-with-the-asynchronous-nature-of-navigator-geolocation –

+0

Я сделал, и я могу использовать его как работаю, но мне бы очень понравилось, если бы я мог получить позиции в переменной, которую я могу просто вызвать, чтобы сделать ее более легкой для меня. –

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