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 = trueIniciando 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:
CLGeocoderfaz geocodificação direta e reversa (há variantes assíncronas); seu uso é limitado por taxa.CLPlacemarkcontém campos detalhados do endereço, todos opcionais.CLCircularRegiondefine cercas geográficas; o monitoramento exige autorização Sempre.- Trate
didEnterRegion/didExitRegione consulte o estado comrequestState(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
- Solicitação de Autorização de Localização
- Obtenção da Localização do Usuário
- Exibição de Mapas no SwiftUI
- Geocodificação e Regiões