iPhone Locate 定位技术

转载 2012年03月26日 09:56:22

iPhone Locate 定位技术


其实使用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:,最常见的是用户取消使用定位信息。

蓝牙4.0BLE之iBeacon 在ios上的应用-室内定位 [原创,多图,视频]

笔者手机上装了很多App store上的蓝牙4.0 BLE的软件, 其中 AirLocate 是苹果公司推出iBeacon的测试软件,  Locate iBeacons 是一款第三方的软件, 能实现...
  • mzy202
  • mzy202
  • 2014年03月03日 12:21
  • 32244

UWB定位,新一代的精确定位技术

UWB定位,新一代的精确定位技术 超宽带(UWB)无线定位技术由于功耗低、抗多径效果好、安全性高、系统复杂度低,尤其是能提供非常精确的定位精度等优点,而成为未来无线 定位技术的热点和首选。文章将U...
  • h_meichuan
  • h_meichuan
  • 2015年12月08日 22:21
  • 4925

解决Selenium弹出新页面无法定位元素问题(Unable to locate element)

Python 2.7 IDE Pycharm 5.0.3环境细节详见Python+Selenium+PIL+Tesseract真正自动识别验证码进行一键登录对于同一页面无法定位元素问题请见姊妹篇...
  • MrLevo520
  • MrLevo520
  • 2016年07月16日 20:13
  • 25714

解决网页元素无法定位(NoSuchElementException: Unable to locate element)的几种方法

Python 2.7 IDE Pycharm 5.0.3姊妹篇请见解决Selenium弹出新页面无法定位元素问题(Unable to locate element) 只解决一个问题--NoSuc...
  • MrLevo520
  • MrLevo520
  • 2016年07月19日 11:21
  • 8053

android6.23 locate定位服务

public class MainActivity extends AppCompatActivity { private Button button; @Override ...
  • qq_34767498
  • qq_34767498
  • 2016年06月24日 12:05
  • 242

我的iphone6土豪金被偷如何使用定位找回手机?

联系QQ:291037083  他们来帮您,他们更专业,更效率协助丢失手机的客户100%找回手机-诚信服务-值得信赖    苹果手机外形时尚,功能强大,是很多人的心头爱。但是果粉们要小心了,年关来临...
  • q1686437676
  • q1686437676
  • 2015年04月10日 06:38
  • 419

iphone定位 基本知识

找到一个关于iphone定位的的资料,收藏一下 其实使用iphone的定位系统开发软件是很简单的一件事,下面我们就来认识一下iphone的定位系统的使用。  1.Getting the Use...
  • zhenxi_20
  • zhenxi_20
  • 2014年03月25日 11:18
  • 301

iOS Pokemon Go试玩,未越狱的iPhone伪造GPS定位信息

//联系人:石虎  QQ: 1224614774昵称:嗡嘛呢叭咪哄 最近Pokemon Go 火的不行,结果人家服务器扛不住了,只接受GPS定位信息在澳洲的客户端的登陆请求。今天自己搞了...
  • shihuboke
  • shihuboke
  • 2017年07月08日 22:09
  • 270

iPhone GPS定位系统 实例操作

iPhone GPS定位系统 实例操作是本文要介绍的内容,先来看本文详细内容。如今,配备GPS功能的移动设备越来越普遍了,使用GPS定位系统,可以精确地定位你当前所在的地理位置,但由于GPS接收机需要...
  • strliu
  • strliu
  • 2012年05月25日 23:37
  • 1258

关于iphone定位的基本知识

1.Getting the User’s Current Location 获取用户当前位置。 获取位置的方式有三种:GPS, cell tower triangulation(蜂窝站点)...
  • likendsl
  • likendsl
  • 2012年05月25日 13:02
  • 10291
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iPhone Locate 定位技术
举报原因:
原因补充:

(最多只允许输入30个字)