Giter Site home page Giter Site logo

mytrackios's Introduction

MyTrack

Приложение iOS для трекинга прогулок.

Shot

Начало

Я хотел научится работать с картой, получать координаты и обрабатывать их. Попытаться реализовать большинство возможных функций Google Maps SDK:

  • рисование и окрашивание сплайна;
  • установка маркера на картк;
  • перемещение камеры на карте;
  • обрабатывает получаемые данные и показывать их в понятном виде.

Содержание

Возможности

Главный экран реализован с использованием Google Maps SDK. Приложение по кнопке СТАРТ начинает создавать трек пользователя по координатам. Отображается путь полилинией, которая окрашивается в цвет исходя из скорости перемещения пользователя с устройством. Для понимания логики окрашивания, есть выбор настройки типа прогулки внизу экрана. При прогулке есть скорость, путь и время, эти данные приложение показывает в удобном отформатированном варианте. При завершении трекинга, по кнопке ФИНИШ, приложение сохраняет трек. Прогулки можно увидеть по кнопке список. В ячейках трека приводится сводная информация и название района прогулки.

Реализация

Библиотеки

UIKit

Интерфейс приложения реализован классическим способом. За координацию контроллеров отвечает Coordinator. У каждого flow есть свой storyboard. Передаются данные между контроллерами через замыкание. https://github.com/DenDmitriev/MyTrack/blob/1e961673b4d2e93221716e2cc1aea562ceee5db3/MyTrack/Flows/Track/TrackCoordinator.swift#L23-L37

Google Maps SDK

Показ карты на экране и навигацию по нему осуществляет Google Maps SDK. Код начальной настройки. https://github.com/DenDmitriev/MyTrack/blob/1e961673b4d2e93221716e2cc1aea562ceee5db3/MyTrack/Flows/Track/Track/TrackViewController.swift#L107-L115

Создание сплайна осуществляется следующей функцией https://github.com/DenDmitriev/MyTrack/blob/1e961673b4d2e93221716e2cc1aea562ceee5db3/MyTrack/Flows/Track/Track/TrackViewController.swift#L312-L326

Установка маркера на карту https://github.com/DenDmitriev/MyTrack/blob/1e961673b4d2e93221716e2cc1aea562ceee5db3/MyTrack/Flows/Track/Track/TrackViewController.swift#L117-L122

RealmSwift

Хранения треков пользователя и точек локаций в нем https://github.com/DenDmitriev/MyTrack/blob/1e961673b4d2e93221716e2cc1aea562ceee5db3/MyTrack/Model/Track.swift#L11-L16

RxSwift

  • Подписки для обновления данных трека
  • Подписки для заполнение полей логина и пароля

Auth

TODO

  • Добавить FireBase для сохранения профиля пользователя и его координат
  • Добавить на окно профиля возможность загрузки фотографии пользователя и свойства

mytrackios's People

Contributors

dendmitriev avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.