用户当前位置

时间:2013-05-31 05:39:48

标签: ios

我想在坐标中收到用户当前位置,我输入了以下代码:

-(void)update{
    locationManager = [[CLLocationManager alloc] init];
    locationManager.distanceFilter = kCLDistanceFilterNone; // whenever we move
    locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    locationManager.delegate = self;
    mapView.showsUserLocation = YES;
    [locationManager startUpdatingLocation];
}

在iOS模拟器上,此代码崩溃,在我的设备上它没有或有时它崩溃整个应用程序....你能帮我解决发生的事情吗?

2 个答案:

答案 0 :(得分:1)

看起来您可能没有实施CLLocationManagerDelegate方法。

特别是-locationManager:didUpdateLocations:(来自iOS 6)或之前iOS版本中的-locationManager:didUpdateToLocation:fromLocation:

也许(再次你的问题太模糊了)你只想在地图视图上显示蓝点。在这种情况下,您不需要处理核心位置管理器。查看this post了解详情。

答案 1 :(得分:1)

首先,您无法在模拟器中获取当前位置。并尝试使用此代码获取当前位置的坐标。

CLLocationManager *locationManager = [[CLLocationManager alloc] init];
    if ([CLLocationManager locationServicesEnabled])
    {
        locationManager.delegate = self;
        locationManager.desiredAccuracy = kCLLocationAccuracyBest;
        locationManager.distanceFilter = kCLDistanceFilterNone;
        [locationManager startUpdatingLocation];
    }

    location = [locationManager location];
    CLLocationCoordinate2D coordinate = [location coordinate];;
    MKCoordinateRegion region;
    region.center=coordinate;
    MKCoordinateSpan span;
    span.latitudeDelta=10.015;
    span.longitudeDelta=10.015;
    region.span=span;
    [mapView setRegion:region];

    NSString *str=[[NSString alloc] initWithFormat:@" latitude:%f longitude:%f",coordinate.latitude,coordinate.longitude];
    NSLog(@"%@",str);