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

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

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

Я быстро залез в код и стал смотреть на то, как это реализовано. В основе всего была библиотека jquery.maphilight. На сайте данной библиотеки имеется не только довольно простые примеры, но и даже большие карты (интерактивная карта США) которые раскрывают простоту и функционал данного решения.

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

P.S.
Если эта короткая статья покажется кому-либо интересной, то в своей второй статье на хабре я планирую подробно расписать процесс быстрого получения координат вершин для верстки подобных интерактивных карт.

Спасибо за внимание.

Комментарии (6)


  1. Alexufo
    28.12.2015 02:17

    C тегами areamap все былобы хорошо, если бы они вели бы себя как дивы. А ведут они себя как недодивы, потому и появился jquery.maphilight как небольшой костыль. Однако, основной проблемой все же является подготовка координат.

    Куда проще, если позволяет отказ от старых бразуеров, является SVG. Вам дизайнер или вы сами рисуете что хотите, а дальше у вас работает и ховер и css и js и поддерживать это куда проще.


  1. marazmus
    28.12.2015 08:04
    +3

    Плюсую также за использование «чистого» SVG, все намного проще. maphighlight не так гибок, к сожалению, и кроме него, я перебрал еще кучу подобных библиотек, все они или рисуют дивы, или рисуют в тот же SVG.


  1. vintage
    28.12.2015 08:21
    +4

    В 21 веке такие вещи элементарно делаются на svg. Вот, например: http://habrahabr.ru/post/127994/


  1. deus
    28.12.2015 14:15

    Мы недавно опубликовали аналогичный проект — github.com/govdesign/map
    Содержит карту в SVG и JS библиотеку для работы с ней


  1. Imbolc
    29.12.2015 09:45

    Сибирский федеральный УД


  1. Serator
    30.12.2015 02:31
    +1

    Статья из прошлого. Как уже выше сказали, сейчас это решается на SVG. imagemap-generator.dariodomi.de — генератор по вашей второй статье. Ищется в том же Google за пол минуты и, уверен, таких генераторов куча, так что нет смысла описывать то, о чем уже написано множество статей.