0

我必须从地址中找到 latlong,我想将它们全部加载到全局数组变量中,这就是我在做什么

  for(i=0; i<locations.length; i++){

    var paddress = locations[i]['address'] +','+locations[i]['postal_code'] + ', ' +locations[i]['district'] + ',' + locations[i]['country'];
    var  pgeocoder = new google.maps.Geocoder();
    pgeocoder.geocode( { 'address': paddress}, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {

            Storelatlong[i] = results[0].geometry.location;

        }
    });
    }


    alert(Storelatlong.length);

但它总是返回长度 0,如果我在地理编码器函数内发出警报,它给出 latlong 很好,有没有其他方法可以从地理编码器内部将数据分配给全局变量,谢谢

4

1 回答 1

0

我认为问题在于,当您从谷歌获得响应时,我不再被定义,尝试用闭包修复它,像这样

pgeocoder.geocode( { 'address': paddress}, (function(index) {
      return function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            Storelatlong[index] = results[0].geometry.location;
        };
      }(i))
);
于 2012-07-10T06:34:08.620 回答