Клуб API Карт

При обработке данных из json не отрабатывает setBounds

atach
10 ноября 2014, 20:25
Если в кратце ....

То получаю данные и добавляю их в коллекцию перебором

var myGeoObjects = new ymaps.GeoObjectCollection();
$.getJSON("jsonItems.php", function(json) { 
     for (i = 0; i < json.markers.length; i++) {
          myGeoObjects.add(new ymaps.Placemark([json.markers[i].lat,json.markers[i].lon]));
     
});

После добавляю коллекцию на карту и выравниваю масштаб по всей коллекции

myMap.geoObjects.add(myGeoObjects);
myMap.setBounds(myGeoObjects.getBounds())

Но setBounds не отрабатывает ...
Если же добавить Placemark в коллекцию просто вручную не в переборе, а просто записать строку: 

myGeoObjects.add(new ymaps.Placemark([55.76, 37.64]));

то всё нормально работает ... Т.е. myMap.setBounds(myGeoObjects.getBounds()), не видит коллекцию которая добавляется перебором.


 Рабочий пример вот тут 


4 комментария

Ошибку свою понял,  стал добавлять коллекцию на карту после загрузки json данных и перебора 

$.getJSON("http://tmpcode.finogeev.com/yamap1/jsonItems.php",function(json) {

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

myGeoObjects.add(new ymaps.Placemark([json.markers[i].lat,json.markers[i].lon]));

}

}).done(function(data) {

myMap.geoObjects.add(myGeoObjects);

myMap.setBounds(myGeoObjects.getBounds());

});

Вопрос теперь в другом, как отследить событие о том что коллекция или объект добавлен на карту?

myMap.geoObjects.add(myGeoObjects);

Координаты меток надо передавать как Number, а не String.

Коллекция добавляется синхронно.

За полказку про тип переменных спасибо ...

 

А можете разьяснить, синхронно с чем или точнее как?

Т.е. нельзя никак отследить что коллекция добавлена на карту, и только потом приступить к какому то другому действию.

// Тут не добавлена

myMap.geoObjects.add(myGeoObjects);

// Тут добавлена