Я понимаю, что есть много других страниц, которые пытаются решить проблему определения местоположения пользователя с помощью CLLocationManager()
в ios swift, но они не работают для меня, поэтому я создал этот вопрос.Мой код ниже которого, я считаю, правильно реализует CLLocationManagerDelegate
, но вызов locationManager.startUpdatingLocation()
никогда не вызывает функцию locationManager
.Это делает Google Map просто открытой для случайной позиции.Я смоделировал некоторые местоположения в схеме, и они прекрасно работают, например, Южная Африка
пример карты Google с имитированным местоположением:
Однако, когда я снимаю отметкусимуляция, местоположение никогда не найдено.Любой совет или помощь будут оценены.Не уверен, что это проблема с моим компьютером или кодом.
import UIKit
import GoogleMaps
class Map: UIViewController, CLLocationManagerDelegate {
var mapView: GMSMapView?
let locationManager = CLLocationManager()
override func viewDidLoad() {
super.viewDidLoad()
self.mapView = GMSMapView.map(withFrame: CGRect.zero, camera: GMSCameraPosition.camera(withLatitude: 40.7, longitude: -74.0, zoom: 4.0))
view = mapView
if (CLLocationManager.locationServicesEnabled()){
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
locationManager.requestWhenInUseAuthorization()
locationManager.startUpdatingLocation()
}
}
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let center = CLLocationCoordinate2D(latitude: locations.last!.coordinate.latitude, longitude: locations.last!.coordinate.longitude)
let camera = GMSCameraPosition.camera(withLatitude: center.latitude, longitude: center.longitude, zoom: 4.0);
self.mapView?.camera = camera
self.mapView?.isMyLocationEnabled = true
let marker = GMSMarker(position: center)
print("Latitude :\(center.latitude)")
print("Longitude :\(center.longitude)")
marker.map = self.mapView
marker.title = "Current Location"
locationManager.stopUpdatingLocation()
}
}