Обновить глобальную переменную в JavaScript - PullRequest
0 голосов
/ 13 марта 2012

У меня есть глобальная переменная в JavaScript, как

var EventLocation = {

        'center' : '35.59214,-121.046048',
        'zoom' : 10
};

теперь в функции мы обновляем эту переменную как

var geocoder = new google.maps.Geocoder();
    var address =  $j('#EventLocation').text(); //record.Location;

 geocoder.geocode( { 'address': address}, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
             var latitude = results[0].geometry.location.lat();
             var longitude = results[0].geometry.location.lng();

             EventLocation.center = new google.maps.LatLng(latitude, longitude);

             //onSuccessMaps(latitude,longitude);
        } else {
            alert('Fail to find location');
        }
    }); 

Но в другой функции EventLocation.center не обновляется, предыдущее значение принимается как ('35.59214,-121.046048'). Как мне решить эту проблему?

1 Ответ

0 голосов
/ 13 марта 2012

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

Это означает, что любой метод, которому нужны координаты, должен быть вызван из метода обратного вызова success:

geocoder.geocode( { 'address': address}, function(results, status) {
  if (status == google.maps.GeocoderStatus.OK) {
    var latitude = results[0].geometry.location.lat();
    var longitude = results[0].geometry.location.lng();

    EventLocation.center = new google.maps.LatLng(latitude, longitude);

    // here the coordinates _are_ set

    // this is where you put the code that needs to use the coordinates

  } else {
    alert('Fail to find location');
  }
});

// here the coordinates are _not_ set yet
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...