2015-03-02 61 views
0

我有MapView的,其委託的方法需要的MapView不更新位置

func mapView(mapView: MKMapView!, didUpdateUserLocation userLocation: MKUserLocation!) { 
    mapView.userTrackingMode = MKUserTrackingMode.None 
    var eye = CLLocationCoordinate2DMake(userLocation.coordinate.latitude, userLocation.coordinate.longitude) 
    var cam = MKMapCamera(lookingAtCenterCoordinate: eye, fromEyeCoordinate: eye, eyeAltitude: 10000) 

    UIView.animateWithDuration(1, animations: {() -> Void in 
     mapView.camera = cam 
    }) 
} 

和它的作品一些隨機的方式。它在視圖加載時執行,並且當我將地圖滾動到另一個國家或城市並縮放時,它可以(有時現在總是)將我返回到當前位置。這很好奇,因爲我當前的位置沒有改變,代表不應該執行。 我需要做某事這件事情沒有發生。所以我想讓我的地圖只在位置發生變化時才縮放到當前位置,換句話說,我需要有免費的滾動地圖。

回答

0

你必須設置你控制器CLLocationManagerDelegate,然後聲明一個變量,如:

var locationManager:CLLocationManager = CLLocationManager()

然後在您的viewDidLoad方法:

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.locationManager.delegate = self 
    self.locationManager.stopUpdatingLocation() 

應該防止調用func mapView(mapView: MKMapView!, didUpdateUserLocation userLocation: MKUserLocation!)

請注意,如果您需要使用座標更新地圖中心而無需手動滾動至實際位置,則必須重新組合它。

+0

你不明白我需要和嘗試做什麼。我想使用委託,所有這一切,但只有當userlocation真正更新時,而不是當我滾動地圖時。你的答案是關於另一個案例 – 2015-03-02 15:36:22