当前位置使用谷歌地图和斯威夫特



我需要显示我当前的真实位置。我使用这两个教程作为参考: 谷歌地图 SDK iOS 和 雷·温德利希。

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

我将Privacy - Location When In Use Usage DescriptionLSApplicationQueriesSchemes添加到我的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 条目。

相关内容

  • 没有找到相关文章

最新更新