Skip to content

📌 ☁️ 🔎 Application for searching and showing location, setting up direction and add some users place to favourite

Notifications You must be signed in to change notification settings

malkovks/Map-App-Search

Repository files navigation

Map Application

Little introduction. This application based on Apple's Maps, using same frameworks and performs main functionallity(except for the technical limitations of kit). Application using Russian localization. It mean all UI texts and alerts using russian text.

Stack of development:

  1. UIKit;
  2. Swift 3 and newer;
  3. iOS 11+;
  4. MVC pattern of architecture;
  5. CoreData for storing data;
  6. UI displaying only codable no using Storyboard/AutoLayouts;
  7. CocoaPods.

This app based on:

Application intended for:

  • Searching place's from caffeine to countries;
  • Checking for weather climate in user's region;
  • Setting up direction route, display distance and time of route;
  • Adding places to favourites category.

Main Objectives:

  1. Map View Controller. This view include:
  • segue's button to Search View Controller as "Search image";
  • segue's button to Favourite View Controller as "Bookmark image";
  • segue's button to Weather View Controller with displaying current temperature of user's location and condition;
  • Location button which display user point and center zoom on map;
  • Stepper for zooming map camera;
  • Clear map button for removing all annotations and routes direction;
  • Detail button based on UIMenu and displaying cell with:
    • segue to Information about app;
    • segue to Favourite View Controller;
    • segue to Weather View Controller;
    • showing pins of all favourite places on map view;
    • adding user's location to Favourite View Controller;
    • setting up direction route;
    • sharing user's location with UIActivityViewController;
    • adding or removing car trafic;
    • changing map type on:
      • satellite
      • hybrid
      • standart
    • clear map from annotations and routes.

  1. Search View Controller. This view have:
  • Collection view with custom cells which displaying some types of the most useful categories for fast searching;
  • Table view. It display search result in first section. In second section it display history of searching;
  • Switch controller for changing section:
    • First section include collection view and if user start to print some text collection become hidden and table ceases to be hidden;
    • Second section include history of search. It use table view with basic displaying name of place, short address. Also it has clear button to delete all data from history(if it necessary for user).
  • After finding something that user search for, he can choose that cell and it will display pin on map and open DetailViewController.

  1. DetailViewController. This view intented for:
  • Showing distance between pin location and user;
  • Displaying data, which transferred from MapViewController, SearchViewController or FavouriteViewController depending on the case. It include:
    • Main label at the top with name of place;
    • Label with distance;
    • Table view with displaying street name, number of building, administrative area, country, postal code and in second section coordinates;
  • Set direction button. By pressing in open UIMenu to choose type of direction, like Car, Walk, Bicycle and Public Transport;
  • Detail button. It display UIMenu which include:
    • Save location to FavouriteViewController;
    • Share location;
    • Open in Apple Maps;
    • Close window and delete annotation pin on map view.
  • Add to favourite button;
  • Close window button.

  1. FavouriteViewController. This view display:
  • Table view with displaying main info about saved places. User can choose it and show on map by pressing on cell;
  • It allows user to delete location if it become unnecessary.

  1. SetDirectionViewController. This view is needed for setting up start and finish of route direction. It could start displying by Long Tap Gesture or by clicking on menu cell "Set Direction". It include:
  • First text field which inherit data of user or start location. If user would like to change it, he can click and he goes to SearchViewController to get location for start;
  • Second text field inherit choosen point by gesture location. If it necessary to change, it will goes to SearchViewController to get finish location;
  • "What is it here?" button give action to show what exactly on this point of map which user tap and showing details;
  • Category of possible variations of route. It include 4 types;
  • Table view with favourite places which user can paste in final destination.

  1. ResultDirectionViewController. Current view display variations of routes, time and distance depending on the route of choosen category.

  1. DeveloperInfoViewController. This view display short information about develoment, some variations of type to contact with developer.

  1. OnboardingViewController. This view display welcome manual how to use current application and some secondary information.

  1. WeatherViewController. Weather app using eponymous API with variations of data such as Current weather, forecast and history of some period and etc.

Frameworks were used:

  • UIKit;
  • MapKit;
  • CoreLocationUI;
  • SPAlert;
  • FloatingPanel;
  • UserNotifications;
  • CoreData;
  • MessageUI;

Personal resolved tasks in App:

  • Using UserNotifications for displaying notification with current weather conditions;
  • Using custom alert after some actions for simplicity using;
  • Using configuration of buttons;
  • Using UIMenu as application menu with different actions, objectives and setting edition;
  • Using custom Collection View Cells for displaying collections of categories;
  • Using custom Table View Cells for displaying custom in SearchViewController;
  • Using protocol delegations for reverse data transfer;
  • Using UserDefaults for saving system set ups;
  • Using CoreData for storing data in two different entities;
  • Using MKDirections for start displaying possible routes from first coordinates to second coordinates with different variations of routes;
  • Using MKLocalSearch for start searching places by categories and names of the place;
  • Using Geocoder for parsing data from location and return data about this place;
  • Using Decodable and JSONDecoder for parsing data from API and return in struct.

Future improvements:

  • Add configuration to display process of start moving by route direction to final destination;
  • Integrate Tripadvisor API for detail info about every place and getting collections of images;

This project is non-commercial product. All rights reserved.

About

📌 ☁️ 🔎 Application for searching and showing location, setting up direction and add some users place to favourite

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages