2011-11-08 75 views
1

我試圖讓谷歌地圖address_components和只設法做到以下幾點:如何將值傳遞給Javascript中的另一個函數?

$(function() { 
    $("#spot_address").autocomplete({ 
     //This bit uses the geocoder to fetch address values 
     source: function(request, response) { 
     geocoder.geocode({'address': request.term }, function(results, status) { 
      for (var i = 0; i < results[0].address_components.length; i++) 
      { 
       var addr = results[0].address_components[i]; 
       if (addr.types[0] == 'country') 
        country: addr.long_name; 
      } 
      response($.map(results, function(item) { 
      return { 
       label: item.formatted_address, 
       value: item.formatted_address, 
       latitude: item.geometry.location.lat(), 
       longitude: item.geometry.location.lng() 
      } 
      })); 
     }) 
     }, 

    //This bit is executed upon selection of an address 

    select: function(event, ui) { 
    alert(ui.country); 
    $("#spot_lat").val(ui.item.latitude); 
    $("#spot_lng").val(ui.item.longitude); 
    var location = new google.maps.LatLng(ui.item.latitude, ui.item.longitude); 
    marker.setPosition(location); 
    map.setCenter(location); 
    } 
}); 

});

在這裏,我試圖在從自動完成列表中選擇項目時測試alert(ui.country)。但是,我只是得到undefined。它沒有通過。我做錯了什麼?

謝謝。

+0

如果'不那麼'警報(ui.country)通過ui''會導致一個錯誤,而不是警告不確定。嘗試'console.log(ui)'而不是看看它給了什麼 – Esailija

回答

0

終於拿到它是在朋友的幫助下完成的。

下面是完整的代碼:

$(function() { 
    $("#address").autocomplete({ 
     //This bit uses the geocoder to fetch address values 
     source: function(request, response) { 
     geocoder.geocode({'address': request.term }, function(results, status) { 
     for (var i = 0; i < results[0].address_components.length; i++) 
       { 
        var addr = results[0].address_components[i], 
         country1; 
        if (addr.types[0] == 'country') 
         country1= addr.long_name; 
       } 
      response($.map(results, function(item) { 
      return { 
       label: item.formatted_address, 
       value: item.formatted_address, 
       latitude: item.geometry.location.lat(), 
       longitude: item.geometry.location.lng(), 
       country: country1 
      } 
      })); 
     }) 
     }, 
     //This bit is executed upon selection of an address 
     select: function(event, ui) { 
     alert(ui.item.country); 
     $("#latitude").val(ui.item.latitude); 
     $("#longitude").val(ui.item.longitude); 
     var location = new google.maps.LatLng(ui.item.latitude, ui.item.longitude); 
     marker.setPosition(location); 
     map.setCenter(location); 
     } 
    }); 
    }); 
0

檢查屬性ui.country存在螢火或Chrome檢查腳本

而如果物業全國項目存在,則只是:

response($.map(results, function(item) { 
      return { 
       label: item.formatted_address, 
       value: item.formatted_address, 
       latitude: item.geometry.location.lat(), 
       longitude: item.geometry.location.lng(), 
       country: item.country, // Or other location of this property 
      } 
      })); 
+0

嗯,不起作用... – Victor

+0

@victor但什麼不行?在哪裏嘗試國家:「測試」,然後警報(ui.country);在國家代碼 –

+0

當我通過'國家:「測試」'時,我無法從自動完成中選擇項目。 – Victor

0

添加到

 response($.map(results, function(item) { 
     return { 
      country: item.country 
+0

嗯,不起作用... – Victor

+0

嘗試添加到'return {item:item,'然後'alert(ui.item)'查看所有屬性。 – Tim

+0

我得到'[object Object]' – Victor

相關問題