Tag: cllocationmanager

应用程序终止/暂停时的背景用户位置

我一直在试图找出如何获得用户的位置,当应用程序被终止,如应用程序Moves做到这一点。 我知道这样做的唯一方法是显着的位置变化。 然而,由于地理位置发生重大变化,应用程序只能在距离最近一次更新大约5分钟的情况下,每隔500米唤醒一次。 据苹果介绍: 一旦设备从先前的通知移动500米或更远,应用程序就可以预期发出通知。 它不应该比每五分钟一次更频繁地发出通知。 如果设备能够从networking中检索数据,则位置pipe理者更可能及时地发送通知。 在移动应用程序中,即使应用程序被终止,也能够非常准确地检索用户的位置,而不会在电池中产生太多的stream失。 它也似乎没有打开背景位置,因为它在电池使用清单中的原因只显示“后台活动”。 所以我想知道像Moves这样的应用是如何做到这一点的。 任何帮助将是伟大的! 谢谢。

从iOS的经纬度获取位置名称

我想从经纬度中find当前的位置名称, 这是我尝试的代码片段,但我的日志显示空值除了在placemark , placemark.ISOcountryCode和placemark.country 我想要placemark.locality和placemark.subLocality值,但它显示空值。 – (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; // this creates the CCLocationManager that will find your current location locationManager = [[CLLocationManager alloc] init]; locationManager.delegate = self; locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters; [locationManager startUpdatingLocation]; } // this delegate is called when the app successfully finds your current location – (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation […]

CLLocationManager响应

我有一个应用程序围绕着设备的GPS和来自它的信息。 位置数据准确和最新是非常重要的。 我知道设备受到GPS和GPS的限制,但是我想知道是否有什么可以调整/改善iPhone GPS的性能,特别是在速度方面。 由于位置更新滞后于设备实时位置约3-5秒,所以位置pipe理器报告的速度也落后于实时值。 就我而言,这太长了。 我明白,可能没有什么我可以做的,但有没有人在提高iPhone GPS的响应能力方面取得任何成功? 每一点点都有所作为 编辑1: 正如苹果推荐的,我的位置pipe理器是在单例类中。 在SingletonDataController.m里面: static CLLocationManager* locationManager; locationManager = [CLLocationManager new]; locationManager.distanceFilter = kCLDistanceFilterNone; locationManager.headingFilter = kCLHeadingFilterNone; if(([[UIDevice currentDevice] batteryState] == UIDeviceBatteryStateCharging) || ([[UIDevice currentDevice] batteryState] == UIDeviceBatteryStateFull)) { locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation; } else { locationManager.desiredAccuracy = kCLLocationAccuracyBest; } [sharedSingleton setLocationManager:locationManager]; [locationManager release]; 在MapView.m中(实际使用位置pipe理器的地方): – (id)initWithNibName:(NSString*)nibNameOrNil bundle:(NSBundle*)nibBundleOrNil […]

CLLocationManager和准确性问题 – 任何经验?

所以我正在处理iPhone GPS的一些准确性问题。 我有一个使用位置的应用程序。 在委托方法locationManager: didUpdateToLocation: fromLocation:我正在返回一个位置。 从一些研究来看,即使将desiredAccuracy属性设置为desiredAccuracy ,GPS返回的第一个结果也并不总是准确的。 为了解决这个问题,我不会在返回newLocation:之前调用stopUpdatingLocation newLocation:至less3次(这非常快)。 我还玩过了另外两个关于是否stopUpdatingLocation并返回newLocation “要求”。 我尝试的一种方法是检查纬度和长期的newLocation并与oldLocation比较,如果这些不相同,然后保持位置更新运行。 我也尝试检查oldLocation和newLocation之间的距离,如果它不到20米,那oldLocation 。 这两个testing与返回至less3次运行。 后一种方式不太“严格”,因为如果用户在移动的车辆中,新位置和oldLocation位置相当难以100%相同。 现在,我的问题是,即使在做上述(基本上不接受一个位置,直到在CLLocationManager几个更新,并检查CLLocations之间的距离(或是否相同),我仍然看到有点奇怪的结果的位置有时在testing时。 如果我离开应用程序,进入Maps.app,使用GPS,然后打开多任务处理,强制退出我的应用程序,然后重新打开以获得干净的启动,这将有时会修复。 人们用来解决同样问题的任何经验和可能的解决scheme? 评论和解决scheme赞赏:)

使用MKMapView时如何设置精度和距离filter

当我用MKMapView setShowsUserLocation跟踪用户的位置,我该如何设置精度和距离filter? 我不是在谈论CLLocationManager 。 谢谢,

在Swift中反转地理编码位置

我的input是一个经纬度。 我需要使用swift的reverseGeocodeLocation函数,给我地方的输出。 我试过的代码是 println(geopoint.longitude) println(geopoint.latitude) var manager : CLLocationManager! var longitude :CLLocationDegrees = geopoint.longitude var latitude :CLLocationDegrees = geopoint.latitude var location: CLLocationCoordinate2D = CLLocationCoordinate2DMake(latitude, longitude) println(location) CLGeocoder().reverseGeocodeLocation(manager.location, completionHandler: {(placemarks, error) -> Void in println(manager.location) if error != nil { println("Reverse geocoder failed with error" + error.localizedDescription) return } if placemarks.count > 0 { let pm […]

iOS CLLocationManager在一个单独的类

我有多个视图控制器需要获取用户的位置,所以我想创build一个单独的类,ViewControllers可以调用获取用户的最新位置。 locationManager:didUpdateToLocation:fromLocation返回void。 一旦用户的经度和纬度被计算出来,我怎样才能将纬度和经度数据传回给我的ViewControllers? 我可以尝试在我的locationManaging类中写入getter和setter,但是如果我这样做,我怎么知道何时从我的ViewController类调用纬度getter和longitude getter方法? 如何让ViewController的主线程等待locationManaging类的纬度和经度值? 谢谢!

如何提示用户再次打开位置服务…

我想要具有与Map应用程序相同的function,在每次按“当前位置”button时都会提示用户,以便在closures位置服务时启用它们: closures位置服务 用户按下“getCurrentLocation”button 应用程序尝试使用CLLocationManager获取位置 用户获取“打开位置服务…”消息,显示“设置”和“取消”button。 用户点击“取消” 用户再次按下“getCurrentLocation”button 应用程序尝试再次使用CLLocationManager获取位置 用户不会再收到“打开位置服务…”消息 在地图应用程序中,用户每次都会收到“打开位置服务…”消息。 我如何让我的应用程序做同样的事情? 我让用户我正在使用一个新的CLLocationManager实例,万一是这个问题,但事实并非如此。 我看不到任何会影响此设置的设置。 如果我自己提醒,我无法获得相同的“设置”buttonfunction。 此外,我不希望用户看到相同的多个警报。 有任何想法吗?

使用iOS Geofencing跟踪多个(20+)位置

iOS应用程序使用地理围栏来通知用户预定义的附近位置。 允许应用程序错过某个位置(用户没有收到关于附近位置的通知),但希望保持低丢失率。 实现这一点的一种方法是开始监控重要的变更地点,并使用startMonitoringSignificantLocationChanges和每次“地点变更”事件被触发时,在报告地点的半径500m内寻找地点。 我担心的是每次发生重大的位置变化时都要对附近的区域进行查询,这会影响电池。 另一种方法是使用startMonitoringForRegion注册位置,但是苹果已经对同时跟踪的区域的数量进行了(合理的)限制,这个数量是20,而且我们有20多个位置。 因此,需要对跟踪区域进行某种dynamic更新,但我仍然不确定最好的方法是什么。 关于如何做到这一点的任何想法,以保持电池消耗低,但也有低失踪率的位置?

iOS 7上的区域监视故障 – 同时显示多个通知

我一直在iOS上开发区域监控大约2个月。 最近我们发现一个小故障,一个半径范围内(大约4.7KM或4700米)的所有地区同时触发。 该设备的当前位置甚至没有接近任何地区。 我不知道是什么引发了这个事件。 我已经通过StackOverFlow,苹果开发者论坛等进行了search,我还没有发现任何类似的问题,我所面临的。 在我正在开发的应用程序中,我们正在监控市内的8个区域(吉隆坡)。 有一次,我的同事发现有4个地区的通知同时在他的电话上触发。 下面是显示他的位置,所有监控区域,触发4区域通知的潜在半径的地图。 绿色标记是设备接收通知时的位置。 蓝圈是设备的潜在半径(大约4700米),覆盖了向设备发送通知的4个区域。 红圈是每个区域的半径。 地图上还有另外两个地区永远不会发送通知(从不遮盖蓝色圆圈) 触发通知的屏幕截图 : 这是我的位置pipe理器代码 : CLLocationManager *locationManager = [LocationTracker sharedLocationManager]; locationManager.delegate = self; locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation; locationManager.distanceFilter = kCLDistanceFilterNone; 这是我的代码didEnterRegion : – -(void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region{ NSString* message = [NSString stringWithFormat:@"Message"]; UIApplicationState state = [[UIApplication sharedApplication] applicationState]; if (state == UIApplicationStateBackground || state == […]