【发布时间】:2016-08-03 15:46:53
【问题描述】:
我有一个应用程序需要不断更新用户的位置,以便我可以显示他们当前的坐标和高度。我正在使用 didUpdateLocations 函数执行此操作:
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
if let location = locations.last {
mapView.camera = GMSCameraPosition(target: locationManager.location!.coordinate, zoom: 15, bearing: 0, viewingAngle: 0)
let locValue : CLLocationCoordinate2D = manager.location!.coordinate
let altitude : CLLocationDistance = Double(round(1000*manager.location!.altitude)/1000)
let long = Double(round(10000*locValue.longitude)/10000)
let lat = Double(round(10000*locValue.latitude)/10000)
let alt = String(altitude) + " m"
latitudeLabel.text = String(lat)
longitudeLabel.text = String(long)
altitudeLabel.text = alt
showLearningObjectsWithinRange(location)
}
}
问题是,当我尝试放大地图上的某个位置时,如果我稍微移动设备,相机就会再次缩小。显然这是因为我的 didUpdateLocations 函数中的第一行设置了相机位置,但是如果我删除该行,地图根本不会以它们的位置为中心。
我尝试将 GMSCameraPosition 代码移动到 viewDidLoad、viewWillAppear 和其他几个地方,但这会导致应用崩溃,因为它无法及时找到用户。
有人对如何进行这项工作有任何建议吗?谢谢。
【问题讨论】:
-
zoom: 15 ,使用 map.camera.zoom 或查看文档,以便更新位置时缩放不会改变
标签: ios swift google-maps