我正在尝试获取用户的纬度和经度值,但是没有调用CLLocationManagerDelegate
的方法。预先感谢任何可以帮助我解决此问题的人。
import UIKit
import CoreLocation
class ViewController: UIViewController, CLLocationManagerDelegate {
var locationmanager = CLLocationManager()
override func viewDidLoad() {
super.viewDidLoad()
locationmanager.delegate = self;
locationmanager.desiredAccuracy = kCLLocationAccuracyBest
locationmanager.requestAlwaysAuthorization()
locationmanager.startUpdatingLocation()
}
//MARK: - location delegate methods
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let userLocation :CLLocation = locations[0] as CLLocation
print("user latitude = \(userLocation.coordinate.latitude)")
print("user longitude = \(userLocation.coordinate.longitude)")
}
}
答案 0 :(得分:1)
通常可以。要访问用户的当前位置,您需要物理设备。
不过,还有第二种方法可以使用工具栏上控制台上方提供的模拟位置选项在模拟器上模拟位置。当您的应用程序运行时,此选项可用。
单击它以查看位置列表,然后选择位置以在模拟器上获取设备位置。它不是当前位置,但模拟位置会将模拟器位置设置为您选择的位置。见下图:
您还可以添加自定义GPX文件以加载当前位置。您也可以从模拟器的调试菜单添加“客户位置”。见下图:
我希望这会对您有所帮助。
答案 1 :(得分:0)
导入以下框架
Import CoreLocation
如果要显示地图
Import MapKit
您可以通过声明以下内容来确定用户的当前位置 CLLocationManager实例:
let locationManager = CLLocationManager()
在viewDidLoad()
中,您必须实例化CLLocationManager
类,
像这样:
// Ask for Authorisation from the User.
self.locationManager.requestAlwaysAuthorization()
// For use in foreground
self.locationManager.requestWhenInUseAuthorization()
if CLLocationManager.locationServicesEnabled() {
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
locationManager.startUpdatingLocation()
}
然后用CLLocationManagerDelegate
方法可以获取用户的当前
位置坐标:
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
guard let locValue: CLLocationCoordinate2D = manager.location?.coordinate else { return }
print("locations = \(locValue.latitude) \(locValue.longitude)")
}
您必须在info.plist中添加 确保设置以下隐私权限。 另外,请确保模拟器的定位服务已启用。