地图定位1-iOS7.0定位配置

iO78.0 定位

1.前台定位

1.创建位置管理者 CLLocationManager并设置代理

    lazy var locationM : CLLocationManager = {
        let locationM = CLLocationManager()
        locationM.delegate = self
        return locationM
    }()

2.开始定位,调用方法,更新位置信息

locationM.startUpdatingLocation()

3.在CLLocationManagerDelegate的代理方法中获取用户位置信息

extension ViewController : CLLocationManagerDelegate {
    func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
        print("每次请求到位置信息,都会调用这个代理方法")
    }
}

使用位置管理者进行定位补充:

  • 1.如果想要使用位置管理者来开始实现某一个功能 :

    开启功能: start

    停止这个功能 : stop

  • 2.一旦调用了startUpdatingLocation() 这个方法,就会不断的获取用户的位置信息

  • 3.在 iOS6.0之后,如果想要获取用户的隐私(照片,通信),系统会主动弹框让用户授权,
    一旦用户选则了don't allow 意味着再也无法获取用户的位置信息.

    除非用户到设置界面,设置允许你的app来获取当前的位置

  • 4.可以在info.plist文件中, 配置Privacy - Location Usage Description 来说明定位目的

2.后台定位

条件:

  • 在前台基础上,勾选后台模式location updates或者直接info.plist文件,添加Required background modes(两者实现同一个操作)

操作:

  • Capabilities -> Background Models -> 选中Location updates 打钩
地图定位1-iOS7.0定位配置_第1张图片
map01a.png
  • info.plist操作:
    添加Required background modes->
    App registers for location updates
map01b.png

3. 定位不到, 对应的代理方法不执行

解决:

  1. 首先,检查运行的模拟器是否是iOS8.0之前的系统版本
  2. 其次,检查模拟器是否设置位置数据
  3. 第三,确保代码无问题(一般都是代理没有设置,或者位置管理器对象是局部变量)
  4. 第四,模拟器BUG, 请将模拟器位置设为None,然后再次设置数据; 或者,重置模拟器

你可能感兴趣的:(地图定位1-iOS7.0定位配置)