2011-02-09 72 views
0

我有一個自定義的註釋的MapView的,只是碰到了一個beta測試的iPhone的一個問題。 mapView不會讓用戶移動到任何位置..只要您嘗試移動,它會立即對齊原始座標。MapView捕捉到原始位置 - 幫助!

任何想法爲什麼?它在模擬器中不會發生,我在自己的設備上注意到它有點...但它是另一個設備上的一致問題。

非常感謝!

static BOOL haveAlreadyReceivedCoordinates = NO; 

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { 
    if(haveAlreadyReceivedCoordinates) { 
    return; 
    } 

    haveAlreadyReceivedCoordinates = YES; 

    CLLocationCoordinate2D loc = [newLocation coordinate]; 
    [mapView setCenterCoordinate:loc]; 
} 
+0

我有這樣的一次。檢查你的委託方法。我想,在某個地方,你didUpdateToLocation告訴他回去.... otherwhise,張貼一些代碼.... – Icky 2011-02-09 11:47:26

+0

你好惡心......我已經更新了我的問題,包括我的代碼。一旦完成後,是否應該包含stopUpdatingLocation以避免不斷移動? – 2011-02-10 06:19:45

回答

1

艾琪讓你走上正軌。您不應該不斷地將地圖中心重置爲您從位置經理處獲得的任何內容。位置管理員將向您發送各種更新。

您可能希望只使用更新一次,然後忽略未來的更新(通過設置某種標誌),或者您可能希望僅當用戶按下一個按鈕,中心對用戶所在位置的地圖。在後一種情況下,您需要在didUpdateToLocation:中做的唯一一件事是將新位置存儲到某個成員變量中。

你沒有看到這個模擬器的原因是,位置硬件模擬器沒有不斷更新的真實一個是這樣的。