Клуб API Карт

Как создать кликабельную метку с текстом/html внутри на api 2.1

Кирилл Иванов
9 апреля 2014, 09:30

Пробовал изменить iconLayout c помощью templateLayoutFactory.

Выполняю код, приведенный ниже, метки появляются но не кликабельны. Что я делаю не так?

 

    var myIconLayout = ymaps.templateLayoutFactory.createClass(

        '<h3 style="width:60px; height: 30px; background-color:white;">$[properties.iconContent]</h3>' +

            '[if properties.description]<i>$[properties.description]</i>[else]$[properties.metaDataProperty.description][endif]', {

        });

 

    var geoObject =  new ymaps.Placemark([object.lat, object.lon], {

                balloonContent: 'Адрес объекта',

                iconContent: 'квартира',

            }, {

                iconLayout: myIconLayout,

                balloonAutoPan: false

            });

map.geoObjects.add(geoObject);

2 комментария
Подписаться на комментарии к посту

Вам надо переопределить метод getShape у макета

var myIconLayout = ymaps.templateLayoutFactory.createClass(

        '

$[properties.iconContent]

' +

            '[if properties.description]>$[properties.description][else]$[properties.metaDataProperty.description][endif]', {

            getShape: function () {

                return new ymaps.shape.Rectangle(new ymaps.geometry.pixel.Rectangle([[0, 0], [10, 10]]));

             }

        });

 

Вариант номер два - указать

geoObject.options.set('iconPane', 'overlaps');

Кирилл Иванов
9 апреля 2014, 12:40

Спасибо большое! Работают оба способа.

Однако, рекомендую пользоваться вторым. В этом случае метка подстроится под размер контента автоматически.