iOS中的地理位置的获取及plist设置方法

2020-01-21 04:53:58王振洲

8、指南针小例子


class ViewController: UIViewController {

 @IBOutlet weak var mImageView: UIImageView!
 lazy var locateM : CLLocationManager = {
  let locate = CLLocationManager()
  locate.delegate = self
  locate.requestAlwaysAuthorization()
  if #available(iOS 9.0, *) {
   locate.allowsBackgroundLocationUpdates = true
  }
  return locate
 }()
 override func viewDidLoad() {
  super.viewDidLoad()
  if(CLLocationManager.headingAvailable()){
   self.locateM.startUpdatingHeading()
  }else{
   print("当前磁力计有问题")
  } 
 }
}
extension ViewController : CLLocationManagerDelegate{
 func locationManager(manager: CLLocationManager, didUpdateHeading newHeading: CLHeading) {
  //1.拿到当前设备对正朝向的角度
  let angle = newHeading.magneticHeading
  //2.把角度转换成弧度
  let hudu = CGFloat(angle / 180 * M_PI)
  //3.反向旋转照片
  UIView.animateWithDuration(0.5) { 
   self.mImageView.transform = CGAffineTransformMakeRotation(-hudu)
  }
 }
}

9、区域的监听


class ViewController: UIViewController {
 lazy var locateM : CLLocationManager = {
  let locate = CLLocationManager()
  locate.delegate = self
  locate.requestAlwaysAuthorization()
  if #available(iOS 9.0, *) {
   locate.allowsBackgroundLocationUpdates = true
  }
  return locate
 }()
 override func viewDidLoad() {
  super.viewDidLoad()
  //首先应该判断当前是否可以监听某个区域
  if CLLocationManager.isMonitoringAvailableForClass(CLCircularRegion){
   //1.创建区域
   let center = CLLocationCoordinate2DMake(21.123, 121.345)
   var distance : CLLocationDistance = 1000
   //限制监听的范围不能超过最大的范围
   if distance < locateM.maximumRegionMonitoringDistance{
    distance = locateM.maximumRegionMonitoringDistance
   }
   let region = CLCircularRegion(center: center, radius: distance, identifier: "xiaoxiao")
   //2.监听区域
   self.locateM.startMonitoringForRegion(region)
   //3.判断当前状态是否是在区域内还是区域外,
   //在`didDetermineState`代理方法中获得结果
   self.locateM.requestStateForRegion(region)
  }
 }
}
extension ViewController : CLLocationManagerDelegate{
 func locationManager(manager: CLLocationManager, didEnterRegion region: CLRegion) {
  print("进入了区域"+region.identifier)
 }
 func locationManager(manager: CLLocationManager, didExitRegion region: CLRegion) {
  print("出了区域"+region.identifier)
 }
 func locationManager(manager: CLLocationManager, didDetermineState state: CLRegionState, forRegion region: CLRegion) {
  //获取刚开始是否在区域内或者区域外
  if region.identifier == "xiaoxiao"{
   switch state {
   case .Inside:
    print("已经是区域内的")
   case .Outside:
    print("没有在区域内")
   case .Unknown:
    print("不清楚")
   }
  }
 }
}

10、地理编码与反地理编码

地理编码