• 手机站
  • 收藏
聚培教育网合作机构 > 上海达内教育
上海达内教育
400-998-6158
上海达内教育是一家由留学海归创办的高端职业教育培训机构,是中国人才培养平台、人才输送平台。
上海达内教育

关于iphone定位的基本知识

软件测试学习网

更新时间:2021-07-15 浏览:175
核心提示:Getting the User’s Current Location获得客户所在位置。获得部位的方法有三种:GPS, cell tower triangulation(蜂窝状网站),

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米的精准度。还能够设定为别的变量定义:

[cpp]

extern const CLLocationAccuracy kCLLocationAccuracyBestForNavigation ;

extern const CLLocationAccuracy kCLLocationAccuracyBest;

extern const CLLocationAccuracy kCLLocationAccuracyNearestTenMeters;

extern const CLLocationAccuracy kCLLocationAccuracyHundredMeters;

extern const CLLocationAccuracy kCLLocationAccuracyKilometer;

extern const CLLocationAccuracy kCLLocationAccuracyThreeKilometers;4.Setting the Distance Filter

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协议书界定了2个方 法,而且这两个方式 全是可选择的。在其中一个方式 是当明确所在位置或者位置信息更改时启用。另一个方式 是当碰到错误报告时启用

8.Getting Location Updates

当Location Manager想通告它的代理商所在位置时,它会启用

locationManager:didUpdateToLocation:fromLocation: 方式 。

这一方式 有3个主要参数**个主要参数Location Manager。第二个主要参数是一个CLLocation目标用于明确所在位置,第三个是CLLocation 目标用于明确近期一次升级的部位。该方式 启用时,此前的location目标会被置空。

9.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还有一个实例方法来对你说的2个CLLocation目标中间的间距。这一方式 叫:getDistanceFrom:

它是那样工作中的:

CLLocationDistance distance = [fromLocation getDistanceFrom:toLocation];

回到2个时间范围内的间距,有时它不是考虑到海拔高度的,因此要自身测算间距。

10.Error Notifications

假如Core Location不可以指定你当今的部位,它将启用CLLocation的第二个代理商方式 :locationManager:didFailWithError:,最普遍的是客户撤销应用精准定位信息内容。

更多>同类资讯
更多>相关课程
顶部