目前,正在开发一个应用程序,该应用程序需要从CLLocationManager获取最后一个位置(无任何常规跟踪)。不管它有多老,它都是准确的。我不需要也不想开始跟踪——我只需要从缓存中抓取最后一个位置,就这样。在iOS中,CLLocationManager是一个共享组件,如果某个应用程序使用位置跟踪,那么另一个应用程序应该能够使用CLLocationManager中的最新位置。地方只需alloc/init CLLocationManager并获取其位置就足够了。但事实并非如此。我在iPhone4上进行了测试,启动了谷歌地图,查看了我的当前位置,然后转到了我的应用程序,但在[[CLLocationManager alloc]init]之后,location属性为零。
UPDATE:尝试了[locationManager开始更新位置];和[locationManager停止更新位置];但结果是相同的。我想,唯一的解决办法就是开始定期跟踪?
UPDATE2:奇怪,但在CLLocationManager的alloc/init之后,没有“应用程序想要使用位置服务”的警报。这是我的代码片段:
CLLocationManager *locationManager = [[CLLocationManager alloc] init];
[locationManager startUpdatingLocation];
[locationManager stopUpdatingLocation];
NSLog(@"%@", locationManager.location); //prints nil
要使用CLLocationManager
,您需要在某处实现CLLocationManagerDelegate
。
-[CLLocationManager startUpdatingLocation]
启动异步进程。如果在同一个运行循环中停止该进程,则该进程将永远不会启动,这就是您从未看到“权限”对话框的原因。
它是这样的:
@interface MyClass : NSObject <CLLocationManagerDelegate> {
CLLocationManager *manager;
CLLocation *lastLocation;
}
@end
@implementation
- (id)init {
self = [super init];
if (self) {
manager = [[CLLocationManager alloc] init];
manager.delegate = self;
[manager startUpdatingLocation];
}
return self;
}
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation;
{
lastLocation = newLocation;
[manager stopUpdatingLocation];
}
// in your real implementation be sure to handle the error cases as well.
@end
首先,您应该检查您的locationManager
是否预先保存了一个,比如说,“静态”位置。
如果是,你就完了。
如果没有,您应该startUpdatingLocation
,然后在DidUpdateLocation:fromLocation:
回调中,在获得位置后,StopUpdateLocation
。
根据我的经验,这是只找到一个地点的最好方法。
更新以匹配作者更新:
您不应该在startUpdatingLocation
之后立即停止更新位置startUpdatingLocation
在后台启动服务,因此您应该等到获得位置后再调用回调方法。
我意识到这个问题以前被问过很多次,但我现在问这个问题是因为答案很旧(与新的API相比)。 我以前使用过Location Manager,但我发现它非常不可靠。例如,在我的应用程序中,使用getLastKnownLocation和/或current location,它会立即将相机加载到用户的当前位置。但是,如果我在启动应用程序之前打开设备上的位置,它就不会把摄像头放在用户的当前位置,而是放在Nig
我已经为IntelliJ安装了Camel插件。 要开始调试,我们必须创建一个临时应用程序 您如何确切地知道本地加载的端口应用程序是什么?我怎样才能改变它?我没有找到关于。。。
所以我让全球定位系统从我“按下播放”开始持续跟踪和记录我的位置。我想显示所行驶的距离、平均速度、所花费时间的上升和下降。 我正在用我的“LocationsService.java”类记录我的位置,这个类使用startLocationService(),它通过LocationCallback循环(我想)。我使用从@TDIScott获得的代码创建了一个hashmap,并将其放入列表中。 更新问题:如何
我想我找遍了所有地方,但我找不到任何图表或报告与参考交通数据。我使用的是在预览Azure门户中存储数据的最新版本。在旧的应用程序中,insights(在VS Online中)就有这个数据。 有没有人知道在新门户中是否可以找到它,以及在哪里可以找到它? 提前道谢!
我正致力于通过为我的Nexus 5创建我自己的定制ROM来更好地理解Android内部。我想,首先,我应该尝试制作一个ROM,删除Nexus 5 Lollipop factory映像中我不使用的许多应用程序。 我想摆脱的一些应用程序:适合电子邮件(此应用程序仅指向gmail)播放书籍(我是老派,我仍然喜欢纸质书籍)玩游戏玩新台 有各种.mk文件将使用PRODUCT_PACKAGES来选择要构建包含
问题内容: 我正在尝试通过“典型”权限框来获取用户的实际位置: 如果有人知道如何制作,请回答。 问题答案: 在运行时要求使用设备当前位置的权限如下: