2016-10-25 101 views
0

我正試圖將標記存儲在數組中,然後將其放入數組中,以便稍後將地點API數據推送到列表中。我很難弄清楚這一點。將Google地圖標記存儲在數組中

如果任何人都可以指出我正確的方向,我會非常感激。

 function callback(results, status) { 
     if (status === google.maps.places.PlacesServiceStatus.OK) { 
      for (var i = 0; i < results.length; i++) { 
      createMarker(results[i]); 
      allResults = [results[i]]; 
      } 
     } 
     } 


    self.allResults = ko.observableArray([]); 
    self.listPlaces = function() { 
    for (var i = 0; i < results.length; i++) { 
     allResults.push([results[i]]); 
    } 
    }; 

allResults是被定義爲var allResults = [];

回答

0

看起來你已經得到了標記創建和列表創建分裂出一個全局數組,但它會更容易,如果你有他們一起工作,我想。在您的for循環中,您並未向列表中添加新項目,而是在每個循環中覆蓋列表。您沒有包含您的整個代碼,但我也想知道您的listPlaces功能是否可以訪問您的results列表。你也以我不太熟悉的方式創建你的標記。不管怎麼樣,我會建議重組。您應該首先定義您的可觀察數組,然後將標記添加到它。

// Other code up here 
self.allResults = ko.observableArray([]); 
// and other code. 
for (var i = 0; i < results.length; i++) { 
    var marker = new google.maps.Marker(results[i]); 
    self.allResults.push(marker); 
} 

這也是將這些標記添加到地圖的最佳時機,在創建它們之後,但在將它們放入列表之前。但是你並沒有問這個問題,所以你可能已經在你的代碼的其他地方處理過了。