如何使用Google Map SDK for iOS使用myLocation?

问题描述:

我使用Google Map SDK在Xcode中制作单一视图应用程序。我在网上遵照指示,我的应用程序可以成功加载谷歌地图视图。我还启用了myLocation,以便myLocation按钮在地图视图中显示。我明白,单击myLocation按钮会自动更改摄像机位置,但我想知道如何使用myLocation的数据(比如添加标记或添加路径节点)?如何使用Google Map SDK for iOS使用myLocation?

我试过直接访问mapView.myLocation,例如

let lat = mapView.myLocation?.coordinate.latitude 
let long = mapView.myLocation?.coordinate.longitude 
path.addCoordinate(CLLocationCoordinate2D(latitude: lat!, longitude: long!)) 

但这会崩溃的一个应用,并抛出“致命错误:意外发现零而展开的可选值”。 这个错误信息告诉我什么?我该如何解决这个问题?

+0

您是否有权获取用户位置?请在“我的位置”部分试用此代码https://developers.google.com/maps/documentation/ios-sdk/map#accessibility – UlyssesR

+0

@UlyssesR感谢您的评论!我试过这段代码,结果是“用户位置未知”。但是我对此感到困惑,因为应用程序使用蓝点显示我的当前位置,并且myLocation按钮正常工作。 – CatSensei

错误提示mapView的myLocation属性为零。在访问它之前,您应该检查是否有值。

if let myLocation = mapView.myLocation { 
    let lat = myLocation.coordinate.latitude 
    let long = myLocation.coordinate.longitude 
    path.addCoordinate(CLLocationCoordinate2D(latitude: lat, longitude: long)) 
} 

另外验证为什么myLocation为零。可能是用户不允许定位服务。

+0

谢谢你的回答!我相信我已打开位置服务,因为应用程序使用蓝点显示我的当前位置,并且myLocation按钮正常工作。为什么myLocation变量在这种情况下是零? – CatSensei

+0

@CatSensei编辑你的问题,并显示你的myLocation按钮的代码。这可能有助于清除一些问题,并且在引用时总是尝试包含其他代码。 – MwcsMac