标签: cllocation

在 iphone SDK 中获取我所在位置的海拔高度(海平面的高度)

我试图在我的应用程序中获取我所在位置的海拔高度。但是每次我尝试对象的altitude属性时,CLLocation我都会得到0.00结果。

我用谷歌搜索我的查询,我在这里这里得到了一个类似的问题。此链接表示,如果我使用 wifi 或蜂窝塔访问 CLLocation,它将为空。即使我尝试设置desireAccuracy为最佳,也不能确保该应用程序将使用 GPS。它还说如果我在室内,我将无法访问 GPS。

在很多情况下,它不确定该应用程序将仅使用 GPS。我也想要一些从 wifi 或手机信号塔获取 Altitude 的方法。为此,我搜索了更多,并获得了Google Earth API,但我认为这仅适用于 Microsoft .net 技术。

现在根据这种情况,我认为对于一个解决方案,我可以在 Microsoft Technology 中创建一个 Web 服务并在那里传递我的位置,我可以获得高度作为响应,但我不想这样做。

谁能建议我如何从ios获取我的位置高度。有没有什么方法可用或不可用?如果是,请导航我正确的方向。

提前致谢。

编辑1

我用于CLLocationManager更新位置,当我得到我的位置时,我需要高度。

编辑2

根据@fishinear 的回答,我尝试了以下代码:

- (void)viewDidLoad
{
    [super viewDidLoad];
    manager = [[CLLocationManager alloc] init];
    [manager setDesiredAccuracy:kCLLocationAccuracyBestForNavigation];
    [manager setDistanceFilter:kCLDistanceFilterNone];
    [manager setDelegate:self];
    [manager startUpdatingLocation];
// Do any additional setup after loading the view, typically from a nib.
}

- …
Run Code Online (Sandbox Code Playgroud)

iphone gps cllocation altitude

5
推荐指数
1
解决办法
1万
查看次数

我可以获得iOS中GPS定位的准确性吗?

我见过Android开发人员可以获得GPS位置的准确性.有没有办法让我在iOS中获得我当前GPS定位的准确性?

我正在使用答案中的代码来获取我的位置:

 locationManager = [[CLLocationManager alloc] init];
 locationManager.delegate = self;
 locationManager.distanceFilter = kCLDistanceFilterNone;
 locationManager.desiredAccuracy = kCLLocationAccuracyBest;
 [locationManager startUpdatingLocation];


 - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
     NSLog(@"OldLocation %f %f", oldLocation.coordinate.latitude, oldLocation.coordinate.longitude);
     NSLog(@"NewLocation %f %f", newLocation.coordinate.latitude, newLocation.coordinate.longitude);
 }
Run Code Online (Sandbox Code Playgroud)

iphone gps cllocationmanager cllocation ios

5
推荐指数
2
解决办法
6611
查看次数

我们可以在后台重新启动应用程序以更改位置吗?强制退出背景后

我要求如果我的应用程序从后台模式终止,之后如果发生任何重要的位置更改,它应该以后台模式启动.这就是文件中的确切陈述startMonitoringSignificantLocationChanges

如果您启动此服务并且您的应用程序随后终止,则系统会在新事件到达时自动将应用程序重新启动到后台.在这种情况下,传递给应用程序的选项字典:didFinishLaunchingWithOptions:应用程序委托的方法包含密钥UIApplicationLaunchOptionsLocationKey,以指示您的应用程序是由于位置事件而启动的.重新启动后,您仍必须配置位置管理器对象并调用此方法以继续接收位置事件.重新启动位置服务时,会立即将当前事件传递给您的代理.此外,即使在启动位置服务之前,也会使用最新的位置对象填充位置管理器对象的位置属性.

所以我把这段代码

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

 if ([CLLocationManager significantLocationChangeMonitoringAvailable]) {
        // Stop normal location updates and start significant location change updates for battery efficiency.
        [viewController.locationManager stopUpdatingLocation];
        [viewController.locationManager startMonitoringSignificantLocationChanges];

        //NSLog(@"significantLocationChangeMonitoringAvailable.");
    }
    else {
        //NSLog(@"Significant location change monitoring is not available.");
    }
}
Run Code Online (Sandbox Code Playgroud)

之后,虽然我试图在漫游之后改变我的位置,但它还没有在后台模式中重新启动.

我在这里遗失或误导的是什么?该应用程序没有在后台重新启动

有什么建议?

编辑2013年7月12日

经过这么多次试验后,我发现应用程序在使用崩溃日志重新启动后立即崩溃

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0:
0   libsystem_kernel.dylib          0x3ba3feb4 mach_msg_trap + 20
1   libsystem_kernel.dylib          0x3ba40048 mach_msg + 36
2   CoreFoundation                  0x337ff040 __CFRunLoopServiceMachPort + 124
3   CoreFoundation                  0x337fdd9e __CFRunLoopRun …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c core-location cllocationmanager cllocation

5
推荐指数
1
解决办法
861
查看次数

iBeacon在前景中使用静态库

我已经创建了一个框架,负责注册CLBeaconRegions,并在范围内时,对CLBeacons进行测距,然后发送UILocalNotification.当我使用实际的类编译应用程序时,它应该工作,但是当我在胖静态库中编译应用程序时,它不会.

框架的作用:1.CLBeaconRegion的EnterRegion事件2.开始测距3.范围信标4.提供UILocalNotification

在具有实际类的应用程序中测试它时,它在前台和后台都有效.

在具有胖库的应用程序中测试时,它在后台运行,有时仅在前台运行.

知道这可能是什么问题吗?

static-libraries cllocation ios ibeacon

5
推荐指数
0
解决办法
100
查看次数

iOS 定位准确度

您好,我正在 iOS 应用程序中使用位置,我设置的精度如下:

 locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters
Run Code Online (Sandbox Code Playgroud)

我正在使用这个函数来检查准确性

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
    print(manager.location!.horizontalAccuracy)

    if locations.last!.horizontalAccuracy <= manager.desiredAccuracy{
        print(manager.location)
        location = locations.last!
        locationManager.stopUpdatingLocation()
        locationManager = nil           
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是精度叠加到 1414 而永远不会达到 100。有什么方法可以解决这个问题吗?

cllocationmanager cllocation ios swift

5
推荐指数
1
解决办法
9358
查看次数

CLLocation 如何实现 Equatable 协议?

在回答关于 SO 的另一个问题时,我发现CLLocation该类符合Equatable协议。它使用什么方法来确定相等性?

纬度/经度的精确匹配?纬度/经度和高度的精确匹配?纬度、经度、高度和时间戳的精确匹配?速度和路线呢?什么CLLocation是单纯用纬度/经度对创建的对象?位置的各种其他值不是可选的,那么使用创建的位置的海拔高度是init(latitude:longitude:)多少?

cllocation ios swift equatable

5
推荐指数
1
解决办法
819
查看次数

使用 Swift 将 CLLocationCoordinate2d 转换为街道地址

我试图将 CLLocationCoordinates2d 坐标转换为物理街道地址。

我试过 CLGeocoder 没有运气。这是我提供纬度和经度坐标的代码。

    let manager = CLLocationManager()

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation])
{

    guard let locValue: CLLocationCoordinate2D = manager.location?.coordinate else { return }
    print("locations = \(locValue.latitude) \(locValue.longitude)")
    // let locationtext = "locations = \(locValue.latitude) \(locValue.longitude)"
    locationTxt.text = "\(locValue.latitude) \(locValue.longitude)"

}
Run Code Online (Sandbox Code Playgroud)

谢谢!

xcode reverse geocoding cllocation swift

5
推荐指数
1
解决办法
6232
查看次数

CLLocationManager protectedRegions 导致 iOS 12 上崩溃

我们在代码中使用函数 CLLocationManager protectedRegions

public func getMonitoredRegions() -> Set<CLRegion> {
        return locationManager.monitoredRegions
    }
Run Code Online (Sandbox Code Playgroud)

我们以这种方式使用这个函数

for region in locationManager.getMonitoredRegions() where condition(region) {
   ...
}
Run Code Online (Sandbox Code Playgroud)

我们注意到,当使用以下 Crashlytics 日志调用 CLLocationManager protectedRegions 时,我们的应用程序崩溃了:

#12. Crashed: our.queue.name.here
EXC_BAD_ACCESS KERN_PROTECTION_FAILURE 0x000000016aecffe0

0  libsystem_malloc.dylib         0x191d9bfb4 nanov2_malloc$VARIANT$armv81 + 138
1  libsystem_malloc.dylib         0x191d9c540 nanov2_calloc$VARIANT$armv81 + 136
2  libsystem_malloc.dylib         0x191da9b74 malloc_zone_calloc + 140
3  libsystem_malloc.dylib         0x191daa3fc calloc + 40
4  libobjc.A.dylib                0x1913ac554 class_createInstance + 72
5  libdispatch.dylib              0x191c05ad8 _os_object_alloc_realized + 40
6  libdispatch.dylib              0x191bd9594 <redacted> + 108
7  libdispatch.dylib              0x191bd78ac <redacted> …
Run Code Online (Sandbox Code Playgroud)

core-location cllocationmanager cllocation ios swift

5
推荐指数
0
解决办法
772
查看次数

如何删除cllocation的缓存?

我正在开发一个iPhone应用程序,这是一个位置感知应用程序.Currentlly应用程序正常工作,除了以前位置的缓存.我第一次启动应用程序位置管理器获取当前位置,然后根据当前位置显示附近的内容.

但从下一个它使用以前获取的位置,直到我重新启动手机它将获取相同的位置.所以到目前为止,我很清楚位置管理器会缓存该位置.

所以我的问题是如何删除此缓存并强制位置管理器获取新位置谢谢

iphone caching cllocation

4
推荐指数
1
解决办法
3703
查看次数

使用负值计算'timeIntervalSinceNow'(CLLocation示例)?

我不明白这个例子来自doc:timeIntervalSinceNow方法应该显示一个正值,但是我们怎么能达到代码中提到的"5"?(我认为它或者更多或更少,或者-10,-20,-30等...但是我们怎样才能获得正值,例如5?):

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
    // test the age of the location measurement to determine if the measurement is cached
    // in most cases you will not want to rely on cached measurements
    NSTimeInterval locationAge = -[newLocation.timestamp timeIntervalSinceNow];
    if (locationAge > 5.0) return;
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助

objective-c nstimeinterval cllocation

4
推荐指数
1
解决办法
9525
查看次数