当前位置使用 Google 地图和 Swift

Current Location using Google Maps and Swift

我需要显示我当前的真实位置。我使用这两个教程作为参考: Google Maps SDK iOSRay Wenderlich.

都没有帮我显示我当前的真实位置它显示了 Apple 的位置。

我在 info.plist 文件中添加了 Privacy - Location When In Use Usage DescriptionLSApplicationQueriesSchemes

我的代码有什么问题?

如何添加带有当前位置的标记?

我的代码:

AppDelegate.swift

import GoogleMaps
import GooglePlaces
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    GMSServices.provideAPIKey("AIzaSyCNcYUEURD7DSk6qksdKyp63w-ZetdWQZc")
    GMSPlacesClient.provideAPIKey("AIzaSyCNcYUEURD7DSk6qksdKyp63w-ZetdWQZc")
    return true
}

ViewController.swift

import UIKit
import GoogleMaps
import GooglePlaces

class ViewController: UIViewController {

    @IBOutlet weak var mapView: GMSMapView!
    private var locationManager = CLLocationManager()


    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.

        locationManager.delegate = self
        locationManager.requestWhenInUseAuthorization()
    }
 }

 extension ViewController: CLLocationManagerDelegate {
// 2
func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {
    // 3
    guard status == .authorizedWhenInUse else {
        return
    }
    // 4
    locationManager.startUpdatingLocation()

    //5
    mapView.isMyLocationEnabled = true
    mapView.settings.myLocationButton = true
}

// 6
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
    guard let location = locations.first else {
        return
    }

    // 7
    mapView.camera = GMSCameraPosition(target: location.coordinate, zoom: 15, bearing: 0, viewingAngle: 0)

    // 8
    locationManager.stopUpdatingLocation()
  }
}

如果您 运行 在模拟器中进行此操作,您将获得预设位置之一。您可以通过转到 DEBUG > Location > select preset or custom 来更改模拟器位置。 如果您想将模拟器的位置设置为您的当前位置,请转到 maps.google.com 右键单击​​地图和 select "What's here?",它会给您 lat/long。从上面的设置中将它们复制并粘贴到 "custom location" 中。

如果您 运行 在实际设备上,您将获得设备位置,假设您已请求所有正确的权限并设置 info.plist 条目。