0

当我们的设备离线时,我们能否获取当前用户位置“正在动画的那个蓝球”。当我尝试获取当前用户位置并记录它时,经度和纬度都得到 0.00000 这是我用来获取的代码当前用户位置。我正在使用 ipad mini 对其进行测试。我还在 .h 文件中添加了 CLLocationManagerDelegate。

- (void)viewDidLoad {
     [self getUserLocation];
      self.myMapView.showsUserLocation = YES;

 }
-(void)getUserLocation{
if ([CLLocationManager locationServicesEnabled]) {
    locationManager = [[[CLLocationManager alloc] init] autorelease];
    locationManager.delegate = self;
    locationManager.distanceFilter = kCLDistanceFilterNone;
    locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
    [locationManager startUpdatingLocation];
}else{
    NSLog(@"User location Disabled");
}


}

 - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
 {
CLLocation *currentGPSLocation = newLocation;

if (currentGPSLocation != nil) {
    currentLocation.latitude = self.myMapView.userLocation.coordinate.latitude;
    currentLocation.longitude = self.myMapView.userLocation.coordinate.longitude;

    currentLocationWalk.latitude=self.myMapView.userLocation.coordinate.latitude;
    currentLocationWalk.longitude=self.myMapView.userLocation.coordinate.longitude;
    NSLog(@"didUpdateToLocation: %f,%f", self.myMapView.userLocation.coordinate.latitude,self.myMapView.userLocation.coordinate.longitude);
    statusLabel.textColor = [UIColor blackColor];
    statusLabel.text = [NSString stringWithFormat:@"%f",self.myMapView.userLocation.coordinate.latitude];
    statusLabel1.text = [NSString stringWithFormat:@"%f",self.myMapView.userLocation.coordinate.longitude];



}

}
4

2 回答 2

0

您没有使用 ARC(我强烈建议使用它,它可以避免大多数内存管理错误!)。
因此,“ locationManager”可能是一个未保留的实例变量(也许您没有将其声明为保留属性)。
在这种情况下,当您的代码返回到主运行循环时,它可能已经被释放,其中自动释放池已耗尽。

于 2013-11-07T07:42:34.650 回答
0

这条线

locationManager = [[[CLLocationManager alloc] init] autorelease];

这不是一个好主意。

将 locationManager 定义为属性,在 viewDidLoad() 中初始化 locationManager,但删除自动释放!

并仅在卸载 viewController 时释放 locationManager(在此处释放其他属性)

于 2013-11-07T20:02:10.067 回答