Установить данные внутри функции getCurrentPosition - PullRequest
0 голосов
/ 01 сентября 2011

Я делаю следующее:

Первое - я проверяю, загрузили ли я уже данные широты и долготы.Если у меня есть, я сохраняю это в массив с именем "location".

Второе - если у меня нет загруженных данных, я пытаюсь получить текущую позицию.После этого я пытаюсь сохранить широту и долготу для текущей позиции.И, в конце концов, я вызываю setMap ();функция, где я проверяю массив местоположений и где я генерирую карту.

Проблема:

Ну, как я уже сказал ... внутри "getCurrentPosition", я пытаюсь установить текущийПоложение в массиве "location", и после этого я пытаюсь получить эти значения внутри setMap ();функция.Вот проблема, но только когда я устанавливаю значения «location» внутри «getCurrentPosition».Если я установил значения «location» вручную (из массива «data»), все работает нормально.Кроме того, когда я вызываю функцию setMap () внутри "getCurrentPosition", все работает нормально ... но когда я вызываю ее извне, не будет работать.Может кто-нибудь объяснить мне, что происходит и что я могу сделать?

Вот мой код:

location = new Array();
if (data.lat) {
        location['lat'] = data.lat;
        location['lng'] = data.lng;
    } else {
        if (!navigator.geolocation) {
            //
        } else {        
            navigator.geolocation.getCurrentPosition(function(position) {
                location['lat'] = position.coords.latitude;
                location['lng'] = position.coords.longitude;
            });
        }       
    }
setMap();

Спасибо.

1 Ответ

0 голосов
/ 01 сентября 2011

Вы устанавливаете другую переменную внутри getCurrentPosition. Я бы предложил исследовать переменную область. Проверьте этот вопрос.

- изменить -

Я не понимал, что функция, которую вы использовали, была частью Javascript, я думал, что вы написали / получили ее откуда-то.

Кроме того, я исправлен в отношении объема. Поскольку вы используете массив, область действия в порядке, вы должны иметь возможность установить его внутри функции обратного вызова просто отлично.

Я запустил ваш код и получил несколько странных распечаток, когда набрал console.log на location. Я сделал предположение, и похоже, что местоположение является зарезервированным словом . Могу поспорить, что если вы измените имя location на другое, ваш код должен работать нормально.

- изменить -

На самом деле я должен был это понять раньше, поскольку location - это то же самое, что и window.location, то есть местоположение панели браузера!

...