javascript变量问题 地理编码服务 函数初始化(){ geocoder=新的google.maps.geocoder(); 地址=“加拿大多伦多”; 地理编码({ “地址”:地址 },功能(结果、状态){ if(status==google.maps.GeocoderStatus.OK){ var lat=results[0]。geometry.location.lat(); var lng=results[0]。geometry.location.lng(); }否则{ var-lat=123; var lng=456; } document.getElementById('my_place1')。value=lat+“-”+lng; }); document.getElementById('my_place')。value=lat+“-”+lng; }

javascript变量问题 地理编码服务 函数初始化(){ geocoder=新的google.maps.geocoder(); 地址=“加拿大多伦多”; 地理编码({ “地址”:地址 },功能(结果、状态){ if(status==google.maps.GeocoderStatus.OK){ var lat=results[0]。geometry.location.lat(); var lng=results[0]。geometry.location.lng(); }否则{ var-lat=123; var lng=456; } document.getElementById('my_place1')。value=lat+“-”+lng; }); document.getElementById('my_place')。value=lat+“-”+lng; },javascript,global-variables,google-geocoder,Javascript,Global Variables,Google Geocoder,在上述代码中,my_place1的值起作用,但与my_place相同的值不起作用。有人能帮忙解决这个问题吗?我想使用lat和lng值在geocoder.geocode之外工作。您的文档。getElementById('my_place')。value=lat+“-”+lng 在生成lat和lang之前执行,这是异步的概念 当您想在geocoder.geocode()之外使用它时,您必须在makelat和lang之后调用回调函数updatedatemyplace() 更新 <!DOCTYPE

在上述代码中,my_place1的值起作用,但与my_place相同的值不起作用。有人能帮忙解决这个问题吗?我想使用
lat
lng
值在
geocoder.geocode
之外工作。

您的
文档。getElementById('my_place')。value=lat+“-”+lng
在生成
lat
lang
之前执行,这是异步的概念

当您想在
geocoder.geocode(
)之外使用它时,您必须在make
lat
lang
之后调用回调函数
updatedatemyplace()

更新

<!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>

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

 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;

}//操作是异步的。不仅变量
lat
lng
超出范围。是的。但我希望lat和lng值超出geocoder.geocode()的范围。这就是这里的问题,因为在生成
lat
lng
值后,您将调用回调函数。您的值是正确的。但真正的问题是我想在geocoder.geode()之外处理lat,lng值。我想将此lat,lng值发送到外部geocoder.geocode()
updatedatemyplace()
geocoder.geocode()
函数之外,因此
lat
lang
是。请查看答案。要在块外使用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