一、Core  Location

1、基本对象

@propertys: coordinate, altitude, horizontal/verticalAccuracy, timestamp, speed, course

@property (readonly) CLLocationCoordinate2D coordinate;

typedef {

CLLocationDegrees latitude; //   double型 纬度

CLLocationDegrees longitude; //  double 型 经度

} CLLocationCoordinate2D;

@property (readonly) CLLocationDistance altitude;  //高度 (单位:米)

2、精度

kCLLocationAccuracyBestForNavigation  //精度最好,但同时最耗电,以下类推

kCLLocationAccuracyBest

kCLLocationAccuracyNearestTenMeters

kCLLocationAccuracyHundredMeters

kCLLocationAccuracyKilometer

kCLLocationAccuracyThreeKilometers

3、如何获得Core Location?[通过CLLocationManager]

通常的步骤是:(1 通过硬件获得支持  (2 创建一个CLLocationManager实例并设置委托 (3 配置如何更新、精度 (4 开启这个Manager运行

4、在最开始创建Location Manager的时候,需要检查下面这些项:

+ (CLAuthorizationStatus)authorizationStatus; //* 检查应用的授权状态 *应用在第一次启动时,会自动请求授权,应用应当明确被授权使用位置服务,并且位置服务当前出于运行状态,应用才能使用位置服务。

+ (BOOL)locationServicesEnabled; // * 判断用户是否启动位置服务 * 在启动位置更新操作之前,用户应当检查该方法的返回值来查看设备的位置服务是否启动。如果位置服务没有启动,而用户又启动了位置更新操作,那么Core Location 框架将会弹出一个让用户确认是否启动位置服务的对话框。

+ (BOOL)significantLocationChangeMonitoringAvailable; //* 表明设备能否报告基于significant location changges的更新 *(significant location change监控,只是基于设备所链接的蜂窝塔的位置改变诊断,在精度要求不高的情况下,可以节省很多电量。)

+(BOOL)isMonitoringAvailableForClass:(Class)regionClass;//  对某些设备 beacon的监听

+ (BOOL)isRangingAvailable;//* 返回蓝牙信号范围服务是否可用 *。这是iOS 7新增的方法

5、委托

(1 属性

@property CLLocationAccuracy desiredAccuracy; // 精度

@property CLLocationDistance distanceFilter; // 距离过滤器:超过多远的距离才开始重新定位

(2 定位

- (void)startUpdatingLocation;   //开启定位
 - (void)stopUpdatingLocation;   //关闭定位

- (void)startMonitoringSignificantLocationChanges;    //可以在后台或者前台都能监视到用户位置的移动,即使程序没有启动

- (void)stopMonitoringSignificantLocationChanges;  //

(3 当你的程序没有运行或者后台被启动的时候,这个方法会被发送

application:didFinishLaunchingWithOptions:  UIApplicationLaunchOptionsLocationKey

(4 圆形范围[基于对区域的监控]

- (void)startMonitoringForRegion:(CLRegion *)region; // CLCircularRegion/CLBeaconRegion

- (void)stopMonitoringForRegion:(CLRegion *)region;

//进入范围的时候,会发送广播通知你[这是iOS7 新增的]

- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region;

- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region;

- (void)locationManager:(CLLocationManager *)manager monitoringDidFailForRegion:(CLRegion *)region

withError:(NSError *)error;

接下就可以讲讲MapKit:

二、MKMapView

1、annotations :通过点击会弹出一个 MKAnnotationView

@property (readonly) NSArray *annotations;

@protocol  MKAnnotation <NSObject>

@property  (readonly) CLLocationCoordinate2D coordinate;//

@optional

@property  (readonly) NSString *title;  //标题

@property  (readonly) NSString *subtitle;//副标题

@end

typedef {

CLLocationDegrees latitude;

CLLocationDegrees longitude;//经纬度

} CLLocationCoordinate2D;

2、MKAnnotationView

@property id <MKAnnotation> annotation;

@property UIImage *image;  //可以修改如上图的大头针的图片
@property UIView *leftCalloutAccessoryView;  //弹出View的修改
@property UIView *rightCalloutAccessoryView;

@property BOOL enabled;

@property CGPoint centerOffset;

@property BOOL draggable;

(1 [非常像UITableView]创建视图(不创建会自动创建)

- (MKAnnotationView *)mapView:(MKMapView *)sender viewForAnnotation:(id <MKAnnotation>)annotation

{

MKAnnotationView *aView = [sender dequeueReusableAnnotationViewWithIdentifier:IDENT];

if (!aView) {

aView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation

reuseIdentifier:IDENT];

aView.annotation = annotation;

return aView;

}

(2  View里面的图标被轻点事件

- (void)mapView:(MKMapView *)sender   annotationView:(MKAnnotationView *)aView

calloutAccessoryControlTapped:(UIControl *)control;

(3 大头针被轻点事件

- (void)mapView:(MKMapView *)sender didSelectAnnotationView:(MKAnnotationView *)aView

{

if ([aView.leftCalloutAccessoryView isKindOfClass:[UIImageView class]])

{

UIImageView *imageView = (UIImageView *)aView.leftCalloutAccessoryView;

imageView.image = ...;

}

}

(4 调用摄像头操作

+ (MKMapCamera *)cameraLookingAtCenterCoordinate:(CLLocationCoordinate2D)coord

fromEyeCoordinate:(CLLocationCoordinate2D)cameraPosition

eyeAltitude:(CLLocationDistance)eyeAltitude;

(5  设置动画效果:比如地理位置的转移,先从上的转移,然后再从上到下

   - (void)mapView:(MKMapView *)mapView didChangeRegionAnimated:(BOOL)animated;

3、MKLocalSearch 搜索

(1 搜索

MKLocalSearchRequest *request = [[MKLocalSearchRequest alloc] init];

request.naturalLanguageQuery = @“Ike’s”;

request.region = ...;

MKLocalSearch *search = [[MKLocalSearch alloc] initWithRequest:request];

[search startWithCompletionHandler:^(MKLocalSearchResponse *response, NSError *error) {  // 得到一个MKMapItem 数组,里面还包含MKPlacemark  }];

(2 在地图APP中打开

- (BOOL)openInMapsWithLaunchOptions:(NSDictionary *)options;

4、MKDirections 路线

三、Embed Segue 
      Container View

OC开发_Storyboard——MapKit的更多相关文章

  1. OC开发_Storyboard——iPad开发

    iPad开发(Universal Applications) 一.iPad 1.判断是否在iPad上 BOOL iPad = ([[UIDevice currentDevice] userInterf ...

  2. OC开发_Storyboard——AutoLayout

    一.autolayout 自动布局: 1. 设置所有视图框架的三种方法,可以通过代码创建也可以storyboard设置 = 规则 (1 蓝线+约束:(位置) 使用蓝线,根据蓝线拖动控件,只是告诉Xco ...

  3. OC开发_Storyboard——多线程、UIScrollView

    一.多线程 1.主队列:处理多点触控和所有UI操作(不能阻塞.主要同步更新UI) dispatch_queue_t mainQueue = dispatchg_get_main_queue(); // ...

  4. OC开发_Storyboard——UITableView

    一.tableView 1.datasource数据源 (1 构造每一个tableVIewCell的方法:cellForRowAtIndexPath,这里的 dequeueReusableCellWi ...

  5. OC开发_Storyboard——Core Data

    一 .NSManagedObjectContext 1.我们要想操作Core Data,首先需要一个NSManagedObjectContext2.那我们如何获得Context呢:创建一个UIMana ...

  6. OC开发_Storyboard——UIApplication和网络活动指示器

    一.UIApplication 只有一个实例: UIApplication *myApplication = [UIApplication sharedApplication]; 属性如果设置为YES ...

  7. OC开发_Storyboard——绘制和视图

    1.绘制 不要调用drawRect.调用setNeedsDisplay相当于告知系统视图需要重绘, 它会去调用drawRect,更新屏外缓冲器 2.UIBezierPath绘制图形,   设置图像op ...

  8. OC开发_Storyboard——block和动画

     一.协议 @optional :可选的 @requied :必须实现的  二.block 代码块 1. 以一个^开头,然后是参数,然后是一个大括号,包含我们的代码块 [aDictionary enu ...

  9. OC开发_Storyboard——NaviationController简单例子

    一个简单的Navigation的例子,demo里面用到了上一个demo的MVC,可以参考下:http://www.cnblogs.com/daomul/p/4426063.html 建立一个Nav其实 ...

随机推荐

  1. 在Unity3d中调用外部程序及批处理文件

    如果调用外部普通应用程序, 比如notepad.exe 这样调用 static public bool ExecuteProgram(string exeFilename, string workDi ...

  2. 安装MongoDB 到服务器

    用管理员身份运行CMD > cd C:\Program Files\mongodb\bin > C:\Program Files\mongodb\bin>mongod --dbpat ...

  3. MySQL索引优化入门

    索引简介 官方定义:索引(Index) 是帮助MySQL高效获取数据的数据结构.大家一定很好奇,索引为什么是一种数据结构,它又是怎么提高查询的速度?我们拿最常用的二叉树来分析索引的工作原理.看下面的图 ...

  4. less语法(一)变量与extend

    摘要: 作为 CSS 的一种扩展,Less 不仅完全兼容 CSS 语法,而且连新增的特性也是使用 CSS 语法.这样的设计使得学习 Less 很轻松,而且你可以在任何时候回退到 CSS.less文件是 ...

  5. iOS使用NSURLConnection发送同步和异步HTTP Request

    1. 同步发送 - (NSString *)sendRequestSync { // 初始化请求, 这里是变长的, 方便扩展 NSMutableURLRequest *request = [[NSMu ...

  6. JAVA内存泄露分析及解决

    一,问题产生     项目采用Tomcat6.0为服务器,数据库为mysql5.1,数据库持久层为hibernate3.0,以springMVC3.0为框架,项目开发完成后,上线前夕进行稳定性拷机,测 ...

  7. 8 -- 深入使用Spring -- 3...1 Resource实现类ServletContextResource

    8.3.1 Resource实现类------ServletContextResource:访问相对于ServletContext路径下的资源的实现类. 4.访问应用相关资源 Spring提供了Ser ...

  8. SVN的Hooks功能--强制添加注释

    所谓hooks,可以类似 理解Linux内核Netfilter框架的hook点和hook函数的概念.当用户在维护代码的过程中,其执行的相关动作正好触发了相关hook点,就 会去执行对应hook点的脚本 ...

  9. socket 中文man页面函数

    Linux 套接字的用户接口. 这个 BSD 兼容套接字是介于用户进程与内核网络协议栈之间的统一接口, 各协议模块属于不同的 协议族 ,如 PF_INET, PF_IPX, PF_PACKET 和 套 ...

  10. HTML5和CSS3扁平化风格博客(基础篇)

    多学一点总是好的~ 自始至终都觉得的css和html效果比较美观,于是在看慕课网教程时,自己也跟着敲了深爱着的前端代码 这部分分为两部分:①基础篇:http://www.imooc.com/learn ...