我是iOS新手,正在使用swift 5.7.2和XCode 14.2构建一个非常简单的iOS。
这款应用基本上需要在用户的设备四处移动时显示谷歌Map视图。我已经成功地创建了视图并启用了位置服务,现在Map上显示了我的位置。蓝色图标还可以在我四处移动时跟踪我的位置。
然而,即使代表我的位置的蓝色图标四处移动,Map本身并不四处移动,如果我走得足够远,这可能会导致我的位置在Map之外。
我的UIViewController是:
import UIKit
import AVKit
import GoogleMaps
import CoreLocation
class ViewController: UIViewController, CLLocationManagerDelegate {
var manager: CLLocationManager?
override func viewDidLoad() {
super.viewDidLoad()
manager = CLLocationManager()
manager?.delegate = self
manager?.desiredAccuracy = kCLLocationAccuracyBest
manager?.requestAlwaysAuthorization()
manager?.startUpdatingLocation()
let currentCoordinate = manager?.location?.coordinate
let viewBounds = self.view.bounds
let screenCenter = CGPoint(x: viewBounds.midX, y: viewBounds.midY)
let camera = GMSCameraPosition.camera(withLatitude: currentCoordinate?.latitude ?? 51.0447, longitude: currentCoordinate?.longitude ?? -114.0719, zoom: 9.0)
let navView = GMSMapView.map(withFrame: CGRect(x: 130, y: 10, width: viewBounds.maxX - 135 * 2, height: viewBounds.maxY - 20), camera: camera)
navView.isMyLocationEnabled = true
self.view.addSubview(navView)
}
}
这个应用程序看起来像:
我认为错的是:
我没有使用locationManager
的didUpdateLocations
来更新摄像头位置,因为我不确定什么是正确的方法。在UIViewController
中抛出以下代码不起作用:
func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {
var locValue:CLLocationCoordinate2D = manager.location!.coordinate
print(locValue)
}
做这件事的正确方法是什么?
谢谢!
1条答案
按热度按时间t3psigkw1#
签名是错误的(它的斯威夫特2过时了很长一段时间)。
请查看documentation,当前签名为
并且更新的位置在X1MON1X参数中。
为了避免随意更换
与
并删除
manager = CLLocationManager()
和问号