2011-08-14 46 views
2

我有以下代碼:從Google地理編碼器中獲取結果到數組中?

var data = geocoder.geocode({'address': 'new york'}, function (results, status) 
{ 
    if(status == google.maps.GeocoderStatus.OK) 
    { 
     response($.map(results, function(item) 
     { 
      return 
      { 
       value: item.formatted_address 
      } 
     })); 
    } 
}); 

我需要得到的數據輸出到這個樣子:

var data = [ 
    {value: 'some1'}, 
    {value: 'some2'}, 
    {value: 'some3'} 
]; 

我真的沒有什麼線索Im做得到它進入該狀態,我不確定最初的地理編碼器請求返回的是什麼。當涉及到解釋上述功能時,google代碼網站上的信息相當有限。

任何想法我可以做到這一點?謝謝。

+0

要小心,你的返回語句得到自動semicoloned。所以你總是會返回undefined。它基本上意味着'返回; {value:...};' – Joe

回答

2

Geocoder.geocode()不返回任何值,所以你不能這樣做:

var data = geocoder.geocode({'address': 'new york'}, function (results, status) { 

此外,您在上面的調用指定回調function (results, status) {...}由異步調用地理編碼完成地理編碼後。因此,您需要在回調本身中使用結果,例如填充一些文本框等。這裏是一個使用純Javascript的模板,你可以適當地適應你的JS框架:

geocoder.geocode({'address': 'new york'}, 
    function (results, status) {  
     if(status == google.maps.GeocoderStatus.OK) { 
      for (var i = 0; i < results.length; ++i) {   
       alert(i + ": " + results[i].formatted_address); 
      }    
     }   
    } 
);  
+0

很酷,但我仍然對如何形成「數據」陣列有點無知 – Nicekiwi

+0

「data」中的「value」和「some-i」究竟是什麼?但是,儘管您可以擁有任何全局變量'data'並將其填入回調中,但它不會有用,因爲您不知道此變量何時從地址解析器獲取新值。唯一的方法是在回調中處理結果,例如通過定義和調用另一個函數'process(results){...}'。 – Jiri

0

.map返回一個jQuery對象。爲了讓規則排列,採用get

var data = $.map(results, function(item) { 
    return { value: item.formatted_address }; 
    }).get(); 
+0

你介意重新發布我的原始功能修改與你的想法?只是要清楚,我使用的是Mootools 1.3,而不是jQuery。我的一些原始代碼可能已經從jQuery函數中複製過來,我只是不知道有多少。 – Nicekiwi

+0

mooTools可能有不同的API。我不熟悉mooTools,但使用google搜索可能是一個很好的起點:http://mootools.net/docs/more/Types/Hash – Mrchief

+0

散列在mootools 1.3中已棄用 – Nicekiwi

相關問題