logo
Разработка геоинформационной системы позиционирования городских объектов

4.2 Реализация модуля добавления проблемы

Реализация системы подразумевает обязательную идентификацию пользователя для возможности добавления какого-либо контента, поэтому для отправки проблемы, необходимо выполнить проверку авторизации пользователя в системе. При удачном входе на сайт в базе данных системы и на локальном компьютере пользователя сохраняется уникальный идентификатор. При загрузке страницы контроллер страницы main.php проверяет наличие данного идентификатора. Если пользователь авторизован, то двойной клик по карте открывает форму добавления информации о проблеме на городском объекте (рис. 4.3). Одновременно с этим на карте под указателем мыши появляется маркер, который указывает на расположение городского объекта. Координаты данной метки отправляются HTTP-запросом к сервису геокодирования API Яндекс.Карт. Геокодирование предоставляет возможность поиска объекта, размещённого на карте по географическим координатам и определение его адреса (обратное геокодирование). Поисковый запрос осуществляется с помощью обращения к определённому URL, а результат возвращается в формате JSON (JavaScript Object Notation - простой формат обмена данными, удобный для чтения и написания как человеком, так и компьютером), который содержит список наиболее подходящих адресов. Первый адрес из списка принимается как верный результат геокодирования.

Далее пользователь производит заполнение полей ввода в форме, выбирает тип проблемы и производит прикрепление фотографий иллюстрирующих проблему. После нажатия кнопки “Отправить” данные форм, результаты геокодирования, координаты точки отправляются к обработчику AJAX запросов (рис. 4.2). Данная технология построения интерактивных пользовательских интерфейсов веб-приложений, заключается в асинхронном («фоновом») обмене данными браузера с веб-сервером. Результат обработки данных сервер возвращает в формате JSON. Если в ходе обработки возникли ошибки (заполнены не все обязательные поля, пользователь не авторизован, данные не добавлены в БД), то выдается соответствующее сообщение об ошибке (рис. 4.4). Если данные были успешно добавлены, то форма ввода закрывается и производится повторная загрузка меток на карту с параметрами по умолчанию.

Рисунок 4.3 - Добавления информации. Алгоритм

Работа алгоритма детально проиллюстрирована на UML-диаграмме последовательностей (рис. 4.4).

Рисунок 4.4 - Добавление информации. UML диаграмма последовательности