Клуб API Карт

"Скачущие" метки и другие проблемы c API 2.0

Пост в архиве.

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

Пытаюсь перейти на 2.0, все вроде бы идет хорошо, но одно НО - метки, подгруженные через YMapsML скачут вместе с картой, постоянно держась в середине по вертикали. По горизонтали при этом не двигаются.

Статичные метки, прописанные ппрямо в код, ведут себя как положено и стоят на месте.

Грешил на совместимость  jQuery 1.7 и fancybox, но их отключение и смена версии результата не дало. Пожалуйста, посдкажите, в чем может быть дело?

Вопрос 2: код формирования меню в API 2.0 именился:

 // Добавление элемента в список
                function addMenuItem(group, map) {
                // Показать/скрыть группу геообъектов на карте
                    $("<a class=\"title\" href=\"#\">" + group.properties.get('name') + "</a>")
                        .bind("click", function () {
                         var link = $(this);
                            // Если пункт меню "неактивный", то добавляем группу на карту,
                            // иначе - удаляем с карты
                            if (link.hasClass("active")) {
                                map.geoObjects.remove(group);
                            } else {
                                map.geoObjects.add(group);
                            }
                            // Меняем "активность" пункта меню
                            link.toggleClass("active");
                            return false;
                        })
                        // Добавление нового пункта меню в список
                        .appendTo(
                            $("<li></li>").appendTo($("#menu"))
                        );
                }

Подскажите. пожалуйста, что нужно вписать, чтобы метки были активны сразу при загрузке карты?

Вопрос 3: в ИЕ ниже 9-го, карта и меню работают, но метки, подгруженные при помощи YMapsML некликабельны. Как можно побороть этот недуг?

Все указанные проблемы можно глянуть по ссылке

 

6 комментариев
Sergey Konstantinov
28 января 2016, 04:34

По стандарту координаты точек в xml нужно разделять пробелом, а не запятой.

http://api.yandex.ru/maps/doc/ymapsml/1.x/ref/reference/gml-pos.xml

Большое спасибо, проблема с координатами и кликабельностью в ИЕ разрешилась.

Остается вопрос - как сделать все метки видимыми при загрузке? Каким образом кликнуть на все пункты меню разом?

 

в jQuery есть trigger

Добавил триггер

 

function addMenuItem(group, map) {
                // Показать/скрыть группу геообъектов на карте
                    $("" + group.properties.get('name') + "")
                        .bind("click", function () {
                         var link = $(this);
                             // Если пункт меню "неактивный", то добавляем группу на карту,
                            // иначе - удаляем с карты
                            if (link.hasClass("active")) {
                                map.geoObjects.remove(group);
                            } else {
                                map.geoObjects.add(group);
                            }
                            // Меняем "активность" пункта меню
                            link.toggleClass("active");
                            return false;
                        })
                        // Добавление нового пункта меню в список
                        .appendTo(
                            $("
  • ").appendTo($("#menu"))).trigger('click');
                    }

    Метки появляются сразу, но теперь формируется только один пункт меню.

    Обновлено 8 Июня: Разобрался, вопрос снят. Спасибо.

    Ну поделитесь решением то

    Прошу прощения.

    Код вывода меню такой:

     

     function addMenuItem(group, map) { // Показать/скрыть группу геообъектов на карте $(" class=\"title\" href=\"#\">" + group.properties.get('name') + ">") .bind("click", function () { var link = $(this); // Если пункт меню "неактивный", то добавляем группу на карту, // иначе - удаляем с карты if (link.hasClass("active")) { map.geoObjects.remove(group); link.addClass("inactive"); } else { map.geoObjects.add(group); link.removeClass("inactive"); } // Меняем "активность" пункта меню link.toggleClass("active"); return false; }) // Добавление нового пункта меню в список .appendTo( $("i>i>").appendTo($("#menu"))); }

     То есть практчески как в примере. Только после подгрузки ресурсника и непосредственного формирования меню из него надо добавить клик на ссылках:

     

     ymaps.geoXml.load("http://yoursite.ru/xmls/menufromymapsml.xml")
                            .then(function (res) {
                                res.geoObjects.each(function (item) {
                                    addMenuItem(item, myMap);
                                            
                                });
                          $("a.title").click();
                            }