Клуб API Карт

Как обойти z-index общего блока карты и "увидеть" событие на лейауте?

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

В прошлом топике моё крайнее сообщение замечено не было, решил здесь надоесть. :)

 

Процитирую комментарий из прошлого топика, он о том, как повесить событие на лейаут:

 

Пытался, как вот здесь - https://tech.yandex.ru/maps/doc/jsapi/2.0/ref/reference/templateLayoutFactory-docpage/

 

Но мои клики не видны под z-index:3000 общей карты. Если вручную через браузерный "Elements" меняю z-index  у блока "ymaps-2-1-23-point-overlay" на 3001 или выше, то события срабатывают.

 

Честно говоря я в недоумении, как на главной Яндекс.Карт под z-index:3000 общей карты обрабатываются события на метках созданных лейаутом? )

4 комментария
Sergey Konstantinov
27 января 2016, 22:49
Обрабатывать события на метках мы строго не рекомендуем. Они унесены под слой в том числе для того, чтобы иметь возможность рендерить их на canvas-е.

Для того, чтобы перенести метку выше слоя событий, укажите опцию pane: 'overlaps'
https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/map.pane.Manager-docpage/
Удалённый пользователь
27 января 2016, 22:49

Большущее спасибо! Но я всё-таки не понимаю, как реализовано на главной странице Яндекс.Мапс. :) Там ведь не используется опция "pane" для позиционирования меток выше слоя карты? Ибо z-index у пейна с метками ниже, нежели у пейна с картой. А в моём случае z-index у слоя с метками поднимается до 3600.

 

Не подскажите, можно ли как-то принудительно заставить Яндекс Карту отрендериться в canvas-е, чтобы посмотреть, как она будет выглядеть в этом варианте? Может есть какой-то параметр для этого?

Sergey Konstantinov
27 января 2016, 22:49
На maps.yandex.ru метки на себе клик и не слушают. Точнее, слушают через встроенную систему событий API.
Удалённый пользователь
27 января 2016, 22:49

Вы знаете, у меня такая проблема вот на этой карте - http://obman.kz/index.php?id=4

 

Если на карте 1 или 2 объекта в видимой области, то вроде норм срабатывает вот этот код (всмысле отклик на событие "click"):

iconLayout: ymaps.templateLayoutFactory.createClass('<div class="{{properties.imageClass}}__icon">[if properties.iconContent]>$[properties.iconContent][else]$[properties.hintContent][endif]</div>'

,{

build: function () {

this.constructor.superclass.build.call(this);

var prop_modx_id = this._te.properties.get('modx_id');

$('#marker_' + prop_modx_id).bind('click', this.onNameHover);

},

clear: function () {

$('.search-map-result-view').unbind('click', this.onNameHover);

this.constructor.superclass.clear.call(this);

},

onNameHover: function () {

alert('sdsd');

}

})


А если в видимой области много объектов, то на одном или двух из них только срабатывает, остальные на это событие не отвечают. В чём может быть дело, подскажите пожалуйста?

 

P.S.: Там на карте много объектов, если уменьшить зум.