使用CLLocationmanager在地图ios中显示当前位置

时间:2015-09-23 09:18:54

标签: ios objective-c mkmapview core-location

我正在尝试在地图中显示当前位置但却失败了。它因位置为空而给出错误。应在模拟器调试位置选项中选择哪个选项。如果我试图使用none而不是它返回null location nd for custom它给出了预先确定的坐标的位置。我想获得当前的位置!

3 个答案:

答案 0 :(得分:0)

我不认为你可以通过模拟器获得当前位置。您所能做的就是在调试中提供当前位置的经度和纬度 - >位置 - >自定义位置。这将被模拟器用作当前位置。 其他选项是将GPX文件添加到项目方案中。编辑方案 - >选项 - >选中允许位置模拟。将GPX文件添加到项目中。Adding GPX File

以上设置用于在模拟器中进行调试。它基于实际设备中的当前位置运行,即使这些设置未完成(对于无错代码)。

答案 1 :(得分:0)

先创建对象

 CLLocationManager *locationManager = [[CLLocationManager alloc] init];
 locationManager.delegate = self;

#define IS_OS_8_OR_LATER ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)
 if(IS_OS_8_OR_LATER)
 {
    [locationManager requestAlwaysAuthorization];
    [locationManager requestWhenInUseAuthorization];
 }
[locationManager startUpdatingLocation];

//Below two lines give you current location (lat-long).
Latitude = [NSString stringWithFormat:@"%f",locationManager.location.coordinate.latitude];
NSLog(@"Lat====%@",Latitude);

Longitude = [NSString stringWithFormat:@"%f",locationManager.location.coordinate.longitude];
NSLog(@"Log====%@",Longitude);

答案 2 :(得分:0)

您可以在AppDelegate.h

中添加此内容
@property (nonatomic, strong)  CLLocationManager *locationManager;

您可以将其用于获取当前位置。您可以在AppDelegate.m文件

中添加此代码
if ([CLLocationManager locationServicesEnabled]) {
        if (!_locationManager) {
            _locationManager = [[CLLocationManager alloc] init];
            _locationManager.delegate = self;
            _locationManager.desiredAccuracy = kCLLocationAccuracyBest;
            _locationManager.distanceFilter = 10.0;
            [self.locationManager startMonitoringSignificantLocationChanges];
        }
        // Check for iOS 8. Without this guard the code will crash with "unknown selector" on iOS 7.
        if ([_locationManager respondsToSelector:@selector(requestAlwaysAuthorization)])
            [_locationManager requestAlwaysAuthorization];
        [_locationManager startUpdatingLocation];
    }