В рамках данной задачи необходимо разработать виджет, который позволит пользователю выбирать на карте Google Maps полигональные области (например, для поиска по гео-локации). Поведение виджета должно соответствовать следующим требованиям:
- Виджет должен открываться во всплывающем окна по нажатию на ссылку.
- Виджет должен быть оформлен как плагин JQuery.
- Для работы с картами необходимо использовать API Google Maps.
- При открытии виджет должен автоматически определять текущее положение пользователя с помощью Geo API HTML5 и центрировать карту на полученных координатах.
- Пользователю должны быть доступны следующие инструменты:
a. добавить полигон;
b. удалить полигон;
c. удалить все;
d. экспорт;
e. импорт.
- При нажатии на кнопку «Добавить полигон» пользователь должен иметь возможность нарисовать полигон на карте, кликая на нее. При каждом клике на карте в потенциальный полигон должны добавляться точки-вершины. Когда пользователь хочет завершить добавление вершин в полигон, он должен иметь возможность нажать на кнопку «Добавить полигон» еще раз.
- При клике на уже нарисованный полигон система должна его (полигон) подсветить.
- Пользователь должен иметь возможность перемешать выделенный полигон по карте с помощью мыши.
- При клике на «Удалить полигон» система должна удалять выделенный полигон с карты.
- При клике на «Удалить все» система должна удалять все полигоны с карты.
- При клике на кнопку «Экспорт» системы должна выводить в любое место в HTML список полигонов с координатами вершин в формате JSON.
- Пользователь должен иметь возможность импортировать нарисованные полигоны (используя формат JSON из экспорта) в виджет с помощью кнопку «Импорт».
- Система должно позволять пользователю создавать только выпуклые полигоны.
- Система должна корректно работать в браузере Chrome последней стабильной версии.
- Система должна позволять создать несколько виджетов на одной странице (код виджетов должен быть корректно инкапсулирован и не конфликтовать с другими экземплярами виджетов на странице).