Клуб API Карт

Перемещение карты под полигоном

AndreyYM
20 апреля 2012, 04:16

Есть большой полигон. Необходимо перемещать карту мышью, даже если она находится под полигоном.

В старой версии API такое можно было, во второй версии нет никакой реакции на перемещение.

Можно ли сейчас вообще перемещать карту под полигоном?

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

Для управления событиями мы ввели модели интерактивности объектов.

Описание можно почитать здесь http://api.yandex.ru/maps/doc/jsapi/2.x/ref/reference/interactivityModel.storage.xml.

 

Конкретно для драга подойдут модели с ключами 'default#layer' и 'default#transparent'.

и как им пользоваться?)

 

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

Выйти на них можно было следующим образом.

В описании геообъекта есть описание опции interactivityModel:

 

"Модель интерактивности. Доступные ключи и их значения перечислены в описании interactivityModel.Storage.

Значение по умолчанию: "default#geoObject""

 

Далее идем по ссылке, которую я приводила выше, и читаем описание моделей интерактивности. 

Вот пример описания:

 

'default#layer' - объект получает все DOM-события. На карту прокидываются события 'wheel' и 'mousedown'. Если на карте включены поведения 'scrollZoom', 'drag' или 'magnifier', они будут работать через объекты с данной моделью интерактивности.


Читаем про поведения и понимаем, что эта модель нам подходит.

Осталось задать правильную опцию полигону и он будет вести себя так как нужно.

myPolygon.options.set('interactivityModel', 'default#layer');

Задача решена.


Теперь немного про события.


Карта будет обрабатывать какие-то поведения, если получит соответствующие события (например скролл-зум будет работать по событию 'wheel'). По умолчанию полигоны "поглощают" большинство дом-событий, и до карты ничего не доходит - поведения не работают.

При модели интерактивности 'default#layer', объект становится "прозрачным" для определенных дом-событий. Они доходят до карты, и та отрабатывает соответствующее поведение.

Спасибо. Но всё-таки документация тоже стала слабосвязанной :) В старой документации по-мимо собственно Справочника, были и общие статьи: Основы и прочее. Для нового API такие статьи тоже были бы полезны...

 

И да. С "default#layer" теперь можно двигать карту, но полигоны перестали отвечать на клики = не выводятся балуны.

Статьи будем писать, их действительно не хватает.

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

Попробуйте использовать модель интерактивности "default#transparent". На моих примерах с геообъектами она работает как надо. И драг срабатывает, и балун открывается.

А почему не открывается балун на "default#layer" будем выяснять...

да, "default#transparent" заработало как надо...

вариант два - переопределить overlayFactory на http://api.yandex.ru/maps/doc/jsapi/2.x/ref/reference/geoObject.overlayFactory.staticGraphics.xml

Получите в принципе не интерактивную картинку.