問題是位置管理器未更新位置。 (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLoc fromLocation:(CLLocation *)oldLoc
函數被調用,但它將新位置顯示爲相同的舊位置。CLLocationManager未更新位置
以下是我的一段代碼: 在我viewDidLoad方法中,我創建CLLocationManager
-(void) viewDidLoad
{
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;
self.locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;
self.locationManager.distanceFilter = kCLDistanceFilterNone;
// created a timer to call locationUpdate method
[NSTimer scheduledTimerWithTimeInterval:20 target: self selector: @selector(locationUpdate) userInfo: nil repeats: YES];
}
-(void)locationUpdate
{
[self.locationManager startUpdatingLocation];
}
-(void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLoc
fromLocation:(CLLocation *)oldLoc
{
NSLog(@"in locationmanager did update %f",newLoc.coordinate.latitude);
MKCoordinateRegion region =
MKCoordinateRegionMakeWithDistance(newLoc.coordinate, 0.01, 0.02);
[self.mapView setRegion:region animated:YES];
[self.locationManager stopUpdatingLocation];
}
-(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation
{
if ([annotation isKindOfClass:[MKUserLocation class]])
{
MKCoordinateSpan span = MKCoordinateSpanMake(0.01, 0.02);
MKCoordinateRegion region = MKCoordinateRegionMake(mapView.userLocation.coordinate, span);
[_mapView setRegion:region animated:YES];
[_mapView regionThatFits:region];
}
我在的NSLog我得到(@「中的LocationManager沒有更新%F」的值的對象,newLoc .coordinate.latitude)始終是相同的 - 雖然我從當前位置開始移動超過2公里。
請幫助我如何獲取確切的新位置,只要有位置更新。提前致謝。
你爲什麼重新啓動使用NSTimer的可憐的位置管理器? **如果你已經閱讀過文檔,你會發現只需調用**'startUpdatingLocation' **就可以了!** – 2012-08-01 06:02:36
在添加一個定時器之前,我試圖在視圖中調用一次[locationManager startUpdatingLocation] ,但在locationUpdate委託方法中,我得到了與舊的一樣的新位置。 – Sonal0706 2012-08-01 06:31:32
這可能是因爲......歐盟......你不動? – 2012-08-01 07:54:47