'Swift 4 MapKit check if mark is near to my location

I want to check when my position is changing if my location is near the Mark. I have marks with unique position. If i near for example 10m from mark i want to display alert. How i can do that?

a busy cat



Solution 1:[1]

  1. Get visible annotations.
  2. Calculate distance between your position and the mark.

e.g.

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
    guard let myLocation = locations.first else { return }

    let annotationSet = mapView.annotations(in: mapView.visibleMapRect)
    for annotation in annotationSet {
        guard let annotation = annotation as? MKPointAnnotation else { continue }
        let loc = CLLocation(latitude: annotation.coordinate.latitude,
                             longitude: annotation.coordinate.longitude)
        let distance = myLocation.distance(from: loc)
        if distance < 10.0 { Show Alert }
        }
    }
}

Solution 2:[2]

You can implement this delegate from CLLocationManager:

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
    let myLoc:CLLocationCoordinate2D = manager.location!.coordinate
    let distance : CLLocationDistance = mark1.distanceFromLocation(myLoc)

    if distance < 10.0 { //Show Alert }
}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Kosuke Ogawa
Solution 2 Ali Moazenzadeh