2016-10-06 8 views
0

Я успешно сделал приложение, которое показывает мигающую голубую точку, где пользователь в настоящее время. Однако по состоянию на данный момент центр экрана не следует за синей точкой, когда пользователь перемещается, поэтому, если пользователь перемещает синюю точку, она просто выходит из экрана, и пользователю придется прокручивать ее, чтобы не отставать от нее. Это не удобно! У меня есть следующий код:Центр обновления экрана с текущим местоположением

import UIKit 
import MapKit 
import CoreLocation 

class ViewController: UIViewController, MKMapViewDelegate, CLLocationManagerDelegate { 

    @IBOutlet weak var map: MKMapView! 

    let locationManager = CLLocationManager() 
    var mapp = MKMapView.self 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
     if (CLLocationManager.locationServicesEnabled()) 
     { 
      self.locationManager.delegate = self 
      self.locationManager.desiredAccuracy = kCLLocationAccuracyBest 
      self.locationManager.requestWhenInUseAuthorization() 
      self.locationManager.startUpdatingLocation() 
      self.map.showsUserLocation = true 
     } 
     else 
     { 
      print("Location services are not enabled") 
     } 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) 
    { 
     let location = locations.last 
     let center = CLLocationCoordinate2D(latitude: location!.coordinate.latitude, longitude: location!.coordinate.longitude) 
     let region = MKCoordinateRegion(center: center, span: MKCoordinateSpan(latitudeDelta: 0.002, longitudeDelta: 0.002)) 
     self.map.setRegion(region, animated: true) 
     self.locationManager.stopUpdatingLocation() 
    } 
} 

Мои только мысли, что я мог бы избавиться от раздела «stopUpdatingLocation() и, возможно, тогда он будет постоянно обновлять регион с новым центром для каждого нового места, однако я не знаю, не имеет ли stopUpdatingLocation плохая практика? Спасибо за все советы!

+1

Для этого вам не нужен код. Вы можете просто установить свойство 'userTrackingMode' в MapView, и представление карты сделает это за вас. – Paulw11

+0

Wow thats очень удобно. Есть ли ссылка где-нибудь, у которой есть вся информация о методах GPS? – skyleguy

+0

Существует тонна документации на http://developer.apple.com – Paulw11

ответ

1

Используйте userTrackningMode, что приводит к тому, что отображение карты центрирует карту в этом месте и начинает отслеживать местоположение пользователя. Если карта уменьшена, карта просмотр автоматически увеличивает масштаб изображения на месте пользователя, эффективно изменяя видимую область.

Использовать его

mapView.setUserTrackingMode(.follow, animated:true) 
+0

Спасибо! Я предполагаю, что в моем примере мне нужно будет сделать self.map.setUserTrackingMode (.follow, animated: true)? – skyleguy

+0

Да, @skyleguy. –

+0

Я добавил приведенный выше код прямо под строкой «self.map.showsUserLocation = true», и точка все равно выходит из экрана всякий раз, когда я перемещаюсь с приложением вверх. это не правильное место для его добавления? – skyleguy

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

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