我正在尝试查看用户的位置是否已更新。我尝试了许多不同的听众,但我似乎无法弄清楚。 测试用户位置是否已更新的最有效和高效的方法是什么?
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let location = locations[0]
let lat = location.coordinate.latitude
let long = location.coordinate.longitude
print(lat, long)
let currentLocation = CLLocationCoordinate2DMake(lat, long)
let lastLocation = CLLocationCoordinate2DMake((locations.last?.coordinate.latitude)!, (locations.last?.coordinate.longitude)!)
let camera = GMSCameraPosition.camera(withLatitude: lat, longitude: long, zoom: 15)
self.mapView.animate(to: camera)
let geocoder = GMSGeocoder()
if currentLocation.latitude != lastLocation.latitude || currentLocation.longitude != lastLocation.longitude {
let alertController = UIAlertController(title: "Location Update", message: "Current location has been updated", preferredStyle: .alert)
let defaultAction = UIAlertAction(title: "OK", style: .cancel, handler: nil)
alertController.addAction(defaultAction)
self.present(alertController, animated: true, completion: nil)
} else {
print("no update change")
}
geocoder.reverseGeocodeCoordinate(currentLocation) { (response, error) in
if let address = response?.firstResult() {
let lines = address.lines!
self.currentLocationLabel.text = lines.joined(separator: "\n")
}
}
// self.manager.stopUpdatingLocation()
}
最佳答案
我想您只是想获取用户在 map 上的位置,对吧? 您可以从 map View 中获取用户的位置,您可以在 didUpdateLocation 中执行此操作
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
if let mylocation = mapview.myLocation{
//animate the mapview to user's location
let lat = mylocation.coordinate.latitude
let long = mylocation.coordinate.longitude
let camera = GMSCameraPosition.camera(withLatitude: lat, longitude: long, zoom: 14.0)
mapview.camera = camera
mapview.animate(to: camera)
}
}
希望对您有所帮助。
关于ios - Swift 3 Google Map 和 MapKit API - 如果用户当前位置已更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44815056/