`

iphone定位 基本知识

阅读更多
iphone定位 基本知识

找到一个关于iphone定位的的资料,收藏一下

其实使用iphone的定位系统开发软件是很简单的一件事,下面我们就来认识一下iphone的定位系统的使用。
1.Getting the User’s Current Location
获取用户当前位置。
获取位置的方式有三种:GPS, cell tower triangulation(蜂窝站点), 和
Wi-Fi Positioning Service (WPS).其中GPS是最精确的定位方式,但是在第一代iphone上没有。GPS是通过读取很多卫星微波信号来确定当前位置的。蜂窝站点通过 iphone周围的站点计算出来的,在蜂窝站点密集的地方使用这种技术可以达到一个准确的值,比如在城市但在蜂窝站点不密集的地方效果就没那么好了。最后 一个WPS使用的是连接到Wi-Fi网络的IP地址来确定位置,这将会有较大的误差。这三种方式都会消耗大量的电。怎么才能即实现定位功能又省电呢?下面 的方法就可以解决:当使用Core Location时,可以选择精确度,谨慎的选择你所需要的准确度,可以帮助你省很多电。Core Location使用的技术隐藏在应用程序中。我们无需选择使用GPS、蜂窝站点技术还是WPS,我们只要告诉它我们需要的准确度它会自己决定选什么技术 来满足我们的需求。
2.The Location Manager
Core Location的接口是很容易使用的。主要用到的类是CLLocationManager,就是通常说的Location Manager。为了使用Core Location我们需要创建Location Manager的实体:
CLLocationManager *locationManager = [[CLLocationManager alloc] init];
这 样我们就创建了 Location Manager的实体,但是我们还没有开始定位。我们需要指派一个代理给Location Manager。当定位信息改变时Location Manager将调用代理方法。定位的过程会花一段时间平均几秒钟。代理方法必须遵循CLLocationManagerDelegate协议。
3.Setting the Desired Accuracy
设置代理后,你还要设置需要的准确度。就像我们刚刚说的精确度越高越耗电。如果你只是要是应用程序确定是哪个国家或是哪个州那么就不要设置很高的精确度。记住一点有时候你并不能得到你需要的精确度。
下面说一个设置代理和设置精确度的例子:
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
精 确度使用的是一个double类型的常量。单位是米,所以如果你设置desiredAccuracy=10那么精确度就是10米,这就告诉 Location Manager尽可能达到10米的精确度。还可以设置为其他常量:kCLLocationAccuracyBest,
you can also use kCLLocationAccuracyNearestTenMeters, kCLLocationAccuracy
HundredMeters, kCLLocationAccuracyKilometer, and kCLLocationAccuracyThree
Kilometers.
4.Setting the Distance Filter
默认情况是这样的,每当位置改变时Location Manager就调用一次代理。通过设置distance filter可以实现当位置改变超出一定范围时Location Manager才调用相应的代理方法。这样可以达到省电的目的。
例如:locationManager.distanceFilter = 1000.0f;
如果设置默认值:
locationManager.distanceFilter = kCLDistanceFilterNone;
5.Starting the Location Manager
开始定位
当你转备好为定位消耗电池时我们可以调用
[locationManager startUpdatingLocation];
来告诉 Location Manager开始定位
6.Using the Location Manager Wisely
如果你只需要确定当前位置而不需要进一步定位,当Location Manager查询到当前位置时需要通知代理停止定位。
停止方法: [locationManager stopUpdatingLocation];
7.The Location Manager Delegate
Location Manager必须遵守CLLocationManagerDelegate协议,CLLocationManagerDelegate协议定义了两个方 法,并且这两个方法都是可选的。其中一个方法是当确定当前位置或是位置信息改变时调用。另一个方法是当遇到错误信息时调用
8.Getting Location Updates
当Location Manager想通知它的代理当前位置时,它会调用
locationManager:didUpdateToLocation:fromLocation: 方法。
这个方法有3个参数第一个参数Location Manager。第二个参数是一个CLLocation对象用来确定当前位置,第三个是CLLocation 对象用来确定最近一次更新是的位置。该方法调用时,先前的location对象会被置空。
6.Getting Latitude and Longitude Using CLLocation
经纬度
位置信息是通过使用CLLocation类的实例从Location Manager那里得到的。这个类有5各属性。latitude和longitude被封装在coordinate属性中。
获取方式如下:
CLLocationDegrees latitude = theLocation.coordinate.latitude;
CLLocationDegrees longitude = theLocation.coordinate.longitude;
CLLocation对象还可以告诉你精确度。
horizontalAccuracy属性描述调整的中心点。horizontalAccuracy值越大越不精确。
CLLocation 还有一个叫altitude的属性用来表示海拔
CLLocationDistance altitude = theLocation.altitude;
每一个CLLocation对象都有一个叫verticalAccuracy的属性来判断精确度。海拔数值可能会有verticalAccuracy大小的误差,当verticalAccuracy为负值时,那是Core Location在通知你不能获取海拔高度。
CLLocation的另一个属性timestamp用来告诉Location Manager是什么时候定位的。CLLocation还有一个实例方法来告诉你的两个CLLocation对象之间的距离。这个方法叫:getDistanceFrom:
它是这样工作的:
CLLocationDistance distance = [fromLocation getDistanceFrom:toLocation];
返回两个时间段内的距离,有时候它是不考虑海拔的,所以要自己计算距离。
7.Error Notifications
如果Core Location不能指定你当前的位置,它将调用。CLLocation的第二个代理方法:locationManager:didFailWithError:,最常见的是用户取消使用定位信息。
分享到:
评论

相关推荐

    iphone开发入门经典源码

    iPhone开发入门经典》基于Apple最新发布的iPhoneOS3.0编写,循序渐进地介绍了从事iPhoneF发所需的基本知识,包括使用Xcode、Interface Builder、objective-C和(Cocoa Touch等开发工具,设计及美化用户界面,读写和...

    iPhone开发基础教程PDF(含源代码)

     1.3 必备知识  1.4 编写iPhone应用程序有何不同  1.4.1 只有一个正在运行的应用程序  1.4.2 只有一个窗口  1.4.3 受限访问  1.4.4 有限的响应时间  1.4.5 有限的屏幕大小  1.4.6 有限的系统资源  1.4.7 ...

    iphone3开发基础教程

    第14章 使用Core Location定位功能 359 14.1 位置管理器 359 14.1.1 设置所需的精度 360 14.1.2 设置距离筛选器 360 14.1.3 启动位置管理器 360 14.1.4 更明智地使用位置管理器 360 14.2 位置管理器委托 361 14.2.1 ...

    Learn iPhone and iPad cocos2d Game Development

    第3章 基础知识  3.1 cocos2d中的单件类  3.2 director类  3.3 场景图  3.4 ccnode类层次体系  3.5 ccnode类  3.5.1 节点的处理方式  3.5.2 动作的处理方式  3.5.3 消息调度  3.6 场景和层  3.6.1 ccscene...

    iOS 9开发指南 [管蕾 编著] 2015年版(2-2)

    全书共39章,循序渐进地讲解了iOS 9应用开发的基本知识。本书从搭建开发环境讲起,依次讲解了Objective-C语言基础,Swift语言基础,Cocoa Touch,Xcode Interface Builder界面开发,使用Xcode编写MVC程序,文本框和...

    iOS 9开发指南 2015年版)(2-1)

    全书共39章,循序渐进地讲解了iOS 9应用开发的基本知识。本书从搭建开发环境讲起,依次讲解了Objective-C语言基础,Swift语言基础,Cocoa Touch,Xcode Interface Builder界面开发,使用Xcode编写MVC程序,文本框和...

    《jQuery Mobile快速入门》.((美)Brad Broulik ).[PDF]

    作为jquery mobile的入门级读物,《jquery mobile快速入门》以示例方式讲解了jquery mobile的基本知识和核心特性,内容系统全面,便于理解。 《jquery mobile快速入门》总共分为10章,内容包括jquery mobile的基础...

    matlab超声波源码-BluetoothProximity:适用于蓝牙和超声波接近检测的iOS应用

    这是一个基本的iOS应用程序,用于记录来自iPhone上的蓝牙接收器和其他传感器的信息。 记录数据的目的是了解日常使用的设备之间的蓝牙无线电传播通道。 通过收集这些数据,可以开发出使用手机状态知识以及蓝牙接收...

    《iOS6开发指南》精彩书摘

    然后对标签、按钮、文本框、导航栏等基本控件的介绍。接下来是屏幕布局的内容以及一个较为复杂的控件—选择器,最后是关于iOS6中的Collection视图的内容。 第5章“表视图”。了解表视图的组成、表视图类的构成、表...

    ThinkSNS开源社交论坛系统 v4.6.1 bulid0630

    ThinkSNS(简称TS),是智士软件旗下的开源微博、社交系统,含微博、论坛、资讯、频道、商城、活动、定位、找人、直播、问答等一系列功能。采用PHP+MySQL技术,核心(微博、用户系统)+多应用+多插件的产品模式。拥有...

    Android程序设计基础

    第1~3章介绍Android的基础知识和基本概念;第4~6章介绍2D图形、多媒体和存储本地数据;第7~10章介绍高级主题,包括联网、定位与环境感知、数据库和3D图形;附录介绍了Android与Java之间的差别以及参考书目。  ...

    android开发资料大全

    基本控件及基本动画效果dem 2011android面试题目及其答案大全.rar Android面试题集锦 (陆续更新)(最新2012-6-18) 【eoeAndroid Android相关的面试题最强汇总】 ZTE—adroid笔试题附答案版 iceskysl: 说说我招聘...

    ThinkSNS-PHP

    ThinkSNS(简称TS),是智士软件旗下的开源微博、社交系统,含微博、论坛、资讯、频道、商城、活动、定位、找人、直播、问答等一系列功能。采用PHP+MySQL技术,核心(微博、用户系统)+多应用+多插件的产品模式。拥有...

    Google Android SDK开发范例大全(第3版) 1/5

    基本信息 Google Android SDK开发范例大全(第3版) 作者:王世江(改编), 佘志龙(作者), 陈昱勋(作者), 郑名杰(作者), 等(作者) 出版社: 人民邮电出版社; 第3版 (2011年11月1日) 丛书名: 移动开发系列丛书 平装: ...

    Google Android SDK开发范例大全(第3版) 4/5

    基本信息 Google Android SDK开发范例大全(第3版) 作者:王世江(改编), 佘志龙(作者), 陈昱勋(作者), 郑名杰(作者), 等(作者) 出版社: 人民邮电出版社; 第3版 (2011年11月1日) 丛书名: 移动开发系列丛书 平装: ...

    Google Android SDK开发范例大全(第3版) 3/5

    基本信息 Google Android SDK开发范例大全(第3版) 作者:王世江(改编), 佘志龙(作者), 陈昱勋(作者), 郑名杰(作者), 等(作者) 出版社: 人民邮电出版社; 第3版 (2011年11月1日) 丛书名: 移动开发系列丛书 平装: ...

    Google Android SDK开发范例大全(第3版) 5/5

    基本信息 Google Android SDK开发范例大全(第3版) 作者:王世江(改编), 佘志龙(作者), 陈昱勋(作者), 郑名杰(作者), 等(作者) 出版社: 人民邮电出版社; 第3版 (2011年11月1日) 丛书名: 移动开发系列丛书 平装: ...

    JAVA上百实例源码以及开源项目

    此时此景,笔者只专注Android、Iphone等移动平台开发,看着这些源码心中有万分感慨,写此文章纪念那时那景! Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这...

Global site tag (gtag.js) - Google Analytics