OC开发_Storyboard——MapKit

一、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 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/289025.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C语言简单说】二:第一个C语言程序详解(2)

如有错误请给与纠正… (_)? 不知道你在什麼 其实这一节可以跳过&#xff0c;不信你往下看… 上一个教程只说明了第一个C语言程序源码中的头文件&#xff1a; #include<stdio.h> #include<stdlib.h> 照例&#xff0c;我又把这一节说的源代码的内容给复制过来&a…

Effective C++学习笔记之copy构造函数和default函数和copy赋值函数(operator=)

1 、C一个空的类里面一般默认的函数 比如我们写 class A {}; 一般里面系统会给你哪些默认函数呢&#xff1f; class A { public:A(){} //default函数~A(){} //析构函数A(const A& a) {} //copy构造函数A& operator (const A& a) {} //copy assignment操…

python学习笔记 --- 随机数进阶

你真的懂随机数&#xff1f; Author : Jasper YangSchool : Bupt Q:为什么要写这篇文章&#xff1f;A:因为我发现在最近的科学计算中&#xff0c;常常遇到随机数&#xff0c;所有的随机数都是基于0,1随机&#xff0c;而这个0,1随机怎么实现呢&#xff1f;下面我会娓娓道来~ 这篇…

一套关于 内存对齐 的C#面试题,做错的人很多!

这是一套朋友公司的面试题&#xff0c;挺有意思分享一下。题目&#xff1a;判断下面的 Location1 和 Location2 的结构体大小各是多少&#xff1f;public struct Location1{public int X;public int Y;public long Z;}public struct Location2{public int X;public long Y;publ…

pythonweb服务器怎么让别人访问_Django配置让其他电脑访问网站

其实在Django 带有一个内建的轻量级 Web 服务器&#xff0c;可供站点开发过程中使用。我们提供这个服务器是为了让你快速开发站点&#xff0c;也就是说在准备发布产品之前&#xff0c;无需进行产品级 Web 服务器&#xff08;比如 Apache&#xff09;的配置工作。 但是实际开发中…

python3-day4(装饰器)

一.基本 第一波 #### def foo():print foofoo #表示是函数 foo() #表示执行foo函数#### 第二波 #### def foo():print foofoo lambda x: x 1foo() # 执行下面的lambda表达式&#xff0c;而不再是原来的foo函数&#xff0c;因为函数 foo 被重新定义了二.example #一个…

【C语言简单说】二:第一个C语言程序详解(3)

如有错误请给与纠正… 注&#xff1a;注意我们每一行代码后面的分号表示我们一句代码的结束&#xff0c;就像我们在写文字的时候的标点符号&#xff0c;一个句号表示一句话的结尾。 上一个教程只说明了第一个C语言程序源码中的main&#xff08;其实等于没说&#xff09;&…

【转载】关于测试人员的职业发展

近期由于项目组人手不够&#xff0c;需要招聘一些测试人员。本周及上周陆陆续续面试了十多个应征者&#xff0c;工作年限在2年~9年之间&#xff0c;但无一满意。期间&#xff0c;种种感叹&#xff0c;回想起去年面试六十余人仅有3人满足要求&#xff0c;如有鲠在喉&#xff0c;…

python之闭包

1 闭包概念 绑定了函数内部引用的所有变量&#xff0c;把它引用的东西都放在一个上下文中“包”了起来 2 闭包的Demo理解 需求:比如我们要实现2个函数,每个函数有个参数,然后现在需要实现这2个函数参数的相加功能 1) 不用闭包python普通实现 #!/usr/bin/env pythondef plus…

C#求一元二次方程的根经典案例程序

目 录 1. 界面设计 2. C#源程序 1. 界面设计 界面说明: 输入一元二次方程的二次项、一次项及常数项,这样的话对应的一元二次方程表达式就确定了,点击【计算】,即可计算出该一元二次方程的根。 2. C#源程序 using System; using System.Collections.Generic; using S…

pythonrequests说明_解决Python requests 报错方法集锦

python版本和ssl版本都会导致 requests在请求https网站时候会出一些错误&#xff0c;最好使用新版本。 1 Python2.6x use requests 一台老Centos机器上跑着古老的应用&#xff0c;加了一个新模块之后报错 报错 InsecurePlatformWarning: A true SSLContext object is not avail…

centos6,7的启动流程

CentOS 6 系统启动流程&#xff1a;POST --> BootSequence(BIOS) --> Bootloader --> kernel [-->ramfs] -->rootfs(ro) --> /sbin/init --> 设定默认运行级别 --> 系统初始化 --> 可以并行执行ctrlaltdel热键功能定义&#xff0c;系统服务的开启和…

微软是如何解决 PC 端程序多开问题的

前言在公众号上看到一篇文章《C#中解决PC端程序多开的问题》。该文作者是通过创建互斥锁Mutex实现的:bool mutexCreated; var mutex new Mutex(true, "MyApp", out mutexCreated); if (mutexCreated) {Application.Run(new Form1()); } else {MessageBox.Show("…

java中inputstream_java中InputStream String

Java 中获取输入流时&#xff0c;有时候须要将输入流转成String,以便获取当中的内容 &#xff0c;以下总结一下 InputStream 转成String 的方式方法1&#xff1a;public String convertStreamToString(InputStream is) {BufferedReader reader new BufferedReader(new InputSt…

【C语言简单说】三:整数变量和输出扩展(1)

唔&#xff01;经历之前眼瞎的教程之后&#xff0c;现在我继续的眼瞎着写接下来的章节… 注&#xff1a;注意我们每一行代码后面的分号表示我们一句代码的结束&#xff0c;就像我们在写文字的时候的标点符号&#xff0c;一个句号表示一句话的结尾。 注&#xff1a;我们printf…

做程序员的纠结在哪里

做程序员的纠结在于&#xff0c;人们与计算机之间的沟通的鸿沟现在交给了程序员来填。 好的程序员&#xff0c;必然有一面是在用0和1的模式来思考问题。 现在有很多职位也挂了程序员的名字。 比如比如数据分析师&#xff0c;说到底&#xff0c;如果你不写程序&#xff0c;应该称…

磁盘和文件系统管理一

主要掌握规划硬盘中的分区&#xff0c;创建文件系统&#xff0c;挂载卸载文件系统。学会添加并进行分区&#xff0c;学会创建并挂载文件系统。 检测并确认新硬盘 fdisk –l [磁盘设备] 规划磁盘中的分区fdisk [磁盘设备] 用途&#xff1a;在交互是的操作环境中管理磁盘分区 交…

JavaScript面向对象编程笔记

<!DOCTYPE html> <html> <head><title>面向对象编程</title><script type"text/javascript">var person {};//或者这样&#xff1a;var person new Object();person.name "张三";person.age 20;//函数充当属性&a…

C和指针之memmove函数 memcpy函数 strcspn函数 strspn函数 strrstr函数实现

1 memmove函数的实现 #include <stdio.h> #include <string.h>void* my_memmove(void*dest, const void*src, size_t len) { char *pdest = (char *)dest; const char* psrc = (char *)src; if ((psrc < pdest) && (pdest < psrc + len)) {…

NodeJS-queryString

无论是前端还是后端&#xff0c;经常出现的应用场景是URL中参数的处理。nodeJS的queryString模块提供了一些处理 query strings 的工具。本文将详细介绍nodeJS中的queryStringvar querystring require(querystring);/*{ unescapeBuffer: [Function],unescape: [Function: qsUn…