A modern, native iOS application built with SwiftUI and MapKit for exploring locations, managing points of interest, and visualizing geographical data efficiently.
- Native Map Integration: Utilizes Apple's MapKit for high-performance, smooth map rendering.
- Current Location Tracking: Easily center the map on the user's current GPS location.
- Search Functionality: Integrates with Apple's location services (CLGeocoder/MapKit) to search for addresses and Points of Interest (POIs).
- Custom Annotations: Ability to place and manage custom pins or markers with detailed pop-over views.
- Persistent Favorites: Implement a mechanism (e.g., Core Data or UserDefaults) to save and retrieve favorite locations.
- MVVM Architecture: Clean separation of concerns using the Model-View-ViewModel pattern, leveraging ObservableObjects and EnvironmentObjects for state management.
| Category | Technology | Description |
|---|---|---|
| Language | Swift | The primary language for iOS development. |
| Framework | SwiftUI | The declarative framework used to build the user interface. |
| Mapping SDK | MapKit | Apple's framework for embedding maps and handling map-based data. |
| Architecture | MVVM | Implemented using ObservableObject and @EnvironmentObject. |
Follow these steps to set up and run the project in Xcode.
- Xcode: Latest stable version (e.g., 15+)
- macOS: A machine capable of running the required Xcode version.
- iOS SDK: The target iOS version for the application.
-
Clone the repository:
git clone [https://github.com/ctechasiri1/MapApp.git](https://github.com/ctechasiri1/MapApp.git) cd MapApp -
Open the project: Open the
.xcodeprojfile in Xcode.open MapApp.xcodeproj
-
Run the application: Select a simulator or a connected device and click the Run button (or use
Cmd + R).
- Exploring: Pan and zoom the map just like a standard map application.
- Locate Me: Look for a button (often a crosshair icon) to recenter the map on your simulated or physical current location.
- Searching: Use the navigation bar or search field to look up new locations, which will then appear as an annotation on the map.
We welcome contributions to this project!
- Fork the Project.
- Create your Feature Branch (
git checkout -b feature/NewFeatureName). - Commit your Changes (
git commit -m 'feat: Add a new map feature'). - Push to the Branch (
git push origin feature/NewFeatureName). - Open a Pull Request detailing your changes.
Distributed under the MIT License.
Project Link: https://github.com/ctechasiri1/MapApp