Клуб API Карт

Помогите перебрать Группы и объекты в них

stas-tolokolnikov
24 августа 2010, 12:40

Карта подключается через YMapsML 

YMaps.Events.observe(ml, ml.Events.Load, function (ml) {

    // Создание списка групп
    ml.get(0).forEach(function (item) {
        addMenuItem(item, map, YMaps.jQuery("#mapMenu"));
        item.get(0).forEach(function (item2) {addMenuItem(item2, map, YMaps.jQuery("#mapMenu"));
    });


});

вот без зачеркнутого все работает и менюшка создается.

меню по группам.

а вот с зачеркнутым что-то не так.

и понять что не так - я не могу.

10 комментариев
Подписаться на комментарии к посту
Попробуйте посмотреть в консоль ошибок джаваскрипта.

какого типа объект item
какого типа объект item2 (и откуда он берется?)

О. консоль помогла :)
нужно было вот так

ml.get(0).get(0).forEach(function (item2) {..........
не. не то...
такая конструкция выдает мне для всех групп список из 1-й группы :(
Попробуйте метод filter() - он может рекурсивно обходить подгруппы.

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


YMaps.Events.observe(ml, ml.Events.Load, function (ml) {
         ml.get(0).forEach(function (item) {
                       item.forEach(function (item2) {
       addMenuItem2(item2, map, YMaps.jQuery("#mapMenu"));
});
addMenuItem(item, map, YMaps.jQuery("#mapMenu"));
});
});


теперь уперся в установку карты по границам группы
вставляю 
bounds = item.getBounds(); 
перед вызовом 
addMenuItem(item, map, YMaps.jQuery("#mapMenu"));


сама функция:

function addMenuItem (group, map, menuContainer, bounds) {

YMaps.jQuery("" + group.name + "")

                .bind("click", function () {
var link = YMaps.jQuery(this);









                  map.setBounds(bounds);



                  return false;

 })



 .appendTo(

YMaps.jQuery("d>").appendTo(menuContainer)

)


};






выдает мне ошибку 
Uncaught TypeError: Object [object Object] has no method 'getX'


ужасно коммент запостился.  :-(
пациента или полный код в студию!
пациент тут
 http://tolokolnikov.ru/work_tmp/map.html

все работает кроме этой части
почему-то getBounds дает null ;-(
 
var myCol=new YMaps.GeoObjectCollection(); 
ml.get(0).forEach(function (group) {
  group.forEach(function (item) {
    myCol.add(item);})
YMaps.jQuery('селектор').bind("click", function () {
map.setBounds(myCol.getBounds());
})
});

Группа не рассчитывает видимость объектов автоматически. Для этих целей используйте YMaps.GeoCollectionBounds.
можно пример:?
вот так не работает :( 

ml - соответственно получен из YmapsML 



var myCol=new YMaps.GeoObjectCollection(); 
ml.get(0).forEach(function (group) {
  group.forEach(function (item) {
    myCol.add(item);})
bounds = new YMaps.GeoCollectionBounds(myCol);
YMaps.jQuery('селектор').bind("click", function () {
map.setBounds(bounds);
})
});