
3Функциональные требования
Система должна:
Позволять пользователю просматривать карту территории ДВФУ
Позволять пользователю выбирать корпус и этаж для отображения его на карте в том месте, где расположен данный корпус.
Отображать в виде текстовой строки текущий корпус и этаж.
Отображать компас.
Позволять вводить номера аудиторий, и строить кротчайший путь между ними.
Позволять строить кротчайший путь от аудитории до ближайшей уборной или столовой.
Позволять строить кротчайший путь от входа в корпус до аудитории, ближайшей уборной или столовой.
Выводить кротчайший путь отрезками на каждом из этажей, по которым проходит этот путь.
Предоставлять навигацию по отрезкам текущего кротчайшего пути, путем клика на маркеры, расположенные на его концах.
Уведомлять пользователя текстовым сообщением, производящего переход от одного отрезка путик другому, о действии, которое он должен произвести, чтобы переместиться на в то место, где проходит следующий отрезок. Например: «Пройдите по переходу», «Поднимитесь на 2 этажа вверх»
Определять ориентацию пользователя на карте при помощи стрелочки.
4Требование к интерфейсу
Система должна быть реализована в виде приложения под андройд. Должна включать в себя следующие страницы:
Карта территории ДВФУ, включающая инструменты для масштабирования, прокрутки, переключения этажей и корпусов.
Меню для выбора форм построения кротчайших путей.
Форма для ввода данных для построения кротчайших путей, с оптимизированной для этого клавиатурой.
5Проект
Средства реализации
В качестве инструмента для разработки был выбран Android SDK, содержащий в комплекте среду eclipse с предустановленным плагином ADT bundle. Язык программирования - Java.
Для отображения карты в офф-лайн режиме, в svg формате был использован компонент с открытым исходным кодом mapsforge. Из существующих решений для моей курсовой работы подошел больше остальных.
Модули и алгоритмы
Классы
5.1MainActivity
Является точкой входа в программу. В данном классе настраивается расположение элементов интерфейса в главном окне, а также обрабатываться связанные с ними события. Считываются данные о схемах корпусов и создаются другие классы.
5.2AuditoriesSelectActivity
В данном классе настраивается расположение элементов интерфейса в окне выбора аудиторий для построения кратчайшего пути.
5.3Graph
Экземпляр данного класса представляет собой интерпретацию одного файла в формате описанном в разделе 2.1. Содержит метод dijkstra реализующий одноименный алгоритм, позволяет найти кротчайший путь между вершинами для графа проходимости на схеме этажа, а также кеширует его. Если экземпляр является схемой, то он содержит ссылку patency на другой экземпляр, обозначающий проходимый путь.
5.4GraphNode
Вершина для Graph
5.5GraphParser
Класс, разбирающий файлы описанные в разделе 2.1 и создают на их основе экземпляры класса Graph.
5.6FloorsGraph
Граф вершины которого, это экземпляры класса Graph. Объединяет схемы корпусов в структуру, необходимую для поиска кротчайшего пути между вершинами, находящимися в разных корпусах и\или этажах. Имеет свою реализацию dijkstra, веса у ребер в ней уже не могут быть географическими координатами, они вычисляются из результатов запуска алгоритма Дейкстры внутри экземпляров Graph.
5.7TextOverlay
Наследник класса ArrayWayOverlay идущего в комплекте с библиотекой mapforge. Используется для отображения на карте текстом номера аудитории. Перегружен метод рисовки на холсте.
5.8ArrayItemizedSelectableOverlay
Наследник класса ArrayItemizedOverlay идущего в комплекте с библиотекой mapforge. Используется для отображения маркеров на карте. Реализована возможность обрабатывать клик по маркеру.
5.9Helpers
Статический класс. Содержит методы для валидации вводимых пользователем данных. Метод копирования файла. И другие технические методы «помошники».
5.10Pair
Структура данных пара.
5.11CustomKeyboard
Класс необходимый для отображения оптимизированной для ввода номеров аудиторий клавиатуры. Автор класса: Maarten Pennings