【问题标题】:Google Maps SDK with Swift, myLocation can be nil带有 Swift 的 Google Maps SDK,myLocation 可以为 nil
【发布时间】:2015-08-10 14:17:32
【问题描述】:
我正在使用适用于 iOS 的 Google Maps SDK,并且想知道用户的当前位置。根据文档,如果没有可用的位置,GMSMapView 上的 myLocation 属性将返回 nil 值:
如果启用“我的位置”,则显示用户位置点的位置
被绘制。如果它被禁用,或者它被启用但没有位置数据
可用,这将为 nil。
但是,当使用 Swift 时,如果无法检查 nil,因为该字段被声明为非 nil。当然,如果该字段在运行时为 nil,则意味着应用程序将崩溃。
有谁知道如何解决这个问题?我想知道位置是否不为零,如果不是,请在我的代码中使用该值。
【问题讨论】:
标签:
ios
swift
google-maps
【解决方案1】:
不可能检查 nil
这是不正确的。 myLocation 是一个隐式展开的可选,可以与nil 进行比较,例如
let location = self.mapView.myLocation
if location != nil {
// Use location ...
}
【解决方案2】:
看起来您可以使用键值编码来做到这一点。
// Will *not* work as 'myLocation' declared as non-nil
if let location = self.mapView.myLocation {
...
}
// Works using KVO.
if let location = self.MapView.valueForKeyPath("myLocation") as? CLLocation {
...
}