在iOS 8中,CLFloor返回nil。

5

我正在尝试在Swift中使用Core Location的CLFloor功能获取数据,但是一直返回nil,而我还没有成功。我已经尝试了自己编写的代码和NSHipster提供的以下代码:

import CoreLocation

class LocationManagerDelegate: NSObject, CLLocationManagerDelegate {
    func locationManager(manager: CLLocationManager!, didUpdateLocations locations: AnyObject[]!) {
        let location: CLLocation? = locations[0] as? CLLocation
        if let floor: CLFloor? = location?.floor {
            println("Current Floor: \(floor?.level)")
        }
    }
}

let manager = CLLocationManager()
manager.delegate = LocationManagerDelegate()
manager.startUpdatingLocation()

有人知道如何在设备或模拟器上使其工作吗?我相信答案会惠及很多人。如果有人知道任何关于此或CLVisit的好资源,那也会很有帮助。

3个回答

11
根据我对WWDC session 708 - Taking Core Location Indoors的理解,为了在iOS中获取楼层信息,您需要在新的苹果Maps Connect页面上手动注册并设置特定场所。因此,似乎没有自动提供楼层信息的方法(例如基于GPS的高度信息)适用于任意场所。

5

基于这两个苹果网站链接:

CLFloor Ref

CLLoaction Class Ref

讨论 如果当前位置没有楼层信息,则此属性的值为nil。

我不是Swift专家,但我认为返回nil可能意味着该位置没有楼层信息。


1
那很有道理。楼层信息必须通过其他途径设置吗? - tfrank377
1
我猜它是基于GPS位置自动完成的。还有海拔高度可能也会影响。 - iEmad

1

据我所知,iOS不会神奇地告诉你楼层的级别https://developer.apple.com/videos/wwdc/2014/?id=708。您需要以其他方式获得该数字。例如,您可以捕获一些iBeacon信号,并从中下载楼层级别数字,或在屏幕上滑动以找到您所在的正确楼层地图?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接