我不为它提供一个代码表示歉意。我之所以用图像贴吧,因为Xcode是LLVM(低级虚拟机)编译器,大多UI环境,尤其是对配置部分。如通过将它们拖动到视图控制器代替由代码直接定义它创建用于任意物体的出口或动作。因此,因为它是如此,我认为人们会很容易发现我的错误更快。
import Cocoa
import MapKit
class ViewController: NSViewController, CLLocationManagerDelegate {
@IBOutlet var mapView: MKMapView!
var locManager = CLLocationManager()
var currentLocation = CLLocation()
var locationManager = CLLocationManager()
var didFindMyLocation = false
var strForCurLatitude = "";
var strForCurLongitude = "";
override func viewDidLoad() {
super.viewDidLoad()
let distancespan:CLLocationDegrees = 2000
let busCScampuslocation:CLLocationCoordinate2D = CLLocationCoordinate2DMake(currentLocation.coordinate.latitude, currentLocation.coordinate.longitude)
mapView.setRegion(MKCoordinateRegion.init(center: bsuCScampuslocation, latitudinalMeters: distancespan, longitudinalMeters: distancespan), animated: true)
print(currentLocation.coordinate.latitude)
}
...
}
斯威夫特5:
ViewController.swift
import Cocoa
import CoreLocation
import MapKit
class ViewController: NSViewController, CLLocationManagerDelegate {
let manager = CLLocationManager()
override func viewDidLoad() {
super.viewDidLoad()
manager.delegate = self
manager.startUpdatingLocation()
}
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
print(locations)
//This is where you can update the MapView when the computer is moved (locations.last!.coordinate)
}
func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
print(error)
}
func locationManager(_ manager: CLLocationManager,
didChangeAuthorization status: CLAuthorizationStatus) {
print("location manager auth status changed to: " )
switch status {
case .restricted:
print("restricted")
case .denied:
print("denied")
case .authorized:
print("authorized")
case .notDetermined:
print("not yet determined")
default:
print("Unknown")
}
}
添加这些行的info.plist或设置NSLocationAlwaysAndWhenInUseUsageDescription
和/(或?)NSLocationUsageDescription
来的,为什么你需要访问的用户位置的纯文本的描述
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>Allows us to locate you</string>
<key>NSLocationUsageDescription</key>
<string>Allows us to locate you</string>
如果用户位置信息服务,授权状态会被“拒绝”
我表现出的ios演示,希望能帮助你。首先利用委托和定义CLLocationManager
CLLocationManagerDelegate
var locManager:CLLocationManager?;
然后这样做:
self.locManager = CLLocationManager();//[[CLLocationManager alloc] init];
self.locManager!.delegate = self;
self.locManager!.desiredAccuracy = kCLLocationAccuracyBest;
self.locManager!.distanceFilter = 5.0;
//ios8 later have effect
self.locManager?.requestWhenInUseAuthorization();// front use
self.locManager?.startUpdatingLocation();
最后,可以得到的数据:
func locationManager(manager: CLLocationManager!, didUpdateToLocation newLocation: CLLocation!, fromLocation oldLocation: CLLocation!) {
println("latitude %g",newLocation.coordinate.latitude);
println("longitude %g",newLocation.coordinate.longitude);
}
func locationManager(manager: CLLocationManager!, didFailWithError error: NSError!) {
println("locationManager error");
}
最后但并非最不重要的,在info.plist中应该补充一点:
NSLocationWhenInUseUsageDescription,set YES
希望能帮助你。