首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
其他好文
> 详细
使用系统的CoreLocation定位
时间:
2015-12-04 18:38:17
阅读:
118
评论:
0
收藏:
0
[点我收藏+]
标签:
//
// ViewController.m
// LBS
//
// Created by tonnyhuang on 15/8/28.
// Copyright (c) 2015年 tonnyhuang. All rights reserved.
//
#import "ViewController.h"
#import <CoreLocation/CoreLocation.h>
//首先,我们需要在工程中导入CoreLocation系统框架。然后在我们的控制器中引入头文件。
//然后,声明一个CLLocationManager对象作为成员变量,用于定位获取经纬度坐标,并遵守协议CLLocationManager的协议。
@interface ViewController ()<CLLocationManagerDelegate>
{
CLLocationManager *_locationManager;
}
@end
@implementation ViewController
//实现其中的代理方法
#pragma mark - CLLocationManagerDelegate
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation {
//获取经度
NSLog(@"经度 == %lf", newLocation.coordinate.longitude);
//获取纬度
NSLog(@"纬度 == %lf", newLocation.coordinate.latitude);
//获取当前所在的城市名
CLGeocoder *geocoder = [[CLGeocoder alloc] init];
//根据经纬度反向地理编码出地址信息
[geocoder reverseGeocodeLocation:newLocation completionHandler:^(NSArray *placemarks, NSError *error) {
CLPlacemark *placemark = [placemarks objectAtIndex:0];
NSLog(@"%@", placemark.name);
//获取城市
NSString *city = placemark.locality;
//四大直辖市的城市信息无法通过locality获得,只能通过获取省份的方法来获得(如果city为空,则可知为直辖市
if (!city) {
city = placemark.administrativeArea;
} else if (error == nil && [placemarks count] == 0){
NSLog(@"no result were returned");
} else if (error != nil) {
NSLog(@"error = %@", error);
}
NSLog(@"city = %@", city);
}];
//系统会一直更新数据,直到选择停止更新,因为我们只需要获得一次经纬度即可,所以获取之后就停止更新
}
//最后在viewDidLoad中初始化定位管理器。
- (void)viewDidLoad {
[super viewDidLoad];
[self initializeLocationService];
}
- (void)initializeLocationService {
//初始化定位管理器
_locationManager = [[CLLocationManager alloc] init];
//设置代理
_locationManager.delegate = self;
//设置定位精确度到米
_locationManager.desiredAccuracy = kCLLocationAccuracyBest;
//设置过滤器为无
_locationManager.distanceFilter = kCLDistanceFilterNone;
//开始定位
[_locationManager requestAlwaysAuthorization];
//取得定位权限,有两个方法,取决于你的定位使用情况
[_locationManager startUpdatingLocation];
}
//如果需要正常定位,相对iOS7而言,iOS8需要额外处理两个地方。
//1. 工程的plist文件里面添加两个字段:NSLocationAlwaysUsageDescription,
//NSLocationWhenInUseUsageDescription,type类型均为string,值可以根据你的需要填写(也可以不填),填写的内容会展示在APP提示用户是否允许定位的alert内容里面,具体效果可以自行测试,这里就不额外截图。
这儿的位置不要错误 在上边的info.plist中添加字段
//2. 调用定位方法之前需要额外调用一个函数,直接在上面iOS7初始化定位服务的方法里面修改即可,具体如下:
// 开始定位
// 取得定位权限,有两个方法,取决于你的定位使用情况
// 一个是requestAlwaysAuthorization,一个是requestWhenInUseAuthorization
//[_locationManager requestAlwaysAuthorization];//这句话ios8以上版本使用。
//[_locationManager startUpdatingLocation];
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
使用系统的CoreLocation定位
标签:
原文地址:http://www.cnblogs.com/tian-sun/p/5019975.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
分布式事务
2021-07-29
OpenStack云平台命令行登录账户
2021-07-29
getLastRowNum()与getLastCellNum()/getPhysicalNumberOfRows()与getPhysicalNumberOfCells()
2021-07-29
【K8s概念】CSI 卷克隆
2021-07-29
vue3.0使用ant-design-vue进行按需加载原来这么简单
2021-07-29
stack栈
2021-07-29
抽奖动画 - 大转盘抽奖
2021-07-29
PPT写作技巧
2021-07-29
003-核心技术-IO模型-NIO-基于NIO群聊示例
2021-07-29
Bootstrap组件2
2021-07-29
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!