- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在尝试获取位置坐标。在我调用 [locationManager startUpdatingLocation];
之后没有任何反应。
它从不调用 - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations;
有什么想法吗?
注意:我已经设置了 CLLocationManagerDelegate
并使我的 CLLocationManager
类型为 strong
。在我的 viewDidLoad
中,我设置了我的委托(delegate),我正在尝试使用 requestAlwaysAuthorization
。
ViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"locationServicesEnabled: %@", [CLLocationManager locationServicesEnabled] ? @"YES":@"NO");
NSLog(@"locationManager init");
NSLog(@"geocoder init");
locationManager = [[CLLocationManager alloc] init];
geocoder = [[CLGeocoder alloc] init];
//locationManager.delegate = self;
[locationManager setDelegate:self];
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[locationManager requestAlwaysAuthorization];
NSLog(@"locationManager startUpdatingLocation");
[locationManager startUpdatingLocation];
}
#pragma mark - CLLocationManagerDelegate
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{
NSLog(@"locationManager:manager");
NSLog(@"didFailWithError: %@", error);
UIAlertView *errorAlert = [[UIAlertView alloc]
initWithTitle:@"Error" message:@"Failed to Get Your Location" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[errorAlert show];
}
- (void)locationManager:(CLLocationManager *)manager
didUpdateLocations:(NSArray *)locations;
{
NSLog(@"locations %@", locations);
CLLocation *newLocation = [locations lastObject];
NSLog(@"didUpdateToLocation: %@", newLocation);
CLLocation *currentLocation = newLocation;
if (currentLocation != nil) {
longitude = [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.longitude];
latitude = [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.latitude];
}
// Stop Location Manager
[locationManager stopUpdatingLocation];
// Reverse Geocoding
NSLog(@"Resolving the Address");
[geocoder reverseGeocodeLocation:currentLocation completionHandler:^(NSArray *placemarks, NSError *error) {
NSLog(@"Found placemarks: %@, error: %@", placemarks, error);
if (error == nil && [placemarks count] > 0) {
placemark = [placemarks lastObject];
locationLabel.text = [NSString stringWithFormat:@"%@, %@",
placemark.locality,
placemark.administrativeArea];
} else {
NSLog(@"%@", error.debugDescription);
}
} ];
}
ViewController.h
#import <UIKit/UIKit.h>
#import <CoreLocation/CoreLocation.h>
@interface ViewController : UIViewController <CLLocationManagerDelegate>
@property (strong, nonatomic) CLLocationManager *locationManager;
@property (strong, nonatomic) CLGeocoder *geocoder;
@property (strong, nonatomic) CLPlacemark *placemark;
日志
2014-09-24 08:18:39.783 appName[1201:130186] locationServicesEnabled: YES
2014-09-24 08:18:39.784 appName[1201:130186] locationManager init
2014-09-24 08:18:39.784 appName[1201:130186] geocoder init
2014-09-24 08:18:39.785 appName[1201:130186] locationManager startUpdatingLocation
我也试过删除 [locationManager stopUpdatingLocation];
但它仍然没有做任何事情。
其他注意事项:如果我检查设备设置/隐私,则表明我的应用程序确实具有位置权限。我所有的 .h
属性都在 .m
文件中正确地 @synthesize
。
最佳答案
如果您使用的是 iOS 8,则需要调用以下任一方法:-[CLLocationManager requestWhenInUseAuthorization]
或 -[CLLocationManager requestAlwaysAuthorization]
在调用 [locationManager startUpdatingLocation];
之前。
您还需要在 .plist 中为这些键 NSLocationUsageDescription
、NSLocationWhenInUseUsageDescription
和 NSLocationAlwaysUsageDescription
关于iOS startUpdatingLocation 从未调用过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26016798/
背景 我最近在 merge 期间遇到了一个意外未 merge 的文档文件的问题。 无论出于何种原因,我搞砸了 merge 并有效地删除了文件(和其他几个文件),因为我忘记了它们的存在。 现在我想查看我
我在我的网站上使用旧的 mysql 版本和 php 版本 4。 我的表结构: | orders_status_history_id | orders_id | orders_status_id |
我是一名优秀的程序员,十分优秀!