如何在 swift 中使用 CLLocationManager 获取位置用户?

2023-12-19

我的视图控制器上有这段代码,但这不起作用:

  import UIKit
  import CoreLocation

  class ViewController: UIViewController, CLLocationManagerDelegate {

   var location: CLLocationManager!

  override func viewDidLoad() {
     super.viewDidLoad()

     location=CLLocationManager()
     location.delegate = self
     location.desiredAccuracy=kCLLocationAccuracyBest
     location.startUpdatingLocation()
 }

  func locationManager(location:CLLocationManager, didUpdateLocations locations:AnyObject[]) {
     println("locations = \(locations)")
     label1.text = "success"
 }

我拥有我在其他帖子中阅读的权限。但我没有得到,没有 println ..

Thanks!!


首先在 plist 文件中添加这两行

1) NSLocationWhenInUseUsageDescription

2) NSLocationAlwaysUsageDescription

那么这就是类工作的完整实现

import UIKit 
import CoreLocation

@UIApplicationMain

class AppDelegate: UIResponder, UIApplicationDelegate, CLLocationManagerDelegate {

var window: UIWindow?
var locationManager: CLLocationManager!
var seenError : Bool = false
var locationFixAchieved : Bool = false
var locationStatus : NSString = "Not Started"

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {
    initLocationManager();
    return true
}

// Location Manager helper stuff
func initLocationManager() {
    seenError = false
    locationFixAchieved = false
    locationManager = CLLocationManager()
    locationManager.delegate = self
    locationManager.locationServicesEnabled
    locationManager.desiredAccuracy = kCLLocationAccuracyBest

    locationManager.requestAlwaysAuthorization()
}

// Location Manager Delegate stuff

func locationManager(manager: CLLocationManager!, didFailWithError error: NSError!) {
    locationManager.stopUpdatingLocation()
    if (error) {
        if (seenError == false) {
            seenError = true
           print(error)
        }
    }
}

func locationManager(manager: CLLocationManager!, didUpdateLocations locations: AnyObject[]!) {
    if (locationFixAchieved == false) {
        locationFixAchieved = true
        var locationArray = locations as NSArray
        var locationObj = locationArray.lastObject as CLLocation
        var coord = locationObj.coordinate

        println(coord.latitude)
        println(coord.longitude)
    }
}

func locationManager(manager: CLLocationManager!,
    didChangeAuthorizationStatus status: CLAuthorizationStatus) {
        var shouldIAllow = false

        switch status {
        case CLAuthorizationStatus.Restricted:
            locationStatus = "Restricted Access to location"
        case CLAuthorizationStatus.Denied:
            locationStatus = "User denied access to location"
        case CLAuthorizationStatus.NotDetermined:
            locationStatus = "Status not determined"
        default:
            locationStatus = "Allowed to location Access"
            shouldIAllow = true
        }
        NSNotificationCenter.defaultCenter().postNotificationName("LabelHasbeenUpdated", object: nil)
        if (shouldIAllow == true) {
            NSLog("Location to Allowed")
            // Start location services
            locationManager.startUpdatingLocation()
        } else {
            NSLog("Denied access: \(locationStatus)")
        }
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 swift 中使用 CLLocationManager 获取位置用户? 的相关文章

随机推荐

  • SQL Server 2012:如何将所有数据库存储过程编写成单独的 .sql 文件?

    我想编写从 SQL Server 2012 到 Visual Studio 2012 的所有存储过程的脚本 sql文件 在不同的项目中 我怎么做 我想要每个存储过程都有一个 sql 文件吗 在 SQL Server 2012 中右键单击 D
  • 为什么我的谓词没有回溯?

    我不明白为什么我的谓词不回溯并找到所有解决方案 person john person erik allExceptSpider person Spider T setof person X person X S subtract S per
  • 使用铯最轻的方法是什么?

    我有兴趣使用 Cesium 构建带有自定义图块的 3D 地球 但根据此处为 开始 说明 http cesiumjs org 2013 04 12 Cesium up and running 似乎您必须下载一个巨大的 30mb 目录并将整个内
  • Thymeleaf 选择选项性能问题

    我最近一直在摆弄 Spring MVC 5 和 Thymeleaf 3 0 并注意到一些奇怪的事情 我已经开始根据网站上的教程实现下拉列表 并注意到一些性能问题 如果我使用以下代码 我的页面大约需要 5 5 秒才能呈现大约 100 个项目的
  • android 滑动层activity动画

    我想实现滑动层动画以进行活动转换 如材料设计指南中所述 然而 我现在所能做的就是将 slip in 和保持动画简单组合起来 这不会给我带来堆叠层的效果 我怎样才能实现它 我目前的实施 活动开始时 activity overridePendi
  • 如何在SSIS包中设置变量?

    我需要在我的 SSIS 包中使用两个变量 extract beg date and extract end date 我如何设置它们以某种方式行事 例如 在存储过程中 它看起来像这样 SET extract beg date CASE WH
  • 如何在使用 XmlHttpRequest 和 FormData 时设置边界

    我试图在使用 FormData 发布 XmlHttpRequest 时在标头中正确设置边界 xhr open POST url xhr setRequestHeader Content type multipart form data bo
  • html2canvas 等待图像加载

    我遇到这个问题已经有一段时间了 但我似乎找不到解决方案 我正在使用最新的 html2canvas js 插件来截取使用 fllotcharts 制作的图表的屏幕截图 然后通过隐藏输入提交 base64 屏幕截图 问题是带有图表的 div 也
  • 排序依据和限制

    我需要执行以下查询 SELECT FROM specimens ORDER BY distribution sheet id DESC LIMIT 10 我已经把 我喜欢输出 limit 10 而不是 limit 1 我想它是 last 但
  • 不同主机上的 OpenMP 程序

    我想知道是否可以在多个主机上运行 OpenMP 程序 到目前为止 我只听说过可以在多线程上执行但都在同一台物理计算机上执行的程序 是否可以在两个 或更多 客户端上执行程序 我不想使用 MPI 是的 可以在分布式系统上运行 OpenMP 程序
  • 析构函数可以递归吗?

    这个程序定义是否明确 如果没有 到底为什么 include
  • 可读性与性能

    最近 我们在工作中讨论了局部变量对 Java 代码的性能和可读性的影响 我的一些同事认为这样的声明 new DoSomethingCmd new SelectionContext context keys infoStuff getCurr
  • 使用 :after 清除浮动元素

    我有一个清单 李有一个float left 之后的内容 ul 应正确对齐 因此我可以构建以下内容 http jsfiddle net 8unU8 http jsfiddle net 8unU8 我想 我可以删除 div class clea
  • Jquery UI 中的 Jquery Dragstart 和 Dragend 事件

    有没有办法访问这两个事件 偶数存在吗 我必须将传输数据设置为dragStart and dragEnd to an event object Check 拖动开始 http api jqueryui com draggable event
  • 如何在 Perl 中对 IP 地址列表进行排序?

    我有一堆 IP 地址存储在一个数组中 例如 my ip qw 10 11 1 1 10 100 1 1 如何按升序对地址进行排序 我尝试过一个简单的sort但当然失败了 IPv4 地址只是 32 位数字 use Socket qw inet
  • 通过css为javafx.scene.text.Text设置文本

    我需要在 css 中存储任何 JavaFX 元素的整个节点属性 或者主要是 对于 javafx scene text Text 或 javafx scene shape 对于文本 我不确定如何通过 css 设置文本值 是否可以 我需要将所有
  • 使用属性从 H5 文件中过滤 HDF 数据集

    我有一个包含多个组和数据集的 h5 文件 每个数据集都有关联的属性 我想根据与其关联的相应属性查找 过滤此 h5 文件中的数据集 Example dataset1 cloudy attribute dataset2 rainy attrib
  • VS 代码:NoPermissions(文件系统错误):错误:EACCES:权限被拒绝

    我正在尝试将名为 app js 的文件保存在名为 js 的文件夹中 vs Code 弹出这个 无法保存 app js 无法写入文件 vscode remote wsl ubuntu 18 04 js app js NoPermissions
  • HttpClient.GetStreamAsync() 与自定义请求?

    我的目标是使用HttpClient类来发出网络请求 以便我可以将响应写入文件 解析后 因此我需要结果作为Stream HttpClient GetStreamAsync https msdn microsoft com en us libr
  • 如何在 swift 中使用 CLLocationManager 获取位置用户?

    我的视图控制器上有这段代码 但这不起作用 import UIKit import CoreLocation class ViewController UIViewController CLLocationManagerDelegate va