xcode Swift iOS GoogleMaps CLLocationManager进行了更新位置未更新摄像头

vulvrdjw  于 2023-02-16  发布在  Swift
关注(0)|答案(1)|浏览(137)

我是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)
    }
    
}

这个应用程序看起来像:

我认为错的是:
我没有使用locationManagerdidUpdateLocations来更新摄像头位置,因为我不确定什么是正确的方法。在UIViewController中抛出以下代码不起作用:

func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {

        var locValue:CLLocationCoordinate2D = manager.location!.coordinate
        print(locValue)

    }

做这件事的正确方法是什么?
谢谢!

t3psigkw

t3psigkw1#

签名是错误的(它的斯威夫特2过时了很长一段时间)。
请查看documentation,当前签名为

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
    let location = locations.last!
    print(location.coordinate)
}

并且更新的位置在X1MON1X参数中。
为了避免随意更换

var manager: CLLocationManager?

let manager = CLLocationManager()

并删除manager = CLLocationManager()和问号

相关问题