JavaScript - 从另一个函数

时间:2018-01-29 10:02:32

标签: javascript html

我是StackOverflow的新手,所以如果我犯了错误,请对我宽容。

我有问题。当我尝试从另一个函数访问变量时,它会产生“null”。

function initAutocomplete() {
    var latitude = 0;
    var longitude = 0;
    var geocoder = new google.maps.Geocoder();
    var address = document.getElementById("geocode").value;
    geocoder.geocode({ 'address': address }, 
    function getCoordinates(results, status) {
        //if (status == google.maps.GeocoderStatus.OK) {
             latitude = results[0].geometry.location.lat();
             longitude = results[0].geometry.location.lng();

        } 
    //}
    );
    var uluru = {lat: latitude, 
    lng: longitude};
    var map = new google.maps.Map
    (document.getElementById('map'), 
    {
      center: uluru,
      zoom: 17,
      mapTypeId: 'roadmap'
    });
}

3 个答案:

答案 0 :(得分:1)

uluru的纬度和经度完全填充在地理编码回调函数中,当函数加载时,它不一定能使它们可用,相反,当这些值可用时,您可以使用回调来设置地图中心

function initAutocomplete() {
    var latitude = 0;
    var longitude = 0;
    var uluru = {lat: latitude, lng: longitude };

    var geocoder = new google.maps.Geocoder();
    var address = document.getElementById("geocode").value;

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

            map.setCenter( new google.maps.LatLng( latitude,longitude ) ;
        } 
    });

    var map = new google.maps.Map(document.getElementById('map'), {
        center: uluru,
        zoom: 17,
        mapTypeId: 'roadmap'
    });
}

答案 1 :(得分:0)

访问变量的简单示例:

<script>
var a = 10;
var c;

function aa() {
  document.write("func aa ");
  var b = 20;
  c = b;
  document.write(a + b);
}

function bb() {
  document.write("func bb ");
  document.write(c);
}

aa();
document.write(" ");
bb();    

答案 2 :(得分:0)

来自Google Geocoding Service的文件

  

访问地理编码服务是异步的

这意味着在uluru对象的初始化后调用您的函数。

您应该在函数uluru

中对地图和getCoordinates对象进行初始化