地图定位

我们的应用中常常会用到地图定位的相关功能,在开发中,想加入这两个功能,必须要基于2个框架进行开发。

Map Kit : 用于地图展示

Core Location : 用于地理定位

1.定位的基本使用

      实现一次定位

      实现持续定位

      比较两个位置的距离

      ios9地位的问题

2.地理编码和反地理编码

      地理编码

      反地理编码

3.地图的基本使用

      设置地图显示类型

      显示用户的位置

      根据用户的位置显示对应的大头针信息(反地理编码)

      设置用户所在位置为中心点(点击按钮返回用户所在的位置)

      设置地图显示的范围大小

      点击按钮返回用户的位置

      获取地图的显示大小和中心经纬度

4.大头针的使用

      添加大头针到地图上

      自定义大头针/改变大头针的颜色/图像/动画掉落

5.地图导航

一、Core Location 的基本使用:

首先要导入框架 -> 导入主头文件:#import<CoreLocation/CoreLocation.h>  ->  创建CLLocationManager对象做用户定位。

CLLocationManager的常用操作:

    开始定位 :- (void)startUpdatingLocation;

   停止用户定位:- (void) stopUpdatingLocation;

   当调用了startUpdatingLocation方法后,就会开始不断地定位用户的位置,中途会频繁地调用代理的下面的方法:locations参数中装着CLLocation对象

  - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations;

    每隔多少米定位一次:

@property(assign, nonatomic) CLLocationDistance distanceFilter;

定位精准度(越准确越耗电)

@property(assign, nonatomic) CLLocationAccuracy desiredAccuracy;

CLLocation的基本属性:常用来表示某个位置的地理信息,比如经纬度海拔等

  经纬度:

@property(readonly, nonatomic) CLLocationCoordinate2D coordinate;
海拔 
@property(readonly, nonatomic) CLLocationDistance altitude;
路线、航向(取值范围是0.0~ 359.9,0.0代表正北方向 )
@property(readonly, nonatomic) CLLocationDirection course;
行走速度(单位m/s)
@property(readonly, nonatomic) CLLocationSpeed speed;
用- (CLLocationDistance)distanceFromLocation:(const CLLocation *)location方法可以计算2个位置之间的距离
CLLocationCoordinate2D一般用CLLocationCoordinate2DMake函数来创建CLLocationCoordinate2D
CLLocationCoordinate2D是一个用来表示经纬度的结构体,定义如下
typedef struct {
        CLLocationDegrees latitude; // 纬度
        CLLocationDegrees longitude; // 经度
} CLLocationCoordinate2D;

开发者可以在Info.plist中设置NSLocationUsageDescription说明定位的目的(Privacy - Location Usage Description)

一旦用户选择了“Don’t Allow”,意味着你的应用以后就无法使用定位功能,为了严谨起见,最好在使用定位功能之前判断当前应用的定位功能是否可用

CLLocationManager有个类方法可以判断当前应用的定位功能是否可用   + (BOOL)locationServicesEnabled;

iOS 8开始,用户定位分两种情况,需要在plist文件中配置一下:

总是使用用户位置:NSLocationAlwaysUsageDescription

使用应用时定位:NSLocationWhenInUseDescription

CLGeocoder的简单使用:

使用CLGeocoder可以完成地理编码反地理编码

地理编码:根据给定的地名,获得具体的位置信息(比如经纬度、地址的全称等)

反地理编码:根据给定的经纬度,获得具体的位置信息

地理编码方法
- (void)geocodeAddressString:(NSString *)addressString completionHandler:(CLGeocodeCompletionHandler)completionHandler;
反地理编码方法
- (void)reverseGeocodeLocation:(CLLocation *)location completionHandler:(CLGeocodeCompletionHandler)completionHandler;

当地理\反地理编码完成时,就会调用CLGeocodeCompletionHandler

       typedef void (^CLGeocodeCompletionHandler)(NSArray *placemarks, NSError *error);

      这个block传递2个参数

        error :当编码出错时(比如编码不出具体的信息)有值

       placemarks :里面装着CLPlacemark对象

CLPlacemark的字面意思是地标,封装详细的地址位置信息
@property (nonatomic, readonly) CLLocation *location;
地理位置
@property (nonatomic, readonly) CLRegion *region;
区域
@property (nonatomic, readonly) NSDictionary *addressDictionary;
详细的地址信息
@property (nonatomic, readonly) NSString *name;
地址名称
@property (nonatomic, readonly) NSString *locality;
城市









阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wutengwei007/article/details/49962213
个人分类: iOS
上一篇iOS相册图片的选取与设置
下一篇推送
想对作者说点什么? 我来说一句

Google地图定位

2018年05月02日 235KB 下载

AndroidGPS

2017年12月04日 1013B 下载

谷歌地图定位

2013年05月13日 533KB 下载

google地图定位

2013年10月26日 39KB 下载

集成高德地图定位功能demo

2016年07月18日 10.25MB 下载

高德地图定位

2017年04月27日 980KB 下载

html5地图定位

2014年09月21日 65KB 下载

MyLocation我的定位

2011年11月21日 42KB 下载

基于地图定位

2012年09月25日 3KB 下载

没有更多推荐了,返回首页

关闭
关闭