Google Geocoder:保存变量中的返回值

时间:2018-02-06 13:48:35

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

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

  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]);     
  } 

2 个答案:

答案 0 :(得分:0)

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

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

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;
    });
  }

这应该可以做到!

答案 1 :(得分:0)

您可以将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]);
  }