Разработка геолокационных приложений

# Просто о разработке, Советы клиентам
Декабрь 2016 г
SimbirSoftMobile

Как часто приложения у вас в телефоне хотят узнать ваше местоположение? У меня очень часто. Не только приложения с картами, но даже банковские клиенты и Instagram хотят знать, где я и куда направляюсь.

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

Приложения Yandex Навигатор, Foursquare, Pokemon GO и им подобные ориентируются на знание позиции пользователя. Есть и другой тип приложений, в которых позиционирование представлено менее явно, например, камера в смартфоне. Она определяет позицию пользователя и добавляет соответствующую метку к фотографии для последующего определения места снимка или отображения его на карте.

Говоря более научным языком, мы можем разделить приложения по особенностям применения в них геолокационных сервисов (Location-based services, сокращенно LBS) на следующие типы:

Приложения, предоставляющие информацию о ближайших объектах и расстояние до них (точках интереса POI)

Это такие приложения, как 2GIS или Yillio - самая простая категория приложений, вызывающая меньше сложностей при разработке. Главное при работе с данным типом приложений - разработать алгоритм и рассчитать по формуле расстояние между двумя точками: текущим местоположением пользователя и координатами объекта из базы данных.

Приложения, отображающие местоположения других пользователей

Swarm или Patrolife, к примеру. Особенность данной категории в разработке алгоритмов обновления местоположения всех пользователей системы на сервере. Основная сложность связана с соблюдением баланса между актуальностью (частотой) передачи координат на сервер и энергопотреблением устройства. При высокой скорости обновления данных резко возрастает нагрузка на сервера системы и значительно уменьшается время работы смартфона от батареи. Одним из решений может быть использование различных алгоритмов фильтрации получаемых с GPS датчиков данных. В своих проектах мы применяем способы сглаживания с использованием фильтра Калмана. Он позволяет отбрасывать помехи и настраивать степень сглаживания, а мы снижаем ненужную нагрузку с наших серверов и увеличиваем время автономной работы.

SimbirSoftMobile

Экскурсионные приложения и путеводители

Такие приложения, как Azbo или 1000 Гидов. Одна из их особенностей - это возможность работы с ними без подключений к Интернету. В большинстве случаев данные приложения используются в роуминге во время путешествия или в полном в отсутствии средств связи. В случае, если нам требуется работать Offline режиме, важно грамотно выбрать формат хранения карт в приложении. Выбор состоит между растровым (графическими файлами) и векторным типами карт. В большинстве случаев векторный формат предпочтительнее в силу его меньшего размера. Растровые карты предпочтительнее для небольшой территории (парка, музея) за счет возможности нарисовать на таких картах реалистичные объекты. Например, можно отображать на карте изображения объектов, какими они были в прошлые века.

Геолокация с дополненной реальностью

Это такие приложения, как известный Pokemon GO. Они являются одними из самых сложных для разработки. Помимо работы с GPS устройствами, необходимыми для получения информации о местоположении, здесь требуется распознавать графические объекты и обрабатывать информацию с гироскопа. Подобные приложения набирают популярность среди образовательных приложений. Так, пользователи перемещаются между экспонатами выставки или музея, наводят камеры смартфонов на интересующие объекты и видят подробности выделенного объекта. Чтобы подобное стало возможно, разработчикам нужно научить приложение распознать получаемое с камеры изображение. Для этого геолокация может использоваться как дополнительный механизм, повышающий точность процесса распознавания. Также для упрощения этого процесса может использоваться установка специальных маркеров по типу QR кодов.

Навигаторы

К данному типу приложений относятся Yandex Навигатор и Google Maps. Кроме отображения карт, они умеют строить маршруты. В отличие от упомянутых приложений, которые ведут пользователя по улицам города, также набирают популярность приложения для построения маршрутов в торговых центрах. Здесь пользователи прокладывают маршруты до интересующих их секций в торговом центре. Основная сложность в разработке данных систем заключается в определении местоположения пользователя в закрытом помещении торгового центра. Мы применяем систему "маяков", по которым приложение определяет, где в данным момент находится пользователь. Чем больше "маяков" вы используете в данном помещении, тем точнее определится местоположение пользователя.

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

  • Автономность работы приложения

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

    На карте предстоит отобразить большое количество информации на разных уровнях масштабирования. Проектировщик и дизайнер проводят несколько итераций Usabilty тестирования, чтобы создать действительно удобное приложение.
  • Обеспечение качества

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

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

.
SimbirSoftMobile