【问题标题】:Google Geocoder: save returning value in variableGoogle Geocoder:将返回值保存在变量中
【发布时间】:2018-02-06 13:48:35
【问题描述】:

我正在使用 google API 和地理编码器,我需要在地理编码后将位置信息(经度和纬度)保存在一些变量中。 在这段代码中,我可以提醒返回值,但我不知道如何将这些值保存在变量中。

  function codeAddress() {
    var address = "Streamwood, IL, USA";  
    var geocoder = new google.maps.Geocoder();

    geocoder.geocode( { 'address': address}, function(results, status) {

      if (status == google.maps.GeocoderStatus.OK) {
        var loc=[]; 
        loc[0]=results[0].geometry.location.lat();
        loc[1]=results[0].geometry.location.lng();
        display(loc); 
      } else {
        alert("Error: " + status);
      }
    });                                      
  }  
  function display(loc){
     alert(loc[0]);     
  } 

【问题讨论】:

    标签: javascript google-maps google-maps-api-3 google-geocoder google-geocoding-api


    【解决方案1】:

    我将假设您希望将地址的纬度和经度返回到此示例中的全局变量。

    首先,您需要在codeAddress 函数之外为loc 设置一个全局变量。这将为您提供稍后需要引用它的命名空间。

    var loc;
    

    codeAddress 函数内部,为了区分结果和您的全局变量,我将loc 变量更改为myLoc 并将其分配为一个新的空数组。

    最后,要在函数之外获取坐标,您需要将全局 loc 定义为等于函数定义的 myLoc 变量。

    看看:

       function codeAddress() {
        var address = "Streamwood, IL, USA";
        var geocoder = new google.maps.Geocoder();
        geocoder.geocode({
          'address': address
        }, function(results, status) {
    
          var myLoc = new Array();
    
          if (status === 'OK') { 
            myLoc[0] = results[0].geometry.location.lat();
            myLoc[1] = results[0].geometry.location.lng();
          } 
          loc = myLoc;
        });
      }
    

    这应该可以解决问题!

    【讨论】:

      【解决方案2】:

      您可以将您的 codeAddress 函数分配给一个变量。如果您的地图请求成功,则返回的值就是您的 loc 数组。然后,您可以对它们做任何您想做的事情。

      function codeAddress() {
          var address = "Streamwood, IL, USA";  
          var geocoder = new google.maps.Geocoder();
          geocoder.geocode( { 'address': address}, function(results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
              var loc=[]; 
              loc[0]=results[0].geometry.location.lat();
              loc[1]=results[0].geometry.location.lng();
              return loc; 
            } else {
              return ("Error: " + status);
            }
          });                                      
        }
      
        var myAddress = codeAddress();
      
        if(myAddress.isArray){
          console.log("latitude", myAddress[0]);
          console.log("longitude", myAddress[1]);
        }
      

      【讨论】:

        猜你喜欢
        • 2020-09-13
        • 2019-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-26
        • 2016-02-04
        • 2021-07-01
        相关资源
        最近更新 更多