Swift Academy · Les

Geocoding en regio's

Converteer coördinaten naar adressen en bewaak regio's.

Les 4 van 413 stappen

Geocoding en regio's is een gratis Swift Academy-les op CoddyKit. Dit is les 4 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Swift Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Swift Academy bevat in totaal 4 lessen.

Wat is geocodering?

Geocodering zet een menselijk adres om in coördinaten; omgekeerde geocodering zet coördinaten weer om in een leesbaar adres. Core Location biedt voor beide de CLGeocoder en communiceert daarvoor met de servers van Apple.

import CoreLocation
let geocoder = CLGeocoder()

Een adres geocoderen

Roep geocodeAddressString(_:) aan met een vrij ingevoerd adres. De voltooiingsfunctie geeft een lijst met CLPlacemark-objecten terug; neem het eerste object en lees de location ervan.

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

Coördinaten omgekeerd geocoderen

Met een CLLocation geeft reverseGeocodeLocation(_:) plaatsmarkeringen terug die dat punt beschrijven: straat, stad, land, postcode en meer.

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 ?? "")
    }
}

De structuur van CLPlacemark

Een CLPlacemark bevat uitgebreide velden: name, thoroughfare (straat), locality (stad), administrativeArea (staat of regio), postalCode, country en isoCountryCode. Veel hiervan zijn optioneel, dus pak ze zorgvuldig uit.

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

Beperkingen van geocodering

CLGeocoder is netwerkgebaseerd en heeft een limiet op het aantal aanvragen. Doe één aanvraag tegelijk, vermijd strakke lussen en annuleer lopende bewerkingen met cancelGeocode() wanneer het resultaat niet meer nodig is.

geocoder.cancelGeocode()

Geocodering met async/await

Moderne Swift biedt asynchrone varianten, waarmee je lineaire code kunt schrijven met try await in plaats van voltooiingsfuncties.

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

Regiemonitoring introduceren

Met regiemonitoring (geofencing) kan het systeem je app laten weten wanneer het apparaat een gedefinieerd cirkelvormig gebied binnenkomt of verlaat — zelfs wanneer je app niet actief is. Hiervoor is de machtiging Always vereist.

// Requires NSLocationAlwaysAndWhenInUseUsageDescription
manager.requestAlwaysAuthorization()

Een CLCircularRegion definiëren

Een geofence is een CLCircularRegion met een middelpunt, straal (in meters) en unieke identificatie. Stel notifyOnEntry en notifyOnExit in om te kiezen in welke gebeurtenissen je geïnteresseerd bent.

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

Regiemonitoring starten

Roep startMonitoring(for:) aan om te beginnen. Het apparaat legt een limiet op (ongeveer 20 regio's per app), dus houd alleen de meest relevante regio's tegelijk in de gaten.

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

Gebeurtenissen bij binnenkomen en verlaten ontvangen

De gedelegeerde methoden didEnterRegion en didExitRegion worden uitgevoerd wanneer grenzen worden overschreden. Gebruik de identificatie van de regio om te weten welke geofence dit heeft geactiveerd.

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

De huidige toestand opvragen

Als je wilt weten of het apparaat al in een regio is zonder op een grensoverschrijding te wachten, roep je requestState(for:) aan. Het resultaat komt binnen via didDetermineState als .inside, .outside of .unknown.

manager.requestState(for: region)

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

Korte controle: geocodering en regio's

Controleer of je het begrijpt.

Samenvatting: geocodering en regio's

Je hebt geleerd adressen en coördinaten naar elkaar te vertalen en geografische grenzen in de gaten te houden:

  • CLGeocoder voert voorwaartse en omgekeerde geocodering uit (er bestaan asynchrone varianten); er geldt een frequentielimiet.
  • CLPlacemark bevat uitgebreide adresvelden, die allemaal optioneel zijn.
  • CLCircularRegion definieert geofences; voor het monitoren is de machtiging Always nodig.
  • Verwerk didEnterRegion/didExitRegion en vraag de toestand op met requestState(for:).
Gratis beginnen

Leer Swift met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
122
Lessen
409

Veelgestelde vragen

Is de les “Geocoding en regio's” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Swift Academy, waaronder “Geocoding en regio's”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Swift Academy bevat in totaal 4 lessen.

Wat leer ik in “Geocoding en regio's”?

Converteer coördinaten naar adressen en bewaak regio's. Je oefent met Swift Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Swift Academy te beginnen?

Ervaring vooraf is niet nodig. Swift Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.

Hoe lang duurt de les “Geocoding en regio's”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Swift Academy?

Ja. Elke les over Swift Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Locatietoestemming aanvragen
  2. De locatie van de gebruiker ophalen
  3. Kaarten weergeven in SwiftUI
  4. Geocoding en regio's
← Terug naar Swift Academy