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框架 总结的更多相关文章

  1. CoreLocation框架的使用

    CoreLocation框架使用 一.地图和定位的简介 1.应用场景 周边:找餐馆/找KTV/找电影院(团购APP) 导航:根据用户设定的起点和终点,进行路线规划,并指引用户如何到达(地图APP) 2 ...

  2. CoreLocation 框架

    获取设备的地理位置和方向 一.概述 CoreLocation框架,它提供了如下几种服务 确定设备的地理位置 高度 方向 或到附近 iBeacon 的相对位置. 这个框架使用所有可用的车载硬件.如 Wi ...

  3. CoreLocation框架的使用---定位,求两地距离

    前言: 在iOS开发中,有关导航,周边的开发,必须基于2个框架: Map Kit :用于地图展示 Core Location :用于地理定位   用户隐私的保护 从iOS 6开始,苹果在保护用户隐私方 ...

  4. 地图定位CoreLocation框架,地理位置编码与反编码

    在现代互联网时代,越来越多的应用,都用到了地图定位功能,在iOS开发中,想要加入这种功能,必须基于两个框架进行开发: 1.Map Kit:用于显示地图, 2.CoreLocation:用于显示地理位置 ...

  5. IOS CoreLocation框架的使用(用于地理定位)

    ●  在移动互联网时代,移动app能解决用户的很多生活琐事,比如 ●  导航:去任意陌生的地方 ●  周边:找餐馆.找酒店.找银行.找电影院 ●  在上述应用中,都用到了地图和定位功能,在iOS开发中 ...

  6. iOS定位--CoreLocation框架

    CoreLocation框架的使用 // 首先导入头文件 #import <CoreLocation/CoreLocation.h> CoreLocation框架中所有数据类型的前缀都是C ...

  7. [iOS 利用MapKit和CoreLocation框架打造精简的定位和导航]

    运行效果:            一.利用<CoreLocation/CoreLocation.h>定位 创建变量 CLLocationManager *locationManager , ...

  8. CoreLocation框架的使用---地理编码

    #import "ViewController.h" #import <CoreLocation/CoreLocation.h> @interface ViewCont ...

  9. iOS:地图:MapKit和CoreLocation

    地图:MapKit和CoreLocation 简介: 现在很多的社交软件都引入了地图和定位功能,要想实现这2大功能,那就不得不学习其中的2个框架:MaKit和CoreLocation CoreLoca ...

随机推荐

  1. webpack ---loader,plugin下载命令

    css-loader:  cnpm install style-loader css-loader url-loader babel-loader sass-loader file-loader -- ...

  2. cocopod 中添加第三方框架,包含静态库文件,使用svn添加上传

    step one: 进入静态库文件的目录 cd 路径: step two:使用命令添加 svn add 静态库名字; 然后更新一下代码就OK

  3. 解决:WPS for Linux提示“系统缺失字体symbol、wingdings、wingdings 2、wingdings 3、webding”

    WPS for Linux提示“系统缺失字体symbol.wingdings.wingdings 2.wingdings 3.webding” 出现提示的原因是因为WPS for Linux没有自带以 ...

  4. 认识和使用NSOperation

    原文链接:http://www.jianshu.com/p/2de9c776f226 NSOperation是OC中多线程技术的一种,是对GCD的OC包装.它包含队列(NSOperationQueue ...

  5. jquery的offset().top 和position().top 详解 和如何用js实现

    1 jquery定义: offset().top 相对于当前文档的坐标(的高度) ps:包括滚动条卷去的高度 position().top 返回的是相对于其定位的祖辈元素的坐标(的高度) ps:包括滚 ...

  6. centos 7 安装 python-dev包提示No package python-dev available

    centos安装 python-dev包提示No package python-dev available: 出现此问题的原因是python-dev的包在centos的yum中不叫python-dev ...

  7. JavaScript中的正则表达式(终结篇)

    JavaScript中的正则表达式(终结篇) 在之前的几篇文章中,我们了解了正则表达式的基本语法,但那些语法不是针对于某一个特定语言的.这篇博文我们将通过下面几个部分来了解正则表达式在JavaScri ...

  8. 静态关键字static(2)

    static关键字主要有两种作用: 第一,为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关. 第二,实现某个方法或属性与类而不是对象关联在一起 具体而言,在Java语言中,static ...

  9. XInitThreads与XLIB

    XInitThreads函数通常需要尽早调用,一般要在XLIB的其他函数前调用 否则XLIB的函数可能会在调用时直接崩溃(多线程程序中) 最好的做法是,在main入口即调用XInitThreads函数

  10. 常用的网络命令--之...... Ipconfig详解

    ipconfig是运行微软的Windows9x/NT/2000/XP/Vista操作系统的电脑上用来控制网络连接的一个命令行工具.它的主要功用,包括用来显示现时网络连接的设置(/all参数),或通过/ ...