关于 JavaScript 变量的问题


<!DOCTYPE html>
<html>
    <head>
        <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
        <meta charset="utf-8">
        <title>Geocoding service</title>
        <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
        <script>
            function initialize() {
                geocoder = new google.maps.Geocoder();
                address = "toronto, canada";
                geocoder.geocode({
                    'address': address
                }, function (results, status) {
                    if (status == google.maps.GeocoderStatus.OK) {
                        var lat = results[0].geometry.location.lat();
                        var lng = results[0].geometry.location.lng();
                    } else {
                        var lat = 123;
                        var lng = 456;
                    }
                    document.getElementById('my_place1').value = lat + " - " + lng;
                });
                document.getElementById('my_place').value = lat + " - " + lng;
            }
        </script>
    </head>
    <body onLoad="initialize()">
        <input name="" id="my_place" style="width:300px; margin-left:20px;" type="text">
        <br>
        <input name="" id="my_place1" style="width:300px; margin-left:20px;" type="text">
    </body>
</html>

在上面的代码中,my_place1值有效,但相同的值不适用于my_place。任何人都可以帮助解决这个问题吗?我想在geocoder.geocode之外做一些具有latlng价值观的工作。

>你的document.getElementById('my_place').value = lat + " - " + lng ;latlang之前执行,这是异步的概念。

当你想在 geocoder.geocode( 之外使用它时,那么你将不得不在latlang之后updatdateMyPlace()调用回调函数

更新

 function initialize() {
      geocoder = new google.maps.Geocoder();
      address = "toronto, canada";
      geocoder.geocode({ 'address': address}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
        var lat = results[0].geometry.location.lat();
        var lng = results[0].geometry.location.lng();
        }
      else {
         var lat = 123;
          var lng = 456;
       }
        document.getElementById('my_place1').value = lat + " - " + lng  ; 
        updatdateMyPlace(lat, lng);
     });
     function updatdateMyPlace(lat, lng){
        document.getElementById('my_place').value = lat + " - " + lng ; 
     }
 }

您在本地限定这些值的范围,这意味着您只能从同一块内访问它们。

if (status == google.maps.GeocoderStatus.OK) {
    var lat = results[0].geometry.location.lat();
    var lng = results[0].geometry.location.lng();
    document.getElementById('my_place1').value = lat + " - " + lng;
}  // <--- once you exit this block, the lat/lng no longer exist

相关内容

  • 没有找到相关文章

最新更新