- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我试图在我的 iOS 项目中使用 CLLocationManager
框架来访问用户的位置,但是当我调用时
[locationManager startUpdatingLocation]
locationManager:didUpdateLocations:
或 locationManager:didFailWithError:
都没有被调用。
//myViewController.h
@interface myViewController : UITableViewController <CLLocationManagerDelegate>
@end
//myViewController.m
@implementation myViewController{
CLLocationManager *locationManager;
}
//edit
- (void)viewDidLoad
{
[super viewDidLoad];
locationManager = [[CLLocationManager alloc] init];
}
//finish edit
-(void)getLocation
{
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[locationManager startUpdatingLocation];
}
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)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
{
CLLocation *newLocation = locations[[locations count] -1];
CLLocation *currentLocation = newLocation;
NSString *longitude = [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.longitude];
NSString *latitude = [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.latitude];
if (currentLocation != nil) {
NSLog(@"latitude: %@", latitude);
NSLog(@"longitude: @"%@", longitude);
}else {
UIAlertView *errorAlert = [[UIAlertView alloc]
initWithTitle:@"Error" message:@"Failed to Get Your Location"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[errorAlert show];
}
}
@end
尽管文档中说了什么,但都没有调用委托(delegate)方法:
“此方法立即返回。调用此方法会导致位置管理器获取初始位置修复(可能需要几秒钟)并通过调用其 locationManager:didUpdateLocations:
方法通知您的代理 [. ..] 除了实现 locationManager:didUpdateLocations:
方法的委托(delegate)对象外,它还应该实现 locationManager:didFailWithError:
方法以响应潜在错误。"
不知道如何调试问题。
谢谢,
JA
最佳答案
只需将其添加到 info.plist 中
NSLocationAlwaysUsageDescription --- 我需要位置
NSLocationWhenInUseUsageDescription --- 我需要位置
隐私 - 位置使用说明 --- 我需要位置
请注意,应更改“我需要位置”以描述您实际应用的设计用途。它在授权消息中传达给最终用户。 (感谢@devios1)
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate=self;
locationManager.desiredAccuracy=kCLLocationAccuracyBest;
locationManager.distanceFilter=kCLDistanceFilterNone;
[locationManager requestWhenInUseAuthorization];
[locationManager startMonitoringSignificantLocationChanges];
[locationManager startUpdatingLocation];
现在它肯定会调用你的 didUpdateToLocation。
更多详情click here
关于ios - CLLocationManager startUpdatingLocation 未调用 locationManager :didUpdateLocations: or locationManager:didFailWithError:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25916841/
我的问题很简单: 这些可以吗: manager.delegate = self; [manager startUpdatingLocation]; return self; 作为 -init 方法的最
我创建了一个方法来检查授权是否正确,但是除此之外,即使授权正确,也不意味着它可以检索位置。我试图在 didFailWithError 中检查它,但它似乎被调用了两次,这使得很难发出任何类型的错误消息这
我一直在尝试获取位置坐标。在我调用 [locationManager startUpdatingLocation]; 之后没有任何反应。 它从不调用 - (void)locationManager:(
我有关于显着变化位置服务的问题。 Apple 文档说“无论您使用标准定位服务还是重大更改定位服务来获取定位事件,您接收这些事件的方式都是相同的。” 但是在“显着变化的位置服务”的情况下,我无法获得任何
对于为什么应该使用startUpdatingLocation来定位信标,我没有令人信服的答案。在后台监视/定位信标或在用户已经在区域中并开始监视信标时获取通知是否需要?出现在帖子中,说这实际上会增加电
我有一个需要在后台连续更新GPS的应用程序。我已将其命名为startUpdatingLocation,并设置了“用于位置更新的应用程序注册”,并且得到了大约15分钟的修复,然后该应用程序停止获取更新。
我注意到,在我的应用程序中,当我调用 startUpdatingLocation 时,我的 UI 会短暂锁定,同时我假设设备正在收集位置数据。这是典型的吗?有什么方法可以限制这种情况吗?这就是我的代码
我有一个特定的用例,我希望能够在应用程序已在后台时启动位置更新。具体来说,我希望能够按下我的 Pebble watch 应用程序上的一个按钮,这会导致我的配套 iOS 应用程序开始位置更新。 仅当 i
我正在尝试使用 CLLocation。每次我尝试调用 startUpdatingLocation() 方法时,当前纬度和经度的值始终为零。我在 viewDidLoad() 函数中包含了 locatio
我需要知道我是否靠近我的应用程序中保存的地理位置,范围从10 米 到500 米 在后台。我使用了 startMonitoringForSignificantLocationChange 但我没有得到准
{ ... locationManager = [[CLLocationManager alloc] init]; locationManager.delegate = self; l
所以现在我至少得到了以下代码的回调...... - (void)viewDidLoad { [super viewDidLoad]; mapView=[[MKMapView alloc] initWi
我正在尝试更改 MapView 的初始缩放位置。如果 myLocation == false,我希望初始位置为 (35,35),如果为 true,则获取当前位置。但是 startUpdatingLoc
我创建了一个应用程序 (Swift 4.0),当它接近 iBeacon 时,它会通过 startUpdatingLocation() 启动本地化。一切都很完美,无论是在前台、后台还是被杀死的应用程序。
这个问题在这里已经有了答案: StartUpdateLocations in Background, didUpdatingToLocation only called 10-20 times (
我正在尝试编写一个简单的地理定位应用程序来查找用户在 iOS 中的位置。当用户按下按钮时,会找到并显示用户的位置,并且应该在触发 startUpdatingLocation 时更改。但是 startU
我正在尝试使用 CLLocationManager 获取用户的当前位置。一切正常,但是在应用程序查找位置时有一点延迟,我需要等待它完成才能允许用户发送它。 [locationManager start
我正在创建需要在特定时间在后台唤醒的应用。 我试过了: UILocalNotification:但我不想使用 UILocalNotification,因为它需要用户交互才能点击通知,而且只有应用程序会
我一直在关注这个教程http://www.devfright.com/ios-6-core-location-tutorial/将位置服务添加到我的 ios 应用程序。我在我的 TestFileVie
override func awakeWithContext(context: AnyObject?) { super.awakeWithContext(context) // Con
我是一名优秀的程序员,十分优秀!