2017-01-31 22 views
2

Это моя первая публикация здесь. В настоящее время я застреваю при попытке выяснить, как добавить кнопку на моей карте, которая будет отображать текущее местоположение пользователя, если они отклоняются от него на карте. На данный момент у меня есть код, написанный ниже, который отображает текущее местоположение пользователя.Реализация кнопки «Мое местоположение» в Swift

import UIKit 
    import MapKit 
    import CoreLocation 

    class GameViewController: UIViewController,CLLocationManagerDelegate 
    { 

var lastUserLocation: MKUserLocation? 





@IBOutlet weak var Map: MKMapView! 

let manager = CLLocationManager() 





func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 
    let location = locations[0] 

    let span:MKCoordinateSpan = MKCoordinateSpanMake(0.00775, 0.00775) 

    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 
    manager.stopUpdatingLocation() 


} 



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




} 

@IBAction func refLocation(_ sender: Any) { 
    print("click") 
} 





override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
} 

}

Что я неуверен, что код поместить внутри @IBAction FUNC, что позволит карту повторно-центр для пользователей текущего местоположения, если они отклоняются от нее, глядя в другом месте.

Любая помощь была бы принята с благодарностью.

спасибо!

ответ

3

Для этого вы можете позвонить еще раз startUpdatingLocation метод CLLocationManager на ваш Button действий.

Для правильного отображения местонахождения пользователя, у вас должен быть доступ к объекту last из массива location в формате didUpdateLocations.

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 
    //Access the last object from locations to get perfect current location 
    if let location = locations.last {   
     let span = MKCoordinateSpanMake(0.00775, 0.00775)   
     let myLocation = CLLocationCoordinate2DMake(location.coordinate.latitude,location.coordinate.longitude)   
     let region = MKCoordinateRegionMake(myLocation, span) 
     Map.setRegion(region, animated: true) 
    }    
    self.Map.showsUserLocation = true 
    manager.stopUpdatingLocation()     
} 

Теперь просто позвоните startUpdatingLocation на действие кнопки.

@IBAction func refLocation(_ sender: Any) { 
    manager.startUpdatingLocation() 
} 
+0

Я получил NSException, когда я пытался, что реализация – DP27

+0

@ philhen27 Добавить все ошибки в вашем вопросе, если возможно, показать скриншот ошибки слишком –

+0

https://postimg.org/image/97d7otd77/ ошибка в AppDelegate @Nirav D – DP27

 Смежные вопросы

  • Нет связанных вопросов^_^