Geolocalização e Mapas em Swift: Core Location e MapKit (iOS/macOS)

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Geolocalização e Mapas em Swift (iOS/macOS): Core Location e MapKit



O desenvolvimento de aplicativos modernos para iOS e macOS frequentemente requer trabalho com geolocalização e mapas. No ecossistema Apple, existem dois frameworks poderosos para esses fins: Core Location (obtenção de dados geográficos) e MapKit (exibição de mapas, anotações, rotas). Neste artigo, vamos detalhar suas funcionalidades, fornecer exemplos práticos em Swift e mostrar como integrar geolocalização no seu aplicativo.



1. Core Location: Determinação da Localização



Core Location é um framework para obter informações geográficas: coordenadas, altitude, direção do movimento, além de monitoramento de geofences. Ele funciona com GPS, Wi-Fi, torres de celular e iBeacon.



1.1. Configuração de Permissões



Para usar a geolocalização, é necessário solicitar permissão ao usuário. No arquivo Info.plist, adicione uma das chaves:

  • NSLocationWhenInUseUsageDescription — para obter dados apenas quando o aplicativo estiver em uso ativo.
  • NSLocationAlwaysAndWhenInUseUsageDescription — para monitoramento em segundo plano (requer explicação adicional).


1.2. Obtendo Coordenadas Atuais



import CoreLocation

class LocationManager: NSObject, CLLocationManagerDelegate { private let manager = CLLocationManager() var onLocationUpdate: ((CLLocation) -> Void)?

override init() { super.init() manager.delegate = self manager.desiredAccuracy = kCLLocationAccuracyBest }

func requestLocation() { manager.requestWhenInUseAuthorization() manager.startUpdatingLocation() }

// MARK: - CLLocationManagerDelegate func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { guard let location = locations.last else { return } onLocationUpdate?(location) manager.stopUpdatingLocation() // Para as atualizações, se precisar de apenas um valor }

func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) { print("Erro ao obter localização: \\(error.localizedDescription)") }}

// Usolet locationManager = LocationManager()locationManager.onLocationUpdate = { location in print("Latitude: \\(location.coordinate.latitude), Longitude: \\(location.coordinate.longitude)")}locationManager.requestLocation()


2. MapKit: Exibição de Mapas e Anotações



MapKit permite incorporar mapas interativos do Apple Maps em aplicativos. A classe principal é MKMapView.



2.1. Criando um Mapa no Storyboard/XIB



Adicione um MKMapView à cena e crie um IBOutlet no controlador. Certifique-se de que MapKit foi importado.



2.2. Criando um Mapa Programaticamente e Adicionando Anotações



import MapKit

class MapViewController: UIViewController { var mapView: MKMapView!

override func viewDidLoad() { super.viewDidLoad() setupMap() addAnnotation() }

private func setupMap() { mapView = MKMapView(frame: view.bounds) mapView.autoresizingMask = [.flexibleWidth, .flexibleHeight] view.addSubview(mapView)

// Define a região (Moscou) let center = CLLocationCoordinate2D(latitude: 55.751244, longitude: 37.618423) let span = MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05) let region = MKCoordinateRegion(center: center, span: span) mapView.setRegion(region, animated: true) }

private func addAnnotation() { let annotation = MKPointAnnotation() annotation.coordinate = CLLocationCoordinate2D(latitude: 55.751244, longitude: 37.618423) annotation.title = "Moscou" annotation.s

Recommendations