Клуб API Карт

Как получить количество объектов в массиве

ovvk-info
28 декабря 2009, 10:02

Здравствуйте.

Есть очень хороший пример "Управление группами объектов с помощью меню
С работающим примером

Вопрос такой. Как добавить в ссылку на группу объектов, количество объектов в группе.
Например: Известные памятники [3]

Следующий код не работает:
var szStr;
szStr = group.title + " [" + group.length + "]";
YMaps.jQuery("<a class=\"title\" href=\"#\">" + szStr + "</a>") 


5 комментариев
Подписаться на комментарии к посту
У группы нет поля length, есть метод length().
Т.е. Вам нужно написать:
szStr = group.title + " [" + group.length() + "]";

Спасибо огромное. Сработало.

Подскажите еще - что нужно изменить в коде, чтоб объекты (или конкретная группа объектов) были по умолчанию отображены на карте?

Можно немного изменить функцию addMenuItem и добавить еще один параметр active, который будет отвечать за первоначальное состояние пункта меню.
function addMenuItem (group, map, menuContainer, active) {

    // Показать/скрыть группу на карте
    var menuItem = YMaps.jQuery("" + group.title + group.length() + "")
        .bind("click", function () {
            var link = YMaps.jQuery(this);

            // Если пункт меню "неактивный", то добавляем группу на карту,
            // иначе - удаляем с карты
            if (link.hasClass("active")) {
                map.removeOverlay(group);
            } else {
                map.addOverlay(group);
            }

            // Меняем "активность" пункта меню
            link.toggleClass("active");

            return false;
        })

        // Добавление нового пункта меню в список
        .appendTo(
            YMaps.jQuery("
  • ").appendTo(menuContainer)
            )


        if (active) {
            menuItem.toggleClass("active");
            map.addOverlay(group);
        }
    };

    Соответственно, необходимо будет учесть новый параметр при создании списка групп:
    // Создание списка групп
    for (var i = 0; i < groups.length; i++) {
        addMenuItem(groups[i], map, YMaps.jQuery("#menu"), (!i) ? 1 : 0);
    }

    Если формировать список групп таким образом, то первая группа будет по умолчанию добавлена на карту.
    Еще вопрос. Если изменить положение ссылок в таблице и сместить ее наверх, то в IE они прячутся за карту (в Opere и FF все нормально). Пример - http://etech.spb.ru/node/158
    На 167ой строчке нужно удалить в конце запятую (после последнего элемента массива). IE на этом спотыкается.

    Однако, ссылки все равно будут прятаться. Это "фича" IE. Лечится так:
    1. Для таблицы задаем id, например, "table".
    2. После создания списка добавляем и удаляем фейковый класс для этой таблицы.

    Должно заработать.

    Пример кода: