0Pricing
Swift Academy · Aula

Geocodificação e Regiões

Converta coordenadas em endereços e monitore regiões.

Geocodificação e Regiões é uma aula grátis de Swift Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Swift Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Swift Academy inclui 4 aulas no total.

O que é geocodificação?

Geocodificação converte um endereço humano em coordenadas; a geocodificação reversa transforma coordenadas novamente em um endereço legível. O Core Location fornece o CLGeocoder para ambos os casos, comunicando-se com os servidores da Apple.

import CoreLocation
let geocoder = CLGeocoder()

Geocodificando um endereço

Chame geocodeAddressString(_:) com um endereço em formato livre. A conclusão retorna uma matriz de objetos CLPlacemark; pegue o primeiro e leia sua location.

geocoder.geocodeAddressString("Eiffel Tower, Paris") { placemarks, error in
    if let coord = placemarks?.first?.location?.coordinate {
        print(coord.latitude, coord.longitude)
    }
}

Fazendo geocodificação reversa de coordenadas

Dado um CLLocation, reverseGeocodeLocation(_:) retorna marcadores de local que descrevem esse ponto: rua, cidade, país, código postal e muito mais.

let loc = CLLocation(latitude: 48.8584, longitude: 2.2945)
geocoder.reverseGeocodeLocation(loc) { placemarks, error in
    if let p = placemarks?.first {
        print(p.name ?? "", p.locality ?? "", p.country ?? "")
    }
}

A estrutura CLPlacemark

Um CLPlacemark expõe campos detalhados: name, thoroughfare (rua), locality (cidade), administrativeArea (estado), postalCode, country e isoCountryCode. Muitos são opcionais, portanto, desembrulhe-os com cuidado.

func format(_ p: CLPlacemark) -> String {
    [p.thoroughfare, p.locality, p.country]
        .compactMap { $0 }
        .joined(separator: ", ")
}

Limitações do geocodificador

O CLGeocoder depende da rede e tem limite de frequência. Faça uma solicitação por vez, evite loops muito rápidos e cancele o trabalho em andamento com cancelGeocode() quando o resultado não for mais necessário.

geocoder.cancelGeocode()

Geocodificação assíncrona

O Swift moderno oferece variantes assíncronas, permitindo escrever código linear com try await em vez de manipuladores de conclusão.

func coordinate(for address: String) async throws -> CLLocationCoordinate2D? {
    let placemarks = try await geocoder.geocodeAddressString(address)
    return placemarks.first?.location?.coordinate
}

Introdução ao monitoramento de regiões

O monitoramento de regiões (geofencing) permite que o sistema notifique seu app quando o dispositivo entra ou sai de uma área circular definida — mesmo quando o app não está em execução. Ele exige autorização Sempre.

// Requires NSLocationAlwaysAndWhenInUseUsageDescription
manager.requestAlwaysAuthorization()

Definindo uma CLCircularRegion

Uma cerca geográfica é uma CLCircularRegion com um centro, um raio (em metros) e um identificador exclusivo. Defina notifyOnEntry e notifyOnExit para escolher quais eventos devem ser acompanhados.

let region = CLCircularRegion(
    center: CLLocationCoordinate2D(latitude: 41.0, longitude: 29.0),
    radius: 200,
    identifier: "OfficeZone"
)
region.notifyOnEntry = true
region.notifyOnExit = true

Iniciando o monitoramento de regiões

Chame startMonitoring(for:) para começar. O dispositivo impõe um limite (cerca de 20 regiões por app); portanto, monitore apenas as mais relevantes de cada vez.

if CLLocationManager.isMonitoringAvailable(for: CLCircularRegion.self) {
    manager.startMonitoring(for: region)
}

Recebendo eventos de entrada e saída

Os métodos delegados didEnterRegion e didExitRegion são acionados quando os limites são atravessados. Use o identifier da região para saber qual cerca geográfica acionou o evento.

func locationManager(_ m: CLLocationManager, didEnterRegion region: CLRegion) {
    print("Entered:", region.identifier)
}
func locationManager(_ m: CLLocationManager, didExitRegion region: CLRegion) {
    print("Exited:", region.identifier)
}

Consultando o estado atual

Para saber se o dispositivo já está dentro de uma região sem esperar que atravesse um limite, chame requestState(for:). O resultado chega em didDetermineState como .inside, .outside ou .unknown.

manager.requestState(for: region)

func locationManager(_ m: CLLocationManager,
                     didDetermineState state: CLRegionState,
                     for region: CLRegion) {
    print(region.identifier, state == .inside ? "inside" : "outside")
}

Verificação rápida: geocodificação e regiões

Verifique se você compreendeu o conteúdo.

Recapitulação: geocodificação e regiões

Você aprendeu a converter endereços em coordenadas e coordenadas em endereços, além de acompanhar limites geográficos:

  • CLGeocoder faz geocodificação direta e reversa (há variantes assíncronas); seu uso é limitado por taxa.
  • CLPlacemark contém campos detalhados do endereço, todos opcionais.
  • CLCircularRegion define cercas geográficas; o monitoramento exige autorização Sempre.
  • Trate didEnterRegion/didExitRegion e consulte o estado com requestState(for:).

Perguntas Frequentes

A aula “Geocodificação e Regiões” é grátis?

Sim — o texto completo de “Geocodificação e Regiões” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Swift Academy, atualize para CoddyKit PRO. O curso de Swift Academy inclui 4 aulas no total.

O que vou aprender em “Geocodificação e Regiões”?

Converta coordenadas em endereços e monitore regiões. Você pratica Swift Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Swift Academy?

Nenhuma experiência prévia é necessária. Swift Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “Geocodificação e Regiões”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Swift Academy?

Sim. Cada aula de Swift Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Solicitação de Autorização de Localização
  2. Obtenção da Localização do Usuário
  3. Exibição de Mapas no SwiftUI
  4. Geocodificação e Regiões
← Voltar para Swift Academy