Geolocalização e mapas em Swift para iOS/macOS: guia completo

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 móveis e desktop para o ecossistema Apple frequentemente requer a integração de funcionalidades de geolocalização e exibição de mapas. Em Swift, dois frameworks poderosos são usados para esses fins: Core Location (para determinar a localização) e MapKit (para trabalhar com mapas). Neste artigo, vamos detalhar seus recursos, fornecer exemplos práticos de código e mostrar como usar essas ferramentas de forma eficaz em seus projetos.



1. Core Location: obtendo coordenadas e trabalhando com dados geográficos



Core Location é um framework que fornece acesso aos recursos de hardware e software para determinar a localização do dispositivo. Ele suporta GPS, Wi-Fi, torres de celular e iBeacon. Principais recursos:



  • Determinação das coordenadas atuais (latitude, longitude)
  • Monitoramento de mudanças significativas de localização
  • Geofences (regiões) — entrada/saída de uma área definida
  • Determinação de direção e velocidade de movimento
  • Geocodificação reversa (endereço a partir de coordenadas)


1.1. Configuração de permissões



Para trabalhar com geolocalização, é necessário solicitar permissão ao usuário. No Info.plist, adicione as chaves:



  • NSLocationWhenInUseUsageDescription — para uso apenas quando o aplicativo estiver ativo
  • NSLocationAlwaysAndWhenInUseUsageDescription — para monitoramento em segundo plano


1.2. Exemplo: obtendo a localização atual



Vamos criar um gerenciador de localização simples:



import CoreLocation

class LocationManager: NSObject, CLLocationManagerDelegate { let manager = CLLocationManager() var currentLocation: CLLocation? override init() { super.init() manager.delegate = self manager.desiredAccuracy = kCLLocationAccuracyBest manager.requestWhenInUseAuthorization() manager.startUpdatingLocation() } func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { guard let location = locations.last else { return } currentLocation = location print("Latitude: \\(location.coordinate.latitude)") print("Longitude: \\(location.coordinate.longitude)") manager.stopUpdatingLocation() } func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) { print("Erro: \\(error.localizedDescription)") }}


2. MapKit: exibindo mapas e trabalhando com anotações



O MapKit permite incorporar mapas do Apple Maps em aplicativos. Ele suporta:



  • Exibição de mapas padrão, satélite e híbrido
  • Adição de anotações (pinos, marcadores personalizados)
  • Cálculo de rotas (carro, a pé, transporte público)
  • Rastreamento da localização do usuário no mapa


2.1. Configuração básica do MKMapView



Adicione um MKMapView no storyboard ou crie programaticamente:



import MapKit

class MapViewController: UIViewController { @IBOutlet weak var mapView: MKMapView! override func viewDidLoad() { super.viewDidLoad() mapView.mapType = .standard mapView.showsUserLocation = true mapView.delegate = self }}


2.2. Adicionando anotações



Vamos criar uma anotação personalizada:



class CustomAnnotation: NSObject, MKAnnotation {    var coordinate: CLLocationCoordinate2D    var title: String?    var subtitle: String?        init(coordinate: CLLocationCoordinate2D, title: String, subtitle: String) {        self.coordinate = coordinate        self.title = title        self.subtitle = subtitle    }}

// Adicionando ao mapalet annotation = CustomAnnotation

Recommendations