Клуб API Карт

hint возле указателя мыши при наведении на полигон

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

на сайт загружена яндекс.карта с прорисованными полигонами. при наведении на полигон обрабатывается меню, меняется подсветка и т.д. Вопрос в следующем, как при наведении на полигон сделать. чтобы всплывающая подсказка появлялаь и перемещалась возле указателя мыши? В куске кода ниже вставлено появление hint в центре карты, но не могу разместить подсказку возле указателя мыши.

 

        function addPoly(item, map) {

            map.addOverlay(item);

            item.setStyle(style);

            YMaps.Events.observe(item, item.Events.MouseEnter, function () {

                 item.setStyle(styleActive);

                 var ElemMenu = document.getElementById(item.name);

                 YMaps.jQuery(ElemMenu).toggleClass("active");

                 map.hintoption

                 map.hint.show(map.converter.coordinatesToLocalPixels(map.getCenter()), item.name, {showTimeout: 1000}    //появление хинт по центру карты

            }

            YMaps.Events.observe(item, item.Events.MouseLeave, function () {

                 item.setStyle(style);

                 var ElemMenu = document.getElementById(item.name);

                 YMaps.jQuery(ElemMenu).toggleClass("active");

                 map.hint.hide(0);

            }

            YMaps.Events.observe(item, item.Events.Click, function () {

                 OpenInfo(item.description, item.name);

                 item.closeBaloon(

            }

         };

 

 

Заранее спасибо)))

4 комментария
Sergey Konstantinov
28 января 2016, 06:03

А почему вы не хотите просто использовать опцию hasHint у полигона?

Я бы использовал, но опцию hasHint можно указать у обекта, когда его создаем в коде. вроде так. а у меня объекты подгружаются из моей яндекс.карты 

var ml = new YMaps.YMapsML('http://maps.yandex.ru/export/usermaps/6rumnn04vM1bIi3AqUli4dFTa7nNsrAk/');

зате м пробегаю по оверлеям

 

                ml.get(0).forEach(function (item) {

                           //добавление имени оверлея в меню

                       addMenuItem(item, map, YMaps.jQuery("#menu"));

                           //добавление полигонов на карту и обработка событий

                       addPoly(item,map);

                });

при добавлении полигона далее код

 

        function addPoly(item, map) {

            map.addOverlay(item);

            item.setStyle(style);

            YMaps.Events.observe(item, item.Events.MouseEnter, function () {

                 item.setStyle(styleActive);

                 var ElemMenu = document.getElementById(item.name);

                 YMaps.jQuery(ElemMenu).toggleClass("active");

                 map.hint.show(map.converter.coordinatesToLocalPixels(map.getCenter()), item.name, {showTimeout: 1000});

             });

            YMaps.Events.observe(item, item.Events.MouseLeave, function () {

                 item.setStyle(style);

                 var ElemMenu = document.getElementById(item.name);

                 YMaps.jQuery(ElemMenu).toggleClass("active");

                 map.hint.hide(0);

            });

            YMaps.Events.observe(item, item.Events.Click, function () {

                 OpenInfo(item.description, item.name);

                 item.closeBaloon();

            });

         };

 

 

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

 

Sergey Konstantinov
28 января 2016, 06:03

Так когда пробегаете по оверлеям, включите хинт:

ml.get(0).forEach(function (item) {

    item.setOptions({ hasHint: true });

})

Спасибо огромное, очень помог ваш ответ :) :)