为什么我不能在该函数之外获得地理定位

时间:2015-10-17 06:59:07

标签: javascript google-maps-api-3 geolocation

Page.ClientScript.RegisterStartupScript(this.GetType(),"CallMyFunction","Validate()",true);

上面的代码可以打印出' a'的正确值。在控制台中,但是当我将console.log(a)放在函数的底部时,就像下面一样,它无法打印正确的值而只是打印出来" undefined",为什么会这样?

function instate(loc)
{
    var a;
    var geocoder = new google.maps.Geocoder;
    var infowindow = new google.maps.InfoWindow
    geocoder.geocode({'location': loc}, function(results, status) {
        if (status === google.maps.GeocoderStatus.OK) {
          if (results[1]) {
            map.setZoom(5);
            var arrAddress = results[0].address_components;
            $.each(arrAddress, function (i, address_component) {
              if (address_component.types[0] == "administrative_area_level_1"){
              a =  address_component.short_name;
              console.log(a);   
              }     
              //return false; // break the loop   
            });        
          } else {
            window.alert('No results found');
          }
        } else {
          window.alert('Geocoder failed due to: ' + status);
        }
    });
}

1 个答案:

答案 0 :(得分:1)

让我澄清一下代码中会发生什么。在instate函数中,您定义一个名为a的变量,然后调用geocode,并传递function作为其第二个参数。在该函数内部,您可以为a指定一个值。但是,在您定义它之后,尚未调用该函数。定义function和调用它之间存在差异。由于function是异步的,因此可以确定console.log function中指定的值不会像您预期的那样表现。