无法看到位置:[CLLocation]
unable to see locations: [CLLocation]
info.plist 文件:
<key>NSLocationWhenInUseUsageDescription</key>
<string>This project would like to know your location</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>location when app is in background</string>
如上所示,为 info.plist
添加了 key/value 对
我面临的问题是,我第一次 运行 应用程序提示我授权,但在随后的运行中,弹出窗口没有出现。
其次,我正在尝试打印来自
的位置
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation])
使用 print(location)
但未打印任何内容。
在调试选项中我将位置设置为 "city bicycle ride"
我使用的代码如下。
import UIKit
import MapKit
import CoreLocation
class ViewController: UIViewController, MKMapViewDelegate , CLLocationManagerDelegate {
@IBOutlet var map: MKMapView!
//use the locManager to get the users location
var locManager = CLLocationManager()
override func viewDidLoad() {
locManager.delegate = self
locManager.desiredAccuracy = kCLLocationAccuracyBest
locManager.requestWhenInUseAuthorization()
super.viewDidLoad()
}
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
print(locations)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
iOS 只会请求 一次 位置授权。如果用户拒绝,他将不得不在设备设置中手动更改此设置。如果他同意,您将能够获取该位置,直到他在设备设置中阻止它。
所以这段代码:
locManager.requestWhenInUseAuthorization()
只会弹出 1 次。问题是您可能忘记调用:
locManager.startUpdatingLocation()
每次要开始获取位置都需要调用这个。
使用这个
override func viewDidLoad() {
super.viewDidLoad()
locationManager.delegate = self
locationManager.requestLocation()
locationManager.requestWhenInUseAuthorization()
locationManager.requestAlwaysAuthorization()
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.startUpdatingLocation()
}
info.plist 文件:
<key>NSLocationWhenInUseUsageDescription</key>
<string>This project would like to know your location</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>location when app is in background</string>
如上所示,为 info.plist
添加了 key/value 对我面临的问题是,我第一次 运行 应用程序提示我授权,但在随后的运行中,弹出窗口没有出现。
其次,我正在尝试打印来自
的位置
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation])
使用 print(location)
但未打印任何内容。
在调试选项中我将位置设置为 "city bicycle ride"
我使用的代码如下。
import UIKit
import MapKit
import CoreLocation
class ViewController: UIViewController, MKMapViewDelegate , CLLocationManagerDelegate {
@IBOutlet var map: MKMapView!
//use the locManager to get the users location
var locManager = CLLocationManager()
override func viewDidLoad() {
locManager.delegate = self
locManager.desiredAccuracy = kCLLocationAccuracyBest
locManager.requestWhenInUseAuthorization()
super.viewDidLoad()
}
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
print(locations)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
iOS 只会请求 一次 位置授权。如果用户拒绝,他将不得不在设备设置中手动更改此设置。如果他同意,您将能够获取该位置,直到他在设备设置中阻止它。
所以这段代码:
locManager.requestWhenInUseAuthorization()
只会弹出 1 次。问题是您可能忘记调用:
locManager.startUpdatingLocation()
每次要开始获取位置都需要调用这个。
使用这个
override func viewDidLoad() {
super.viewDidLoad()
locationManager.delegate = self
locationManager.requestLocation()
locationManager.requestWhenInUseAuthorization()
locationManager.requestAlwaysAuthorization()
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.startUpdatingLocation()
}