我需要显示我当前的真实位置。我使用这两个教程作为参考: 谷歌地图 SDK iOS 和 雷·温德利希。
两者都没有帮助我显示我当前的真实位置,它显示了Apple的位置。
我将Privacy - Location When In Use Usage Description
和LSApplicationQueriesSchemes
添加到我的info.plist
文件中。
我的代码有什么问题?
如何添加包含当前位置的标记?
我的代码:
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()
}
}
如果您在模拟器中运行它,您将获得预设位置之一。 可以通过转到"调试">"位置">选择"预设"或"自定义"来更改模拟器位置。 如果要将模拟器的位置设置为当前位置,请转到 maps.google.com 右键单击地图并选择"这里有什么?",它将为您提供纬度/经度。将它们复制并粘贴到上述设置中的"自定义位置"中。
如果在实际设备上运行,则会获取设备位置,假设您已请求所有正确的权限并设置 info.plist 条目。