您的位置:首页 > 移动开发 > IOS开发

iOS <CoreLocation>定位框架的理解与运用

2015-10-02 17:51 309 查看
1.对iOS定位功能的初步了解:

现在的移动设备很多都提供定位服务,使用iOS系统的iPhone、iPod Touch和iPad都可以提供位置服务,iOS设备能提供3种不同途径进行定位:Wifi, 蜂窝式移动电话基站, GPS卫星

iOS 不像Android系统在定位服务编程时,可以指定采用哪种途径进行定位。iOS的API把底层这些细节屏蔽掉了,开发人员和用户并不知道现在设备是采用 哪种方式进行定位的,iOS系统会根据设备的情况和周围的环境,采用一套最佳的解决方案。这个方案是这样的,如果能够接收GPS信息,那么设备优先采用 GPS定位,否则采用Wifi或蜂窝基站定位,在Wifi和蜂窝基站之间优先使用Wifi,如果无法连接Wifi才使用蜂窝基站定位。

总体来说GPS定位优点是准确、覆盖面广阔,缺点是不能被遮挡(例如:在建筑物里面收不到GPS卫星信号)、GPS开启后比较费电。蜂窝基站不仅误差比较大,而且会耗费用户流量费。而Wifi定位是最经济实惠的。

2.CLLocationManager定位使用的类;CLLocationManager *manager = [[CLLocationManager alloc]init];

iOS8使用定位需在pilst里面添加NSLocationWhenInUseUsageDescriptio NSLocationAlwaysUsageDescription获取用户的授权。

使用定位启动时要与InfoPlist里面设置的Key一致,例:[manager requestWhenInUseAuthorization];

让系统自动帮助管理定位服务的开关,从而节约电量;[manager pausesLocationUpdatesAtuomatically];

3.CLLocationManagerDelegate方法
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{
(NSArray *)locations 这个数组里面有设备的当前定位的具体位置信息,可以通过[location
lastObject]获取最新的地理位置。

可以根据获取的地理位置信息通过反地理编码获得具体位置的地名:

CLGeocoder *reGeocoder = [[CLGeocoder alloc]init];
[reGeocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) {

CLPlacemark *mark = [placemarks lastObject];
addressLabel.text = mark.locality;城市名

}

{
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: