您好,在iPhone,iPod以及iPhone上获取该位置的最佳方式是什么。
我已经整合了以下内容,但我仍然无法获得正确的当前位置。 在iPod上我只是第一次获得该位置:
+ (GPS*)get
{
if (!g_)
{
NSLog(@"Creating instance of GPS!");
g_ = [GPS new];
}
return g_;
}
@synthesize manager;
- (id)init
{
if (!(self = [super init]))
return nil;
//Setup the manager
manager = [[CLLocationManager alloc] init];
if (!manager)
{
return nil;
}
manager.distanceFilter = kCLDistanceFilterNone;
manager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;
manager.desiredAccuracy = kCLLocationAccuracyBest;
manager.delegate = self;
if ([manager respondsToSelector:@selector(pausesLocationUpdatesAutomatically)])
{
manager.pausesLocationUpdatesAutomatically = NO;
}
if ([manager respondsToSelector:@selector(requestAlwaysAuthorization)])
{
[manager requestAlwaysAuthorization];
}
[manager startUpdatingLocation];
return self;
}
- (void)start
{
NSLog(@"Start Tracking");
[manager startUpdatingLocation];
}
-(void)stop
{
[manager stopUpdatingLocation];
}
#pragma mark CLLocationManagerDelegate
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
CLLocation *currentLocation = [locations lastObject];
NSLog(@"%f : %f", currentLocation.coordinate.latitude, currentLocation.coordinate.longitude);
//[self writeToFile];
}
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{
NSLog(@"locationManager - didFailWithError: %@", [error localizedDescription]);
NSLog(@"domain:%@", [error domain]);
//NSLog(@"code:%i", [error code]);
//[self writeToFile];
}
答案 0 :(得分:0)
iOS8上存在位置授权问题。根据您最近的评论,您使用的是iOS 8.4,这可能是您的问题。请在startUpdatingLocation
之前尝试以下代码:
// This part was added due to a location authorization issue on iOS8
// See more at: http://nevan.net/2014/09/core-location-manager-changes-in-ios-8/
if ([manager respondsToSelector:@selector(requestWhenInUseAuthorization)]) {
[manager requestWhenInUseAuthorization];
}
self.mapView.showsUserLocation = YES; //?
在此之前,请确保通过向其中添加以下一个或两个密钥来正确设置 Info.plist :