我现在还没有想到这一点.
直到现在每当设备要求我使用位置更新时我都允许它.
但是现在我不允许它,位置管理器给我kclErrorDenied并且位置管理器在重新启动应用程序之前无法再次启动.
所以我的问题是,我应该给用户重新启动应用程序的消息,还是有解决方案再次开始使用位置管理器.
谢谢 .
The Error :
ERROR,Time,288787555.078,Function,"void CLClientHandleDaemonDataRegistration(__CLClient*, const CLDaemonCommToClientRegistration*, const __CFDictionary*)",server did not accept client registration 1
WARNING,Time,288787555.108,Function,"void CLClientHandleDaemonInvalidation(__CFMessagePort*, void*)",client 1308.0 has been disconnected from daemon
locationManager:didFailWithError:] [Line 244] Error Denied :Error Domain=kCLErrorDomain Code=1 "Operation could not be completed. (kCLErrorDomain error 1.)"
Run Code Online (Sandbox Code Playgroud) 我想拥有与地图应用程序相同的功能,每当用户按下"当前位置"按钮打开位置服务时,系统会提示用户:
在地图应用中,用户每次都会收到"打开位置服务..."消息.我怎样才能让我的应用程序也这样做?我让用户我正在使用一个新的CLLocationManager实例,以防这是问题,但事实并非如此.我看不到会影响这个的任何设置.
如果我自己发出警报,我就无法获得相同的"设置"按钮功能.此外,我不希望用户看到多个看起来相同的警报.
有任何想法吗?
目前,我的应用程序仅询问一次是否允许使用当前位置.如果用户不允许,除非他在一般设置中重置位置警告,否则不会再次询问.我想让用户有机会在应用程序中稍后授予此权限.换句话说,如果按下某个按钮,对话框应该再次出现.这可能吗?
谢谢你的建议.
我正在尝试构建一个iOS应用程序,显示跑步或步行时的总行驶距离.我已经阅读并重新阅读了我能找到的所有文档,但是我无法想出能够给出准确总距离的东西.
与Nike + GPS或RunKeeper相比,我的应用程序始终报告较短的距离.他们一开始会报告相同的情况,但随着我不断前进,我的应用程序与其他正在运行的应用程序的价值逐渐变化.
例如,如果我走了0.3公里(通过我的汽车里程表验证),Nike + GPS和RunKeeper每次报告约.3公里,但我的应用程序将报告〜.13公里.newLocation.horizontalAccuracy始终为5.0或10.0.
这是我正在使用的代码.我错过了一些明显的东西吗 有关如何改进这一点以获得更准确读数的任何想法?
#define kDistanceCalculationInterval 10 // the interval (seconds) at which we calculate the user's distance
#define kNumLocationHistoriesToKeep 5 // the number of locations to store in history so that we can look back at them and determine which is most accurate
#define kValidLocationHistoryDeltaInterval 3 // the maximum valid age in seconds of a location stored in the location history
#define kMinLocationsNeededToUpdateDistance 3 // the number of locations needed in history before we …Run Code Online (Sandbox Code Playgroud) 如果我startUpdatingLocation在startMonitoringSignificantLocationChanges跑步的时候打电话怎么办?significantLocationChange监控是否会停止?如果我然后stopUpdatingLocation将significantLocationChange监控继续或重启?
我找不到涵盖这两种监控位置方式之间相互作用的文档.
我有多个视图控制器需要获取用户的位置,所以我想创建一个单独的类,ViewControllers可以调用该类来获取用户的最新位置.
locationManager:didUpdateToLocation:fromLocation返回void.一旦计算出用户的纬度和经度,我如何将纬度和经度数据传回我的ViewControllers?
我可以尝试在我的locationManaging类中编写getter和setter,但是如果我这样做,我怎么知道何时从我的ViewController类中调用latitude getter和longitude getter方法?如何保持ViewController的主线程等待来自locationManaging类的纬度和经度值?
谢谢!
我有一个应用程序,它结合使用startMonitoringForRegion:并startMonitoringSignificantLocationChanges在应用程序处于后台时了解用户的位置.这是否意味着我需要location在UIBackgroundModes键中包含键的值Info.plist?
这是文档的引用:
对于不需要高精度位置数据的应用,强烈建议使用重要更改位置服务.使用此服务,仅当用户的位置发生显着变化时才会生成位置更新; 因此,它非常适合为用户提供非关键的,与位置相关的信息的社交应用或应用.如果在更新发生时暂停应用程序,系统会在后台将其唤醒以处理更新.如果应用程序启动此服务然后终止,系统会在新位置可用时自动重新启动应用程序.此服务在iOS 4及更高版本中可用,并且仅在包含蜂窝无线电的设备上可用.
...
为用户提供连续位置更新的应用程序(即使在后台)可以通过在其Info.plist文件中包含UIBackgroundModes键(具有位置值)来启用后台位置服务.在UIBackgroundModes键中包含此值并不妨碍系统暂停应用程序,但它确实告诉系统,只要有新的位置数据要传递,它就应该唤醒应用程序.因此,此密钥有效地允许应用程序在后台运行,以便在发生时处理位置更新.
我对此的解释是,只有当应用程序需要连续的位置更新时才需要密钥的location值UIBackgroundModes,例如sat导航应用程序.
我还尝试在没有密钥location值的设备上运行应用程序,UIBackgroundModes并继续报告重要的位置更改以及何时输入退出的区域.
此外,CLLocationManager类参考中UIBackgroundModes提到的唯一位置是在讨论中,我没有使用.startUpdatingLocation
我想从纬度和经度中找到当前位置名称,
这里是我的代码片段我试过,但我的日志显示,除了在所有的地方空值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
{
CLGeocoder *geocoder = [[CLGeocoder alloc] init];
[geocoder reverseGeocodeLocation:locationManager.location
completionHandler:^(NSArray *placemarks, NSError *error) {
NSLog(@"reverseGeocodeLocation:completionHandler: Completion Handler called!"); …Run Code Online (Sandbox Code Playgroud) 我正在为iOS 8开发一段Swift代码.我正在尝试做一些涉及位置的事情,所以我在我的swift视图控制器文件中实现了以下内容:
let locationManger:CLLocationManager = CLLocationManager()
var speedReceived:Double = 0
override func viewDidLoad() {
super.viewDidLoad()
locationManger.delegate = self
locationManger.desiredAccuracy = kCLLocationAccuracyBest
let authstate = CLLocationManager.authorizationStatus()
if(authstate == CLAuthorizationStatus.NotDetermined){
println("Not Authorised")
locationManger.requestWhenInUseAuthorization()
}
// Do any additional setup after loading the view, typically from a nib.
}
func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!){
var location:CLLocation = locations[locations.count - 1] as CLLocation
if(location.horizontalAccuracy > 0){
self.speedReceived = location.speed
println(self.speedReceived)
}
}
func locationManager(manager: CLLocationManager!, didFailWithError error: NSError!) {
println("Couldn't get your location") …Run Code Online (Sandbox Code Playgroud) 我要求在我当前的位置显示一个视图.如果设备旋转或位置将改变它将旋转.我研究很多,但得到所有代码,在某些位置有固定位置或角度但我没有固定位置.任何人都可以朝正确的方向开车.
我还使用了GMSMarker的旋转属性,但它不起作用.
- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading
{
if (newHeading.headingAccuracy < 0){
NSLog(@"heading accuracy < 0");
return;
}
// Convert Degree to Radian and move the needle
float oldRad = (- manager.heading.trueHeading) * M_PI / 180.0f;
float newRad = (- newHeading.trueHeading) * M_PI / 180.0f;
// Compass animation
CABasicAnimation *theAnimation;
theAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
theAnimation.fromValue = [NSNumber numberWithFloat:oldRad];
theAnimation.toValue = [NSNumber numberWithFloat:newRad];
theAnimation.duration = 0.5f;
[source.layer addAnimation:theAnimation forKey:@"animateMyRotation"];
// source.transform = CGAffineTransformMakeRotation(newRad)
// GMSMarker *source = [googleMap selectedMarker]; …Run Code Online (Sandbox Code Playgroud) objective-c google-maps-markers cllocationmanager ios gmsmapview
ios ×8
iphone ×5
objective-c ×3
cllocation ×1
gmsmapview ×1
ios5 ×1
ipad ×1
permissions ×1
swift ×1
xcode ×1