2016-10-25 4 views
0

Я пытаюсь сохранить маркеры в массиве, а затем сделаю так, чтобы позже я мог переносить данные api в список. У меня проблемы с этим.Хранение маркеров Google Maps в массиве

Если бы кто-нибудь мог указать мне в правильном направлении, я был бы очень признателен.

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

Это также было бы прекрасное время, чтобы добавить эти маркеры на карту, сразу же после их создания, но прежде, чем поместить их в список. Но вы не спрашивали об этом, так что, возможно, вы уже справлялись с этим в своем коде.

Смежные вопросы