MapKit/CoreLocation框架 总结
MapKit/CoreLocation框架
/*英译 core:核心 track:踪迹 current:当前 statellite:卫星 hybird:混合 region:范围 annotation:注释 location:位置*/
导入两个框架
MapKit.framework 需要地图,精度相对较高
CoreLocation.framework 不需要地图,精度略差
包含头文件
----------------MapKit,地图操作---------------------
MapKit操作步骤:
通过成员_mapView来实现方法
_mapView:显示一张地图
//设定地图类型
[_mapView setMapType];
//标记用户用户当前位置
[_mapView setUserLocation];
//开启用户自动追踪用户位置]
[——mapView setUserTrackingMode:枚举 animated:YES];
_mapView代理方法
//监听用户位置变化(userLocation:用户当前位置)
- (void)mapView:() didUpdateUserLocation:(MKUserLocation *)userLocation
//添加大头针(注释)MKAnnotation protocal:协议
-实例化大头针对象(创建大头针模型,添加协议,定义属性(去掉readOnly))
#import <MapKit/MapKit.h>
@interface MyAnnotation : NSObject <MKAnnotation>
@property (nonatomic, assign) CLLocationCoordinate2D coordinate;
@property (nonatomic, copy) NSString *title;
@property (nonatomic, copy) NSString *subtitle;
@property (nonatomic, copy) NSString *icon;
@end
-设置对象属性(coordinate,title,subtitle,icon等
PS:CLLocationCoordinate2DMake(30, 116);)
-大头针添加到地图
[_mapView addAnotation:anno];
//自定义大头针(重用)类似与tableViewCell的重用
/* 英译: resume:重用 identifier:标示符 dequeue:出列 reusable:可重用 callout:插图编号 */
MKAnnotationView:为可重用大头针视图
1 判断,如果不是自定义类的大头针 return nil;
2 查询可重用的大头针来实例化大头针视图(dequeueReusable)
3 如果大头针视图为nil,新建一个大头针视图并设置重用符,并设置属性接受响应(点击可看见标题啥的)
4 设置传进来的大头针为视图的大头针
5 设置大头针视图的图像为传进来的大头针的图像
6 返回大头针视图
//跟踪用户位置变化(代理方法 参数:用户当前位置)
/*英译 coordinate:坐标 */
//在IOS6中使用跟踪,回直接定位到的位置.IOS7中必须坐标范围(coorinate,经纬度米)
didUpdateUserLocation:(MKUserLocation *)userLocation
userLocation:有两个属性:经,纬度
//计算两个经纬度之间的距离(导入CoreLocation框架) 英译 distance:距离
应用摇一摇(微信)
初始化两个CLLocation
[location1 distanceFromLocation:location2];
---------------location,操作演练-------------------
/* geocoder:地理编码 reverse:反转 placeMark:地标 */
使用定位服务操作流程:
1 初始化定位管理者(CLLocationManager)
2 判断定位服务是否可用(类方法)
([CLLocationManager locationServicesEnabled])
3 开启更新用户位置
[_locationManager startUpdatingLocation]
4 实现更新位置方法(代理方法)
didUpdateLocations:(NSArray *)locations
locations[0]:用户当前的位置信息经纬度,速度啥的
5 地理编码器(CLGeocoder)
作用: 经纬度<->地名
步骤:
-实例化地理编码器
-经纬度->地名reverseGeocodeLocation
-地名->经纬度geocodeAddressString
块代码中placeMarks也是数组
//块代码生动解释
块代码是一组预先定义好的程序,可以作为参数被传递,在需要的时候被执行
使用场景,一个类给另一个类传数据,发送数据类的方法中,中包含了要传送的数据,但是方法实现的结果没有,所以要给方法添加一个block参数,来传递数据
1: 定义block,作为参数添加到方法
2: 定义block类型的成员变量保存block参数()
3: 判断成员变量block是否为空,传进block参数值(数组/字典..)
4: 调用方调用就能得到参数值了!~~
定义的数组程序,作为参数,传给下家!~~
方法中添加block为参数,建立成员变量保存block参数,把数组赋值给成员变量block,并执行,谁调用了方法,block中储存的之久传给了谁!~~
//MVC模式示意图:
Controller->View
|
Model->Services
|
DB/Networking
---------------天气小项目---------------
POST请求
URL:XML显示页面URL路径
数据体:火狐拦截的
发送异步请求,获取Data(XML的数据)
/* Parser:解析 */
-----解析XML数据步骤------
1:实例化XML解析器并添加Data(NSXMLParser)
2:设置代理
3:开启解析器[parser parse]
4:实现六个代理方法
创建成员变量,字符串,数组
--"开始文档"(DidstartDucument)
{
判断为空,实例化可变字符串
判断为空,实例化可变数组
}
--"开始节点"(DidStartElement 参数:elementName节点名字)
{
判断如果字符为开始的数组字符,清空可变数组;清空字符串(非在判断下)
}
--"发现节点内容"(foundCharacters 参数:string被发现的字符串)
{
成员变量字符串appendString:sting
}
--"结束节点"(didEndElement)
{
判断字符是否为string(看是不是string,是,节点就可以结束了)
将内容添加进可变数组
}
--"结束文档"
{
将可变数组转化为模型,如果需要可以用block传走
}
--"处理错误"(parseErrorOccurred)//Occurred:发生 localize:局部化
{
打印错误parseError.localizeDescription
[数组 removeAllObjects];//清理
[字符串 setString:@""];
}
PS:XLM解析,就是依次将每条节点的内容填进可变数组,数组转化为模型,
可变字符串用来拼接节点内容,可变数字用来贮存节点内容!~~
------------------------------
补充
1 修改弹框内容
1 info plist添加 private location 后面写话
2 bundle identifi 更改
删除软件 clean
location 包含经纬度 时间
模拟器设置
//设置模拟器在哪(当前位置) 模拟你走了多远
product-》Debug-》simulate location
//设置模拟器启动在那里(启动位置)
product-》Scheme-》Edit Scheme-》Options
-》“勾选allow LocationSimulate”default后面设置
//Resource-》 CPX File(描述位置)-》创建一个xml文件
文件中就有 经纬度 你可更改/模拟你的位置
//获取当前用户的位置(经纬度)
代理方法
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
ios6:
//跟踪地图位置
[_mapView setUserTrackingMode:枚举];
直接定位到细节位置
ios7:
//跟踪地图位置
[_mapView setUserTrackingMode:枚举];
再加上显示周边信息方法
[mapView setRegion:枚举 animated:YES];
才能直接定位到详细位置
MapKit/CoreLocation框架 总结的更多相关文章
- CoreLocation框架的使用
CoreLocation框架使用 一.地图和定位的简介 1.应用场景 周边:找餐馆/找KTV/找电影院(团购APP) 导航:根据用户设定的起点和终点,进行路线规划,并指引用户如何到达(地图APP) 2 ...
- CoreLocation 框架
获取设备的地理位置和方向 一.概述 CoreLocation框架,它提供了如下几种服务 确定设备的地理位置 高度 方向 或到附近 iBeacon 的相对位置. 这个框架使用所有可用的车载硬件.如 Wi ...
- CoreLocation框架的使用---定位,求两地距离
前言: 在iOS开发中,有关导航,周边的开发,必须基于2个框架: Map Kit :用于地图展示 Core Location :用于地理定位 用户隐私的保护 从iOS 6开始,苹果在保护用户隐私方 ...
- 地图定位CoreLocation框架,地理位置编码与反编码
在现代互联网时代,越来越多的应用,都用到了地图定位功能,在iOS开发中,想要加入这种功能,必须基于两个框架进行开发: 1.Map Kit:用于显示地图, 2.CoreLocation:用于显示地理位置 ...
- IOS CoreLocation框架的使用(用于地理定位)
● 在移动互联网时代,移动app能解决用户的很多生活琐事,比如 ● 导航:去任意陌生的地方 ● 周边:找餐馆.找酒店.找银行.找电影院 ● 在上述应用中,都用到了地图和定位功能,在iOS开发中 ...
- iOS定位--CoreLocation框架
CoreLocation框架的使用 // 首先导入头文件 #import <CoreLocation/CoreLocation.h> CoreLocation框架中所有数据类型的前缀都是C ...
- [iOS 利用MapKit和CoreLocation框架打造精简的定位和导航]
运行效果: 一.利用<CoreLocation/CoreLocation.h>定位 创建变量 CLLocationManager *locationManager , ...
- CoreLocation框架的使用---地理编码
#import "ViewController.h" #import <CoreLocation/CoreLocation.h> @interface ViewCont ...
- iOS:地图:MapKit和CoreLocation
地图:MapKit和CoreLocation 简介: 现在很多的社交软件都引入了地图和定位功能,要想实现这2大功能,那就不得不学习其中的2个框架:MaKit和CoreLocation CoreLoca ...
随机推荐
- 一分钟读懂MySQL分布式消息的处理
在很多MYSQL环境中,对于MYSQL的分布式事物处理一直是个难题,在当前互联网环境中,大多数应用系统是基于SOA的很多复杂接口之间的调用,并且事物之间的处理优先级也是有先后的,所以对于实际入库的数据 ...
- linux dd 命令详解
dd 是 Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换. 名称: dd 使用权限: 所有使用者dd 这个指令在 manual 里的定义是 ...
- linux免交互登陆远程主机并执行命令(密钥对和Expect)
原文章摘自:http://lizhenliang.blog.51cto.com/7876557/1607723/ Linux下实现免交互登陆一般有两种: 1. SSH无密码认证方式 客户端使用ssh- ...
- Scrapy的中Css 选择器
//通过 名为 video_part_lists 的Class 中下面的 li 标签 liList = response.css('.video_part_lists li') for li in l ...
- 数据结构图文解析之:直接插入排序及其优化(二分插入排序)解析及C++实现
0. 数据结构图文解析系列 数据结构系列文章 数据结构图文解析之:数组.单链表.双链表介绍及C++模板实现 数据结构图文解析之:栈的简介及C++模板实现 数据结构图文解析之:队列详解与C++模板实现 ...
- Zabbix监控disk performance
概述 zabbix获取/sys里面的磁盘信息并分析来监控disk performance sysfs是Linux内核中设计较新的一种虚拟的基于内存的文件系统,它的作用与 proc 有些类似(默认挂载在 ...
- 迅雷9、迅雷极速版之迅雷P2P加速:流量吸血鬼?为什么你装了迅雷之后电脑会感觉很卡很卡?
原文地址:http://www.whosmall.com/post/90 关闭极速版迅雷ThunderPlatform.exe进程 ThunderPlatform.exe目的:利用P2P技术进行用户间 ...
- Shell文件权限和脚本执行
一.预备知识 1.shell的作用 2.常识 (1)Tab键自动补全 使用Terminal时,输入命令的前几个字母,敲tab会自动补全命令或文件名.目录等. 好处:操作速度更快:不容易出错: ...
- 如何优化用SQL语句INSERT INTO … SELECT插入数据时锁全表的问题
1.binlog format 启用Row Based Replication(行复制)模式: SET GLOBAL binlog_format = 'ROW'; 如果你想永久的启用这个模式,请修改m ...
- git版本控制管理实践-2
给网站设置一个 "根目录下的logo.ico", 还是很有必要的,比如赶集网,这时在 "历史"搜索时, 就可以根据 网站的 logo.ico 很轻松的就能够找到 ...