加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift开发笔记18 - 获取当前位置坐标和地址

发布时间:2020-12-14 01:35:36 所属栏目:百科 来源:网络整理
导读:首先在info.plist里增加两行:NSLocationAlwaysUsageDescription和NSLocationWhenInUseUsageDescription,如下图中倒数3和4行 然后 import CoreLocation 给类增加代理: CLLocationManagerDelegate 增加类属性: // 用于定位服务管理类,它能够给我们提供位

首先在info.plist里增加两行:NSLocationAlwaysUsageDescription和NSLocationWhenInUseUsageDescription,如下图中倒数3和4行


然后

import CoreLocation

给类增加代理:

CLLocationManagerDelegate

增加类属性:

//用于定位服务管理类,它能够给我们提供位置信息和高度信息,也可以监控设备进入或离开某个区域,还可以获得设备的运行方向

var locationManager : CLLocationManager!

var currLocation : CLLocation!

主要代码,总共三个函数:

 var locationManager : CLLocationManager!
  var currLocation : CLLocation!
 override func viewDidLoad() {
      //初始化位置管理器
        locationManager = CLLocationManager()
        locationManager.delegate = self
        //设备使用电池供电时最高的精度
        locationManager.desiredAccuracy = kCLLocationAccuracyBest
        //精确到1000米,距离过滤器,定义了设备移动后获得位置信息的最小距离
        locationManager.distanceFilter = kCLLocationAccuracyKilometer
        if ios8() {
          //如果是IOS8及以上版本需调用这个方法
         locationManager.requestAlwaysAuthorization()
        //使用应用程序期间允许访问位置数据
         locationManager.requestWhenInUseAuthorization();
       //启动定位
         locationManager.startUpdatingLocation() 
   }
} 
    //FIXME: CoreLocationManagerDelegate 中获取到位置信息的处理函数
    func  locationManager(manager: CLLocationManager,didUpdateLocations locations: [CLLocation]) {  
        let location:CLLocation = locations[locations.count-1] as CLLocation
        currLocation=location
        if (location.horizontalAccuracy > 0) {
            self.locationManager.stopUpdatingLocation()
            print("wgs84坐标系  纬度: (location.coordinate.latitude) 经度: (location.coordinate.longitude)")
            self.locationManager.stopUpdatingLocation()
            print("结束定位")
          }
        //使用坐标,获取地址
        let geocoder = CLGeocoder()
        var p:CLPlacemark?
        geocoder.reverseGeocodeLocation(currLocation,completionHandler: { (placemarks,error) -> Void in
            if error != nil {
                print("获取地址失败: (error!.localizedDescription)")
                return
            }
            let pm = placemarks! as [CLPlacemark]
            if (pm.count > 0){
                p = placemarks![0] as CLPlacemark
                print("地址:(p?.name!)")
              }else{
                print("没地址!")
            }
        })
    }
     //FIXME:  获取位置信息失败
    func  locationManager(manager: CLLocationManager,didFailWithError error: NSError) {
        print(error)
      }

判断手机系统版本:

  func ios8() -> Bool {
        var versionCode:String = UIDevice.currentDevice().systemVersion
        let version = NSString(string:  versionCode).doubleValue
        return version >= 8.0
    }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读