iOS (地图)CLLocation

//.h文件
#pragma mark---地理编码

- (IBAction)geocode:(UIButton *)sender;

@property (strong, nonatomic) IBOutlet UITextField *addressTextField;

@property (strong, nonatomic) IBOutlet UILabel *longitudeLabel;
@property (strong, nonatomic) IBOutlet UILabel *latitudeLabel;

@property (strong, nonatomic) IBOutlet UILabel *detailAddress;

#pragma mark ----反地理编码

- (IBAction)reverseGetcode:(UIButton *)sender;

@property (strong, nonatomic) IBOutlet UITextField *longitudeTextField;

@property (strong, nonatomic) IBOutlet UITextField *latitudeTextfiled;

@property (strong, nonatomic) IBOutlet UILabel *addressLabel;

.m文件

@interface ViewController ()<CLLocationManagerDelegate>

@property(nonatomic,strong)CLLocationManager * locManager;//定位管理对象

@property(nonatomic,strong)CLGeocoder * geocoder;//编码器对象

@end
- (void)viewDidLoad {
    [super viewDidLoad];

    //判断ios系统的版本 如果大于8.0就要获取授权
    if ([[UIDevice currentDevice].systemVersion doubleValue]>=8.0) {
        //获取授权
        [ self.locManager requestWhenInUseAuthorization];
    }

    //每隔多少米定位一次
//    self.locManager.distanceFilter=10;

    //定位精确度(越精确就越耗电)
//    self.locManager.desiredAccuracy=kCLLocationAccuracyHundredMeters;

    //开始定位
    [ self.locManager startUpdatingLocation];
}
#pragma mark----实现locationManager的代理方法
#pragma mark----只要定位到用户的位置,就会调用(调用频率特别高)
//locations :装着CALocation对象
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{

    //1.取出位置对象
    CLLocation * loc =[locations firstObject];

    //2.取出经纬度
    //经度
    double longitude=loc.coordinate.longitude;

    //纬度
    double latitude=loc.coordinate.latitude;

    //打印经纬度
    NSLog(@"经度:%2.f 纬度:%2.f ",longitude,latitude);

    //3.打印经纬度
    NSLog(@"开始定位!----%@",locations);

    //停止定位(省电措施:只要不想定位服务,就马上停止定位服务
    [self.locManager stopUpdatingLocation];
}

//计算2个经纬度之间的直线距离
- (void)countLineDistance{

    CLLocation * cation1 =[[CLLocation alloc]initWithLatitude:40 longitude:116];

     CLLocation * cation2 =[[CLLocation alloc]initWithLatitude:41 longitude:116];

    CLLocationDistance distance= [cation1 distanceFromLocation:cation2];

    NSLog(@"%f",distance);

}

同时还要在info文件中添加 NSLocationWhenInUseUsageDescription

//懒加载
-(CLLocationManager *)locManager{

    if (![CLLocationManager locationServicesEnabled]) {
        return nil;
    }

    //判断定位管理是否存在
    if (!_locManager) {
        //创建定位管理者
        _locManager =[[CLLocationManager alloc]init];

        _locManager.delegate=self;
    }

    return _locManager;

}

-(CLGeocoder *)geocoder{

    if (!_geocoder) {

        _geocoder =[[CLGeocoder alloc]init];
    }
    return _geocoder;
}

地理编码(根据地址定位出经纬度)

- (IBAction)geocode:(UIButton *)sender {

    if ([self.addressTextField.text length] ==0) {
        return;
    }

    NSLog(@"%@",self.addressTextField.text );

    //地理编码
       [self.geocoder geocodeAddressString:self.addressTextField.text completionHandler:^(NSArray *placemarks, NSError *error) {

           if (error) {//有错误(地址乱输入)

               [email protected]"您输入的地名有错误!!";

           }else{

             CLPlacemark * placemark =[placemarks firstObject];

               self.detailAddress.text=placemark.name;
               /*
                name :名称
                locality:城市
                county:国家
                postanCode:邮政编码

                */

               self.longitudeLabel.text=[NSString stringWithFormat:@"%.2f",placemark.location.coordinate.longitude ];
               self.latitudeLabel.text=[NSString stringWithFormat:@"%2f",placemark.location.coordinate.latitude];

           }

       }];

   }

效果

地理反编码 (根据经纬度定位出地址)

//反地理编码
- (IBAction)reverseGetcode:(UIButton *)sender {

    NSString * longitude =self.longitudeTextField.text;
    NSString * latitude =self.latitudeTextfiled.text;

    if (longitude.length==0 || latitude.length==0) {

        return;
    }

    CLLocation * location =[[CLLocation alloc]initWithLatitude:[latitude doubleValue] longitude:[longitude doubleValue]];

    [self.geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) {

        if (error) {

             [email protected]"你输入的经纬度错误!!";
        }else{

            CLPlacemark * pm=[placemarks firstObject];

            self.addressLabel.text=pm.name;
        }

    }];
}

效果如下图

时间: 2024-08-10 14:09:05

iOS (地图)CLLocation的相关文章

iOS 地图开发MapKit和CLLocation

1,iOS 定位服务 现在对iOS下的定组件建进行如下分类: 1>,无限蜂窝定位,根据移动设备距离基站的位置来实现定位的. 2>,GPS定位,也就是所谓的卫星定位,定位精确度较高,但是受遮盖环境影响较大, 3>,无线wifi定位,根据定位路由器的位置,实现定位, 4>,蓝牙beacon定位,定位精确度高,但是要求在外设的覆盖区域内 下面我们主要讲讲iOS下面的定位吧,主要框架CoreLocation.framework,主要对象CLLocationManager,主要代理CLLoc

iOS 地图开发小结

首先来说说ios地图开发使用的主要类: MKMapView:地图控件,无其他Label等控件无异,拖进来就可以用了,用于地图的内容的显示,用户可以对地图进行放大.缩小.拖动.旋转等操作: CLLocationCoordinate2D :坐标,包括经度和纬度: MKCoordinateSpan :地图跨度,表示地图放大倍数,数值越小地图显示的单位越精细: CLLocationManager :用户所在位置的管理类,通过该类的能够获取用户所在的GPS坐标. 下面与大家分享一些个人项目中地图部分所涉及

iOS地图导航仪的实现

第一部分 知识储备 1 根据地址定位 苹果给开发者为地址解析提供了CLGeocode工具类,该工具类可以把用户输入的地址解析成经纬度,该方是: -geocodeAddressString:destAddress completionHandler:^(NSArray *placemarks, NSError *error)   该方法将字符串地址解析,然后就可以得到对应的经纬度 2 MKMapView控件及相关属性 <1 ios的MKMapView支持一下三种属性: MKMapTypeStand

iOS地图开发MapKit

现在O2O应用非常火,因为基于地理的社交和电子商务应用都有非常广阔的前景 二O2O的移动载体就是手机了(平板基本忽略不计),所以会点手机上Map开发还是不错的 首先苹果已经封装了一套地图框架供我们使用,首先要使用苹果提供的地图框架需要导入MapKit框架 导入完成后即可使用 首先在你的视图里拖入一个MapView, 然后运行就行了~这是你就会看到地图(如果用的是真机最好,模拟器有点蛋疼) 但是现实的是一个大大的地图,赶脚没什么用,我们需要的是一个比较精准的地图,这时进入MKMapView.h文件

iOS地图开发详解一(MKMapView)

一.ios地图说明 ios中自带有地图,之前使用的时谷歌的,不过现在使用的是高德地图,另外在国内,百度地图也很常用. 二.代码实现 1.导入框架 导入MapKit框架如下图所示 2.创建并显示地图 经过以上两步,地图已经可以显示出来了 注意:以上步骤一定要来联网的基础上进行,否则只会看到格子而不会显示地图. 3.设置显示区域 上面的操作显示的地图并不能满足要求,因为它显示的不是我们想要的区域,下面我们说下怎样设置当前显示区域 网上查到北京故宫博物馆的纬度和经度为{39.918031,116.40

【高德API】如何利用MapKit开发全英文检索的iOS地图

原文:[高德API]如何利用MapKit开发全英文检索的iOS地图 制作全英文地图的展示并不困难,但是要制作全英文的数据检索列表,全英文的信息窗口,你就没办法了吧.告诉你,我有妙招!使用iOS自带的MapKit来展示全球英文底图,结合上高德API的中英文检索功能,就能打造POI数据最丰富,英文展示全方位的纯英文地图啦!看看截图,是不是浑然天成? ----------------------------------------------------------------------------

iOS地图的显示(大头针)

1 1.导入主头文件 2 #import <MapKit/MapKit.h> 3 MapKit框架使用须知 4 MapKit框架中所有数据类型的前缀都是MK 5 MapKit有一个比较重要的UI控件:MKMapView,专门用于地图显示 6 7 2.跟踪显示用户的位置 8 9 设置MKMapView的userTrackingMode属性可以跟踪显示用户的当前位置 10 MKUserTrackingModeNone :不跟踪用户的位置 11 MKUserTrackingModeFollow :跟

iOS地图定位(Map)

1.地图的简介 在移动互联网时代,移动app能解决用户的很多生活琐事,比如    导航:去任意陌生的地方    周边:找餐馆.找酒店.找银行.找电影院    手机软件:微信摇一摇.QQ附近的人.微博.支付宝等 在上述应用中,都用到了地图和定位功能,在iOS开发中,要想加入这两大功能,必须基于两个框架进行开发    Map Kit :用于地图展示    Core Location :用于地理定位 地图定位(CoreLocation框架,地理编码与反地理编码)地图显示(MapKit框架)自定义大头针

iOS 地图和定位功能

1:定位使用的生活场景 在移动互联网时代,移动app能解决用户的很多生活琐事,比如导航:去任意陌生的地方 周边:找餐馆.找酒店.找银行.找电影院 在上述应用中,都用到了地图和定位功能 2:iOS定位依赖的框架 在iOS开发中,要想加入这2大功能,必须基于2个框架进行开发 Map Kit :用于地图展示(比较重量级) Core Location :用于地理定位 Map Kit的定位是基于Core Location的 iOS定位热门术语: LBS :Location Based Service So