Note: GitHub does not yet support Xcode 14.3 and iOS 16.4 so this project will keep failing builds until they add support
City Transport Guide is an iOS application that helps users explore the public transportation options in the city of Lisbon, Portugal. The app displays a map with custom markers for different public transport resources like bikes, scooters, metro stations, and more. Users can tap on a marker to view additional information about each resource, and even open the native Maps app for further navigation.
- Display a map centered on Lisbon.
- Fetch and display markers for transportation resources (bikes, scooters, metro stations, etc.) from the provided API.
- Show custom icons for each marker based on the companyID of the transportation resource.
- Animate the markers when they appear on the map.
- Update the markers on the map as the user moves around.
- Limit the zoom level to a specific range.
- Display an info window with the name and a short description of the resource when a marker is tapped.
- Open the native Maps app with the selected location when the info window is tapped.
- Handle errors gracefully by showing an error alert with relevant information.
- Clone the repository
git clone https://github.com/ivanscorral/CityTransportGuide.git
- Make sure you have Cocoapods installed.
- Run
pod install
on the project directory. - Open the newly generated .xcworkspace file.
- Enter your API key in the Info.plist
- Build and run the app
- Unit tests for the ViewModel to ensure proper data fetching and filtering.
- Unit tests for the MapElement class to verify the correct creation of MapElements and their properties.
- Xcode 14.3
- iOS 16.4
- Cocoapods for dependencies
- Google Maps iOS SDK Library
- Alamofire
- Kingfisher
No contributions will be merged and will be automatically denied as this is a personal project. However, feel free to fork the project making sure to respect the terms detailed in the LICENSE.md
- Ivan Sanchez
This project is licensed under the MIT License - see the LICENSE.md
file for details.