2017-06-16 1 views
1

Ce que je vise est que lorsque l'utilisateur clique sur un bouton, je veux que le code vérifie s'ils sont près de l'emplacement ils obtiennent des points, je suis tout simplement pas sûr où placer cette informationlorsque l'utilisateur clique sur un bouton, ils obtiennent des points x quand ils sont à proximité d'un emplacement (SWIFT)

class ViewController: UIViewController ,CLLocationManagerDelegate { 

    @IBOutlet weak var map: MKMapView! 
    let manager = CLLocationManager() 

    @IBAction func getPoints(_ sender: Any) { 
    //not sure what to add here, check the ... 
    } 

    override func viewDidLoad() 
    { 
     super.viewDidLoad() 
     manager.delegate = self 
     manager.desiredAccuracy = kCLLocationAccuracyBest 
     manager.requestWhenInUseAuthorization() 
     manager.startUpdatingLocation() 
    } 

//to show the map 
    func locationManager(_ manager: CLLocationManager,  didUpdateLocations locations: [CLLocation]) 
    { 
     let location = locations[0] 
     let span:MKCoordinateSpan = MKCoordinateSpanMake(0.01, 0.01) 
     let myLocation:CLLocationCoordinate2D =  CLLocationCoordinate2DMake(location.coordinate.latitude,  location.coordinate.longitude) 
     let region:MKCoordinateRegion =  MKCoordinateRegionMake(myLocation, span) 
     map.setRegion(region, animated: true) 
     self.map.showsUserLocation = true 

    //do i put this (the code below) under the @IBAction 

     let userLocation = locations.last! as CLLocation 
     let desiredLocation = CLLocation(latitude: 50.000000,  longitude: -50.000000) 

     let radius: Double = 0.25 // miles 
     let distance = desiredLocation.distance(from: userLocation) 
     if distance < radius { 
     } 
    } 
} 
+0

oui le code qui va calculer la distance aller à l'intérieur IBAction. Et vous pouvez obtenir l'emplacement actuel des utilisateurs de _manager.location_ – kathayatnk

+0

donc si j'utilise manager.location est le "let userLocation = locations.last! As CLLocation" nécessaire pour mon code? et pourriez-vous copier et coller mon code pour me montrer, je l'apprécierais vraiment. Je vous remercie! –

+0

juste startLocationUpdates, puis manager.location aura le dernier emplacement récupéré. Pas besoin de cela "let userLocation = locations.last! Comme CLLocation" Voir ma réponse pour l'IBAction – kathayatnk

Répondre

0

Quelque chose comme ça

@IBAction func getPoints(_ sender: UIButton) { 
    //since this can be nil we have to check if there is any currently retrieved location 
    if let currentUserLocation = manager.location { 

     //location to check with 
     let desiredLocation = CLLocation(latitude: 50.000000, longitude: -50.000000) 
     let radius: Double = 0.25 // miles 
     let distance = desiredLocation.distance(from: currentUserLocation) 
     if distance < radius { 
      //do things 
     } 
    } 
} 
+0

merci de clarifier, cela fait beaucoup plus de sens maintenant –