Клуб API Карт

Проблема с перехватыванием событий нестандартных меток

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

Здравствуйте. Подскажите, пожалуйста, из-за чего может быть следующая проблема (ver 2.1.34):

 

 

car = new ymaps.Placemark(coords, {

        }, {

            // Опции.

            iconLayout: ymaps.templateLayoutFactory.createClass(

'<div id="car' + carId + '" class="b-car b-car_a" onClick="alert(1);"></div>'

),

            iconImageHref: 'images/ambulance-car.png',

            iconImageSize: [30, 64],

            iconImageOffset: [-3, -32],

zIndex: 1

        });

map.geoObjects.add(car);

 

 

При таком коде элемент car становится невиден для любых событий (нужно нажатие).

 

 

car.events.add('click', function () {

alert('О, событие!');

});

 

При наведении на оъект на карте курсор мышки даже не меняется и никакое событие при клике не происходит. При этом, данный код в API 2.0 работает нормально. Здесь же, если я заменяю iconLayout: на "default#image", то тоже элемент становится кликательным.


Мне важно уметь делать с элементом следующие вещи: поворот, масштабирование, перенос на новые координаты, клик по объекту. Все, кроме клика я сделал, просто обращаясь к нужному автомобилю через jQuery и меняя его css. Если данные действия можно сделать со стандартной меткой - такой вариант тоже вполне подойдет.


Помогите, пожалуйста, уже 2 дня копаюсь и никаких результатов ((

 

 

 

4 комментария

Полулчилось решить проблему при помощи pane: 'overlaps' (в опциях класса).

Но теперь получил 2ю проблему, как при клике получить сам объект, по которому кликают? или хотя бы его id.

 

car.events.add('click', function (e) {

alert(this.name);

});

 

Правильный вариант - использовать методы макета

var CarIconLayout = ymaps.templateLayoutFactory.createClass(

        '', {

 build: function () {

    CarIconLayout.superclass.build.call(this);


 // сам геообъект

 console.log(this.getData().geoObject)


    jQuery(this.getParentElement()).on('click', '.b-car', function (e) {

        ...

     })

}

}),

car = new ymaps.Placemark(coords, { carId: carId }, {

    // Опции.

    iconLayout: CarIconLayout,

    iconImageHref: 'images/ambulance-car.png',

    iconImageSize: [30, 64],

    iconImageOffset: [-3, -32],

    zIndex: 1

});

 

map.geoObjects.add(car);

Здравствуйте! Можно пожалуйста ссылку на ваш проект?

Здравствуйте. Ссылку на проект дать не могу, т.к. браузер встраивается в программное обеспечение и работотает на стационарных ПК. Пока проект в разработке, но мы в курсе коммерческой лицензии и собираемся оформлять пакет за 300 000.