CLFloor在iOS 8中返回nil

时间:2014-06-21 21:03:42

标签: ios swift core-location ios8

所以我试图让Core Location中的CLFloor给我数据,而不是在Swift中返回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 个答案:

答案 0 :(得分:9)

据我了解WWDC session 708 - Taking Core Location Indoors中的说法,您需要手动注册并在新Apple的Maps Connect页面上设置特定地点才能获得iOS中的楼层信息。

因此,似乎没有办法为任意场地自动提供楼层信息(例如,基于GPS的高度信息)。

答案 1 :(得分:4)

基于Apple网站的这两个链接

CLFloor Ref

CLLoaction Class Ref

  

讨论   如果楼层信息不适用于当前位置,则此属性的值为nil。

我不是快速的专家,但我认为 return nil可能意味着该位置没有楼层信息。

答案 2 :(得分:0)

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