Анимация Фильтрации Маркеров В Api Яндекс Карт

Последняя версия API Яндекс Карт подойдет всем.

Но нет предела совершенству.

Я хотел, чтобы фильтрация объектов на карте происходила через затухание.

Давайте посмотрим, возможно ли это.



Анимация фильтрации маркеров в API Яндекс Карт

Цель состоит в том, чтобы при фильтрации одного или нескольких объектов на карте скрытие остальных происходило с эффектом.

Например, с повышением прозрачности.

Начнем копать.

Доступа к DOM-элементам маркеров, как и к другим геообъектам, в API нет. Что, в целом, правильно.

В зависимости от браузера и способа отображения геообъектов это может быть как несколько вложенных DOM-элементов, так и картинка, нарисованная на холсте.

Давайте копнем глубже.

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

Каждый геообъект имеет слой (панель), на котором он отображается.

Давайте посмотрим, какие слои бывают:

'ground': pane.MovablePane (zIndex: 100) — самая нижняя панель, предназначенная для размещения фона карты; 'areas': pane.MovablePane (zIndex: 200) - панель площадных объектов, таких как полигоны; 'shadows': pane.MovablePane (zIndex: 300) — панель теней объектов карты, расположенных выше; 'places': pane.MovablePane (zIndex: 400) — панель точечных объектов, таких как метки; 'events': pane.EventsPane (zIndex: 500) - панель, предназначенная для прослушивания событий карты; 'overlaps': pane.MovablePane (zIndex: 600) - панель для объектов, не требующих использования активных областей для реализации их интерактивности; 'balloon': pane.MovablePane (zIndex: 700) — всплывающая панель; 'outerBalloon': pane.MovablePane (zIndex: 800) — внешняя краска балуна; 'controls': pane.StaticPane (zIndex: 900) — панель элементов управления картой; 'авторские права': pane.StaticPane (zIndex: 1000) – панель авторских прав; 'hint': pane.StaticPane (zIndex: 1100) — подсказка-подсказка; 'outerHint': pane.StaticPane (zIndex: 1200) — внешняя подсказка.

Теперь нас интересует слой места Также имеется слой теней и областей.

Итак, если у нас есть объекты с тенями или полигонами, с ними тоже придется работать.

Но сейчас нас интересует сам принцип.

Каждый слой имеет свойство getElement(), которое дает нам доступ к элементу DOM. Давайте добавим еще один слой на карту.

  
  
  
  
   

var selectedPane = new ymaps.pane.MovablePane(myMap, { zIndex: 420}), myMap.panes.append('selected', selectedPane);

Теперь добавим стили

.

hiding ymaps { transition: opacity 1s; } .

hidden ymaps { opacity: 0; }

Теперь мы можем присвоить нашему основному слою, на котором отображаются метки, класс CSS.

var placesPane = myMap.panes.get('places').

getElement(); $(placesPane).

addClass('hiding');

Большой! Теперь, если мы дадим нашему основному слою класс CSS прячется И скрытый — получаем эффект затухания в 1 секунду! Остается только следить за тем, чтобы выбранные (отфильтрованные) маркеры не исчезли вместе с остальными.

И для этого у нас есть новый слой выбранная панель ! Переместите наши метки на выбранную панель.



myPlaceMark.options.set('pane', 'selected');

И установите слой с оставшимися метками в скрытый класс CSS.

var placesPane = myMap.panes.get('places').

getElement(); $(placesPane).

addClass('hidden');

Ах, да! Все красиво исчезает. В скрипка теги фильтруются по клику на тег и возвращаются обратно через секунду.

То же самое можно сделать с коллекциями, фильтрами и т. д. Могут быть добавлены другие эффекты.

Например, вы можете задать элементы Transform(translate(@x, @y)) со случайными координатами вне области просмотра — тогда метки будут «разбегаться» при фильтрации.

Простор для фантазии здесь огромен.

Надеюсь, это было полезно.

Теги: #API yandex карт #API Карт #API Яндекса

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.