Javascript - возврат переменной не удался - PullRequest
0 голосов
/ 04 октября 2010

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

var where;
if (navigator.geolocation) {
    where = navigator.geolocation.getCurrentPosition(function (position) {
    // okay we have a placement - BUT only show it if the accuracy is lower than 500 mtrs
    //if (position.coords.accuracy <= 500 ) {
        // put their lat lng into google
        var meLatLng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
        var image = "images/map_blue.png";
        var myMarker = new google.maps.Marker({
          position: meLatLng,
          map: map,
          title: "Your location, as provided by your browser",
          icon: image,
          zIndex: 50
        }); 
    //} // end 500 mtrs test
            return meLatLng;        
    });
    alert("A: "+where);
}

У меня есть глобальная переменная с именем where, я пытаюсь заполнить ее информацией LatLng, полученной из браузера с помощью navigator.geolocation - она ​​отображает пользователя на карте - но предупреждение (где) всегда возвращает неопределенное значение

Что я делаю не так?

1 Ответ

3 голосов
/ 04 октября 2010

Короткий ответ, ничего,

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

Чтобы использовать возвращаемое значение, вы должны вместо этого использовать callBack или обрабатывать данные там, где они есть ...

Просто попробуйте заменить return meLatLng на customCallBack(meLatLng) и затем определите customCallBack где-нибудь вдоль линии.

Или, поскольку вы уже определили where в глобальной области видимости, вы можете попробовать заменить return meLatLng на where = meLatLng, а затем удалить where = из where = navigatior.geoloc....

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...