Карта кликов, тепловая карта или «heatmaps» - онлайн-сервис для маркетологов, специалистов по юзабилити и SEO-специалистов, позволяющий просматривать и измерять действия пользователей на сайте, а также показатели работы самого сайта. Используя карту кликов, вы можете узнать больше о поведении пользователей на страницах вашего веб-сайта или интернет-магазина. Таким образом вы можете оптимизировать его дизайн для улучшения поведения потребителей.

Тепловые карты для интернет-магазина или веб-сайта - виды и подробная информация

Выделяют 4 вида тепловых карт:

  1. Карта кликов - отражает все элементы и области страниц сайта, на которые пользователи кликают, и количество кликов по каждому элементу за выбранный вами период. Используя карту кликов на сайте, вы можете делать анализ предпочтений ваших пользователей, выявлять элементы, которые, возможно, являются некликабельными, однако пользуются спросом у пользователей, а также определять кнопки, оставшиеся без внимания. То есть те, на которые никто не кликает.
  2. Карта скроллинга - отражает за выбранный период в процентном соотношении размер страницы и количество пользователей, которые просматривали страницу. Проще – карта скроллинга показывает глубину просмотра страницы, то есть то, насколько углубленно пользователи просматривают ваши страницы.
  3. Карта активности мышки - отражает элементы, по которым пользователи приводили курсором.
  4. Видеозапись сессии - запись поведения всех пользователей на сайте с целью просмотра их движений и кликов.

Каждая из видов тепловых карт поможет вам усовершенствовать ваш веб-сайт или интернет-магазин, узнать больше о ваших пользователях, а также увеличить доходы.

Отдельно необходимо сказать о таком инструменте для оценки UX сайта, как видеозапись поведения пользователей. Иногда его считают обязательным компонентом любой карты кликов, а иногда и вовсе путают с последним.

Видеозапись поведения позволяет видеть сайт глазами посетителя, ведь при этом фиксируются передвижения мышки, открытие страниц и т.д.

Несмотря на свою популярность, для проведения юзабилити аудитов этот инструмент не подходит. Дело в том, что сайт с высокими показателями посещения, может собирать в день по несколько тысяч сессий. Каждая из них длиться от нескольких секунд до нескольких часов (особенно если кто-то забыл закрыть вкладку). Проанализировать весь массив данных, опираясь на видео, невозможно.

Тем не менее мы решили включить в свой обзор и такой критерий, как наличие видеозаписей поведения посетителей.

Как карта кликов поможет увеличить прибыль вашего веб-сайта или интернет-магазина?

Благодаря следующей информации, которую предоставляет карта кликов, тепловая карта или карта скроллинга, вы сможете увеличить прибыль.

  1. Низкие конверсии и причины их возникновения. Благодаря карте кликов Вы можете проанализировать действия пользователей и сделать изменения в наполнении сайта или в его дизайне.
  2. Дизайн и “не обнаружены ошибки”. Трудно самостоятельно угадать удобство сайта для клиентов. Только эксперименты и данные тепловой карты дадут вам исчерпывающий ответ.
  3. Информативность и качество контента . Благодаря карте скролла (прокрутки), вы можете посмотреть «глубину» просмотра и то, насколько ваши предложения интересны и актуальны для пользователей.
  4. Определение удачного места для размещения перелинковки , а также актуальных предложений
  5. Определение эффективности использования поп-апов . Многие компании не используют пап-апы только потому, что считают их использование неэффективным, при этом ни разу не протестировав их. Однако с помощью карты кликов вы можете определить эффективность или неэффективность поп-апов.
  6. Призыв к действию и места их размещения . Учитывая то, что при наличии «сильного» призыва к действию, вы, разместив его в удобном или видимом месте на сайте, заставляете пользователя на него реагировать.
  7. Динамические элементы на сайте и их видимость . Анализируйте, как на динамические элементы реагируют пользователи и вообще, насколько они полезны для пользователей.
  8. Последовательность кликов на странице и их анализ . Стоит узнавать эти данные, ведь в этом случае вы будете знать, где и каким образом должна быть размещена ваша информация для лучшего восприятия и последующей покупки.

В данном материале собрана информация о 16 популярных картах кликов. Некоторые из них (те, у которых доступна тестовая регистрация) нам удалось протестировать.

В наш обзор вошли следующие сервисы:

В данный обзор не вошли продукты, для которых карта кликов является лишь дополнительным инструментом (Yandex.Metrika, Vwo, Userreplay и т.д.), а также сервисы, которые давно не обновлялись (Mockingfish, Heat-map.co и т.д.).

Специалисты Lemarbet проводят , в ходе которых, чаще всего, используются 2 основных инструмента:

  1. Карта кликов – статистика взаимодействия пользователей с различными областями и элементами сайта;
  2. Карта скроллинга – статистика глубины просмотра страницы.

Перейдем к знакомству с самыми популярными картами кликов:

1. Plerdy

Plerdy — это удобный и достаточно простой SEO-сервис для просмотра посещаемости сайта и поведения пользователей на нем. В одном продукте находится два инструмента, с помощью которых маркетологи могут улучшать показатели конверсии своих сайтов. Первый инструмент — карта кликов, второй — конструктор умных форм (с его помощью можно создавать динамические окна без знания языков программирования).

Клики начинают собираться сразу же после установки скрипта Plerdy. Для просмотра результатов достаточно на своем сайте открыть боковую панель (комбинация Ctrl-Alt-H). Все данные отображаются онлайн, непосредственно на страницах вашего веб-ресурса.

Удобно также и то, что для перехода между страницами не нужно возвращаться в основной кабинет: при переходе статистика соответствующей страницы открывается самостоятельно:

Вся информация о кликах сегментируется по устройствам и каналам трафика. При необходимости отслеживать кликабельность отдельного элемента, можно также устанавливать собственные теги.

Крайне полезный нюанс: скрипт Plerdy учитывает клики по всем интерактивным элементам сайта (всплывающим окнам, выпадающим меню и т.д.):

Тепловая карта кликов Plerdy, используя собственный алгоритм сбора данных, обеспечивает до 99% точных данных о кликах. Одним из преимуществ использования тепловой карты кликов Plerdy является и то, что все данные отображаются на «живом» сайте и в режиме онлайн. То есть вы можете посмотреть собранные данные на разных страницах сайта и видеть, как пользователи взаимодействуют с вашим сайтом.

Также онлайн SEO-сервис Plerdy включает в себя не только тепловую карту кликов, но и следующие инструменты:


Преимущества тепловой карты кликов Plerdy:

  • достоверность и точность данных до 99%;
  • сразу видны результаты кликов по сайту;
  • возможна сегментация пользователей по каналам трафика;
  • собираются клики по динамическим объектам;
  • есть возможность устанавливать индивидуальные теги для отслеживания кликов;
  • возможность просмотра глубины скролла страницы;
  • вся статистика представлена в виде таблиц.

Недостатки тепловой карты кликов:

  • нет экспорта данных из кабинета;
  • хранение данных: от 3-х до 6-ти месяцев

Локализация: русский, украинский и английский языки

Стоимость тепловой карты кликов Plerdy: 3 пакета: 29$ за просмотр страниц: 10 000/день, 59$ – 25 000/день, 99$/мес. – 50 000/день.
Бесплатная версия: есть, но с некоторыми ограничениями: фиксация 2000 просмотров страниц/день, подключение для 3 страниц, хранение данных – 3 месяца, просмотр результатов - только десктопная версия.

Для удобства просмотра результатов, все клики делятся на 2 группы: по активным элементам (кнопкам, полям, баннерам) и в “пустой” зоне (по текстам, между полями).

С помощью данной карты кликов можно собирать статистику динамических элементов (меню, форм, слайдеров и т.д.).

Абсолютным открытием для нас оказалось то, что после установки скрипта клики собирались только на той странице, на которой был установлен соответствующий код. Для активации каждой следующей страницы, необходимо отдельно включать функцию записи кликов. И хотя это можно сделать из рабочей панели Hetmap.me, все же такой подход слишком затратен по времени. Если ваш сайт – лендинг или визитка, в этом нет, вроде бы, особой проблемы. Но вот если у вас магазин с сотнями или тысячами страниц, установка скрипта точно будет крайне сложной.

Преимущества тепловой карты кликов веб-сайта Hetmap.me:

  • клики показываются на странице в точности, где они были сделаны пользователем;
  • работает сбор кликов по динамическим объектам;
  • есть возможность экспортировать данные в формате таблицы (CSV);

Недостатки тепловой карты кликов веб-сайта Hetmap.me:

  • сбор данных нужно активировать отдельно на каждой странице;
  • нет возможности сравнения данных с разных страниц (отсутствует кабинет со всей аналитикой кликов. Сравнить кликабельность элементов можно лишь в рамках одной страницы);
  • остановив сбор кликов на странице, вся собранная статистика удаляется;
  • нет сегментации по типу трафика для определения кликов в адаптивной версии сайта;
  • не отображаются данные по элементам, которые есть только в адаптивной версии сайта (например, клики по “бургеру”)

Хранение данных: от 6 месяцев до 2-х лет

Локализация тепловой карты кликов веб-сайта Hetmap.me: английский язык

Стоимость тепловой карты кликов веб-сайта Hetmap.me: зависит от условий выбранного пакета. До 100 миллионов просмотров страниц – 100$/мес. До 1 млрд просмотров страниц - 200 $ / мес

Бесплатная версия тепловой карты кликов веб-сайта Hetmap.me: есть

10. Mouseflow

SEO-сервис, основанный датским предпринимателем.

К основным возможности карты кликов Mouseflow можно отнести тепловую карту кликов (с сегментацией посетителей по языку, операционной системе, размеру экрана, местонахождении и т.д.), карту скроллингов, карту передвижений курсора, карту зон внимания, аналитику форм на страницах, видеозапись поведения посетителей на сайте, настройку аналитики воронки продаж.

В тепловой карте кликов Mouseflow также можно подключить чат для общения с посетителями вашего веб-ресурса.

Основной акцент в инструменте сделан на запись видео. Карта кликов является лишь дополнением, с помощью которого можно разобраться на что кликал каждый из посетителей.

Одним из самых больших преимуществ этого инструмента является то, что он имеет функцию аналитики форм, которая позволяет видеть и понимать, почему посетители сайта отказываются от своих форм.

Особенности Hotjar и Mouseflow очень похожи: Heatmaps, формы, последовательности и повторное воспроизведение сеансов. Также вы можете интегрировать Mouseflow с платформами, такими как Joomla, Shopify, WordPress, Google Analytics, Hubspot и многое другое.

Несмотря на широкие возможности данного мультитула, он не фиксирует клики по динамическим объектам сайта. Также, при просмотре отчетов карты кликов с мобильных устройств, невозможно открыть меню, в котором собирались данные:

Благодаря исследованию мы выяснили, что:

  1. Сложные мультитулы подойдут для масштабных проектов (интернет-магазинов, информационных порталов и т.д.), профессиональные карты кликов – для среднего и мелкого бизнеса;
  2. Выбирая карту кликов, стоит сравнивать не только преимущества, но и недостатки. Хотя последние, вполне возможно, будут исправлены в ближайшее время (по крайней мере так об этому пишут разработчики), вам прийдется работать с тем, что есть. Поэтому, прежде чем останавливаться на одной из карты кликов, мы все же рекомендуем попробовать поработать хотя бы с теми, которые вам подойдут по цене, языку использования или возможностями дополнительных инструментов. Это поможет принять правильное решение, сравнив несколько инструментов между собой.

Карта кликов – важный инструмент для обеспечения роста конверсии, поэтому к ее выбору стоит отнестись ответственно.

Приветствую всех, ищущих знаний! Сегодня в фокусе внимания будут такие инструменты интернет-аналитики от Яндекса.Метрики, как тепловые карты и вебвизор.

Все, кто связан с интернет-маркетингом, пользуются инструментами интернет-аналитики.

Основные аналитические системы – это (ЯМ) и (GA). Можно пользоваться только GA, в которой есть возможность загрузки данных из Яндекс.Директ, но вот чего нет в GA, так это Вебвизора, а штука это весьма нужная и занимательная. Но о нем немного позже.

Что такое тепловые карты

«Тепловые карты» — так повелось называть все карты кликов Яндекс.Метрики , но на самом деле в ЯМ есть вкладка «Карты», а в ней: Карта кликов, Карта ссылок, Карта скроллинга и Аналитика форм.

Непосредственно в «Карте кликов» есть несколько режимов отображения карты:

  • «Тепловая карта» - теплые цвета соответствуют частым кликам, холодные - редким.
  • «Монохромная карта» - плотность цвета соответствует частоте кликов в данной точке.
  • «Клики по ссылкам и кнопкам» - на карте не отображаются клики по элементам, не являющимся ссылками или кнопками.
  • «Карта прозрачности» - карта кликов отображается как «туманная маска»: наиболее кликабельные элементы более четко проступают сквозь «туман».
  • «Карта элементов» - на карте отображаются все элементы страницы сайта.

Рис. 2. Карты Яндекс.Метрики.

Если при обращении к картам и вебвизору у вас появляется такой экран,

необходимо изменить настройки кода счетчика для Вебвизора здесь:

Рис. 4. Настройки кода счетчика Яндекс.Метрики.

и перезаписать измененный код на все страницы сайта.

Посмотрим тепловую карту кликов в Яндексе за месяц . Кнопка справа вверху позволяет убирать или показывать панель настроек.

Рис. 5. Тепловая карта кликов.

На карте видно, что наибольшее количество кликов на полях формы , что нам и нужно. НО, стрелки показывают, что также люди кликают на активные в визуальном смысле элементы страницы – изображение календаря вверху, флэшки с надписью «до 100 слов» и стилизованную стрелку, указывающую на форму.

Эти элементы на самом деле оттягивают внимание от формы , и есть смысл с этими декоративными элементами и без них, посмотреть, в каком случае конверсия заполнения формы будет больше. Смею предположить, что если их убрать или сделать менее заметными – .

Отчет по параметру кликов «Регистрация»

В настройках мы можем сегментироваться по разным показателям и сохранять сконструированные отчеты. В данном случае посмотрим, как вели себя те посетители, которые оставили e-mail в форме на landing page.

Рис. 6. Тепловая карта кликов тех, кто заполнил форму.

Лишних кликов практически нет. Это говорит о том, что успешно регистрацию прошла более заинтересованная, внимательная и целеустремленная часть посетителей. Остальным, судя по всему, надо помогать – убрать лишние элементы.

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

Карта ссылок

Карта ссылок — это инструмент для измерения статистики переходов по ссылкам на вашем сайте или лендинге. Ссылки в карте подсвечиваются разными цветами в зависимости от их популярности.

  • количество переходов по ссылке;
  • доля переходов относительно других ссылок на странице.

Рис. 7. Карта ссылок.

Аналитика форм

Показывает воронку взаимодействия с формой : пришел – увидел – заполнил. Тоже нужная вещь.

Рис. 7. Аналитика форм.

В этом примере высокая конверсия формы – 19,57%.

От чего зависит конверсия формы – это тема отдельной статьи, но в двух словах – форма должна быть заметной, понятной, простой. Количество полей для заполнения сильно влияет на конверсию. В данном случае —

всего одно поле. Было бы неплохо добавить «текст-призрак», показывающий, что именно нужно вводить, так как некоторые люди пытаются ввести имя или номер телефона вместо e-mail или наоборот. Особый интерес вызывают 75 посетителей, которые взаимодействовали с формой, но не отправили данные.

В следующем примере есть текст-призрак, 3 поля, конверсия — 2,81%. Сопоставлять между собой конверсии форм различных сайтов не корректно, так как используются совершенно разные предложения, аудитория, оформление, расположение и т.д. Я привожу эту картинку для примера, как по-разному работают формы.

Пользуясь инструментом «Аналитика форм», вы можете тестировать разные варианты форм, добиваясь высокой конверсии.

Рис. 8. Аналитика форм.

Примечание (относится ко всем картам ЯМ):

  • Карта отображается только на тех страницах сайта,

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

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

Клики на карте подсвечиваются разными цветами в зависимости от их частоты. На карте указано общее количество кликов на странице (группе страниц) и доля кликов, попавших в текущую видимую вам область.

Вы можете использовать несколько режимов отображения карты:

    «Тепловая карта» - теплые цвета соответствуют частым кликам, холодные - редким.

  • «Монохромная карта» - плотность цвета соответствует частоте кликов в данной точке.
  • «Клики по ссылкам и кнопкам» - на карте не отображаются клики по элементам, не являющимся ссылками или кнопками.
  • «Карта прозрачности» - карта кликов отображается как «туманная маска» : наиболее кликабельные элементы более четко проступают сквозь «туман» .

  • «Карта элементов» - на карте отображаются все элементы страницы сайта.

Статистика по группе страниц

Для просмотра статистики по группе страниц можно использовать дополнительные символы в поле для ввода URL.

Символ Описание Пример
*
~ регулярному выражению
Символы, используемые при отображении статистики
Символ Описание Пример
* Соответствует любому количеству любых символов

Отобразить данные по всем страницам, URL которых начинается с https://example.com/goods/, включая указанную страницу: https://example.com/goods/* .

Если ввести в поле адрес без символов, Метрика предложит вам в выпадающей подсказке строку с символом *

~ Условие является регулярным выражением Отобразить данные по страницам, URL которых удовлетворяет регулярному выражению . Например, ~http://example.com/.*

Рассмотрим пример. Необходимо получить статистику по страницам, входящим в каталог https://example.com/goods/. Чтобы данные отобразились на карте, введем в поле адрес https://example.com/goods/* (после ввода этот же адрес отобразится в выпадающей подсказке). Данные загрузятся автоматически.

Карта будет отображена на наиболее популярной странице сайта, URL которой соответствует указанному условию. Числовые показатели (количество просмотров, кликов, доля видимых кликов) будут являться объединенными для всех страниц, соответствующих условию.

Показ данных в iframe

Если ваш сайт защищен от показа в iframe (то есть в настройках сервера используется заголовок X-Frame-Options), то собранные данные будут недоступны для просмотра. Чтобы просмотреть данные о посещении сайта, необходимо добавить в настройки сервера исключение для домена webvisor.com и его поддоменов, а также для домена вашего сайта с помощью регулярного выражения

^https?:\\/\\/([^\\/]+\\.)?(yourdomain\\.com|webvisor\\.com)\\/

Если вы используете nginx, добавьте следующие исключения в конфигурацию:

Location / {\n set $frame_options "";\n if ($http_referer !~ "^https?:\\/\\/([^\\/]+\\.)?(yourdomain\\.com|webvisor\\.com)\\/"){\n set $frame_options "SAMEORIGIN";\n }\n add_header X-Frame-Options $frame_options;\n ...\n }

где yourdomain\\.com - имя домена вашего сайта. Используйте доменную зону вашего сайта (может отличаться от.com).

Ограничение размера страниц

Для отображения данных на карте необходимо соблюдать некоторое ограничение размера страниц сайта. Ниже указаны значения для отображения карты в разных браузерах:

Браузер Максимальная высота/ширина страницы (в пикселах) Максимальное количество пикселей
Mozilla Firefox 32 767 472 907 776 (22 528 x 20 992)
Chrome 32 767 268 435 456 (16 384 x 16 384)
Internet Explorer 8 192 67 108 864 (8 192 x 8 192)

Яндекс.Метрика - незаменимый сервис веб-аналитики. С её помощью вы узнаете обо всём, что происходит на сайте - откуда и по каким поисковым фразам пользователи приходят на ресурс, в каких разделах ищут информацию и по каким ссылкам чаще переходят. Опираясь на такие данные можно определить эффективные каналы продвижения сайта, услуги и товары, которые пользуются большим спросом у потенциальных покупателей, элементы, снижающие конверсию.

Улучшить юзабилити сайта и досконально проанализировать поведение пользователей помогут «Карты» Яндекс.Метрики. Этот инструмент формирует четыре вида отчётов : статистику по кликам, скроллингу страниц, переходам по ссылкам и взаимодействию посетителей с формами. Для получения расширенной статистики необходимо указать в счётчике Яндекс.Метрики параметр « , карта скроллинга, аналитика форм». Сервис начнёт собирать данные в течение получаса после установки счётчика.

Карты скроллинга (тепловые карты)

Карты скроллинга показывают распределение внимания пользователей на разных областях страниц ресурса. С их помощью легко определить оптимальную длину страниц, правильно разместив на них важные элементы. Чтобы посмотреть карту скроллинга, нужно в меню выбрать пункт «Карты» и кликнуть по разделу «Карта скроллинга».

В открывшемся окне будет отображена статистика прокрутки главной страницы сайта. Области на карте будут подсвечены разными цветами в соответствии со временем просмотра. Зоны страницы, на которых посетители проводят больше времени, выделены красным цветом, а быстро прокручиваемые области - зелёным или синим.

Перемещая курсор по карте, вы увидите расширенную статистику - количество просмотров области и их продолжительность.

Для карт скроллинга тоже можно устанавливать разные режимы отображения, ограничивать временные промежутки для анализа, сравнивать сегменты с заданными условиями. Расширенные настройки статистики вызываются кликом по иконке со стрелкой в правом верхнем углу страницы.

Обратите внимание! Статистика карт скроллинга хранится в течение 15 дней. Если на странице не установлен счётчик Яндекс.Метрики с заданными атрибутами, статистика собираться не будет.

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

Карты ссылок

На картах ссылок отображается статистика переходов по ссылкам. Каждый кликабельный элемент на страницах сайта будет подсвечиваться разными цветами - от синего до красного - в соответствии с его популярностью. Данные отчёта помогут лучше понять потребности пользователей - какие услуги и товары их больше интересуют, в каких разделах они пытаются найти ответы на свои вопросы.

Чтобы посмотреть карту ссылок, следует в меню счётчика кликнуть по пунктам «Карты» - «Карта ссылок».

После этого откроется окно с картой ссылок главной страницы сайта. Каждый кликабельный элемент будет подсвечен разными цветами:

Кликнув по интересующей области, вы получите расширенную статистику - число переходов за выбранный период, долю переходов относительно других ссылок на странице.

В настройках карты ссылок можно задать уточняющие параметры отображения статистики - выбрать временной отрезок, сравнить сегменты.

Обратите внимание! Инструмент собирает данные со страниц, на которых . В отчёте не учитываются редиректы - как внутренние, так и ведущие на другие сайты. Для сбора таких сведений необходимо прописать в коде счётчика параметр trackLinks. «Карта ссылок» при формировании отчёта исключает элементы «www», части ссылок после #, поэтому результаты могут отличаться.

С помощью карты ссылок вы сможете лучше узнать свою целевую аудиторию. Благодаря статистике вы поймёте, в какие разделы сайта переходят пользователи со страницы, как меняются их потребности в соответствии с сезонностью. Данные такого отчёта пригодятся во время работ над .

Увеличение конверсии с помощью «Карт» Яндекс.Метрики

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

Для увеличения конверсии следует использовать ещё один инструмент сервиса - «Аналитику форм». Он отображает статистику по количеству посетителей страницы, проценту заполнения и отправки формы. Если данные неутешительные, стоит пересмотреть структуру элемента и его положение на странице. Вполне возможно, что форма заявки расположена слишком низко - например, на втором или третьем экране, - куда посетители попросту не доходят. После внесения изменений вы сможете подтвердить или опровергнуть гипотезу плохой конверсии сайта.

  • Визуализация данных ,
  • Яндекс API

  • Иногда бывает полезным нанесение каких-то количественных показателей на географическую карту, как в случае отображения зон покрытия мобильной связи/интернета у МТС:


    Именно такие кейсы и призван решать модуль тепловых карт, который мы создали. Перед тем как я перейду к описанию самого процесса создания модуля, я хотел бы сказать еще пару слов о том, что из себя представляет наша модульная система, и как вы можете ей воспользоваться.

    Модульная система

    В версии 2.1 мы открыли доступ пользователям к нашей модульной системе , которая написана на основе YModules , разработанной нашим коллегой . Эта модульная система имеет много разных приятных фич, таких как асинхронный resolve зависимостей, переопределение модулей, etc. Она была уже достаточно подробно , так что если интересно, можете почитать.

    Открытие модульной системы принесло нам приятный бонус - возможность для внешних разработчиков создавать собственные модули. Вроде бы и ничего архиважного, но благодаря этому наши пользователи теперь могут:

    • самостоятельно писать новую функциональность для API Яндекс.Карт и делиться им в удобном виде с другими разработчиками;
    • использовать нашу модульную систему как основную, если приложение целиком и полностью завязано на картах.
    В качестве примера первого мы и создали тепловые карты.

    Поскольку написать свои тепловые карты не было самоцелью данной затеи (главной задачей было сделать готовое решения для API Яндекс.Карт), перед тем как начать писать код и думать над алгоритмом работы, естественно, я полез на github искать какие-то готовые решения. Вполне ожидаемо было то, что разных реализаций тепловых карт было там чуть больше, чем достаточно (почти две с половиной сотни).

    Немного изучив исходники разных проектов, я остановил свое внимание на библиотеке simpleheat авторства . У нее было два ключевых преимущества:

    • код всего проекта занимал около сотни строчек;
    • тепловая карта хорошо держала 10к точек без напряга при отрисовках (при большем количестве данных тестировать уже как-то бессмысленно, поскольку отдавать такие объемы данных только для отрисовки картинки на клиент крайне неразумно).
    В конечном итоге мне, конечно, пришлось переписать значительную ее часть, но все равно, мне кажется, что это был лучший выбор. Все остальные решения были куда более громоздкими, но особых плюшек не предоставляли.

    Алгоритм отрисовки тепловых карт

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

    API Яндекс.Карт предоставляет возможность для отображения собственной подложки для карты, реализуется это с помощью специального класса Layer . На вход ему необходимо передать функцию, которая по номеру тайла и уровню масштабирования вернет url для загрузки тайла. Кто еще не знаком с тайлами и тайловой графикой можете немного почитать о них в википедии и у нас в документации .

    Написание функции генератора url"ов для получения тайлов - это фактически и есть вся задача создания тепловой карты для нашего API.

    Когда мы определились с тем, что от нас нужно, мы начали думать над тем, как это сделать. Есть два принципиально различных метода для задания тепловой карты:

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

    Для удобства работы пользователей мы решили, что будем поддерживать все самые популярные форматы входных данных, которые используются в API (Number, IGeoObject, IGeoObject, ICollection, ICollection, GeoQueryResult, JSON), из-за этого нам пришлось наложить не сильно приятное ограничение на программный интерфейс теплокарт. Теплокарте можно задавать только набор данных и нельзя удалять или добавлять точки из этого набора. Таким образом, для работы с данными мы предоставляем всего лишь два метода: getData() и setData().

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

    После того, как данные были предподготовлены можно начать их отрисовывать. Как отрисовывать вопроса, вроде, не стоит (Canvas - наше все, тем более, у него есть замечательная функциональность getDataURL, особенно необходимый в нашем случае, поскольку именно url тайла мы должны предоставить API).

    Для отрисовки каждой отдельной точки будем использовать кисть (рисунок слева), которая представляет из себя черно-белый градиент и рисуется на canvas"е весьма просто:

    Var brush = document.createElement("canvas"), context = brush.getContext("2d"), radius = 20, gradient = context.createRadialGradient(radius, radius, 0, radius, radius, radius); gradient.addColorStop(0, "rgba(0,0,0,1)"); gradient.addColorStop(1, "rgba(0,0,0,0)"); context.fillStyle = gradient; context.fillRect(0, 0, 2 * radius, 2 * radius);
    Вес точки будет определять, с какой прозрачностью кисть будет «рисовать» точку на тайле. После того, как мы отрисуем все точки тайла, у нас получится такой себе негатив нашего тайла тепловой карты.

    var canvas = document.createElement("canvas"), context = canvas.getContext("2d"), maxOfWeights = 1, radius = 20; context.clearRect(0, 0, 256, 256); for (var i = 0, length = points.length; i < length; i++) { context.globalAlpha = Math.min(points[i].weight / maxOfWeights, 1); context.drawImage(brush, points[i].coords - radius, points[i].coords - radius); }
    После чего тайл будет раскрашен установлением цвета каждому пикселю из градиента (options.gradient) в соответствии со значением его прозрачности. Прозрачность же каждого пикселя тайла будет равна общей прозрачности тепловой карты (options.opacity).

    // Создаем градиент. var canvas = document.createElement("canvas"), context = canvas.getContext("2d"), gradient = context.createLinearGradient(0, 0, 0, 256), gradientOption = { 0.1: "rgba(128, 255, 0, 0.7)", 0.2: "rgba(255, 255, 0, 0.8)", 0.7: "rgba(234, 72, 58, 0.9)", 1.0: "rgba(162, 36, 25, 1)" }; canvas.width = 1; canvas.height = 256; for (var i in gradientOption) { if (gradientOption.hasOwnProperty(i)) { gradient.addColorStop(i, gradientOption[i]); } } context.fillStyle = gradient; context.fillRect(0, 0, 1, 256); // Раскрашиваем пиксели тайла. var gradientData = context.getImageData(0, 0, 1, 256).data; var opacity = 0.5 for (var i = 3, length = pixels.length, j; i < length; i += 4) { if (pixels[i]) { j = 4 * pixels[i]; pixels = gradientData[j]; pixels = gradientData; pixels = gradientData; pixels[i] = opacity * (gradientData || 255); } }
    Вроде как и все, но нет. Всегда найдутся какие-то исключительные ситуации, которые придется обработать дополнительно. И в нашем случае возможность задания неограниченного сверху веса точки может привести к тому, что одна точка «погасит» все остальные. Так, например, если добавить на карту несколько сотен точек с весом один и одну точку с весом тысяча, то видна будет только последняя (рисунок слева).