一.基本知识
iPhone可以使用CoreLocation框架确定他的物理位置,可以利用三种技术来实现该功 能:GPS,WIFI 定位和蜂窝 基站三角网定位。但在程序中我们只需设定我们希望的精度级别,由CoreLocation决定采用哪种技术可以更好的满足我们的请求。
二.具体介 绍
1.位置管理器
CLLocationManager *locationManager = [[CLLocationManager alloc] init];//创建位置管理器
locationManager.delegate=self; //设置代理
locationManager.desiredAccuracy=kCLLocationAccuracyBest;// 指定需要的精度级别
locationManager.distanceFilter=1000.0f;//设置距离筛选器
[locationManager startUpdatingLocation];//启动位置管理器
2.位置管理器代理
主要的代理方法有两个
//确定当前位置 和位置更新了时调用这个方法
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
{
NSString *latitudeString=[[NSString alloc] initWithFormat:@"%g",newLocation.coordinate.latitude];
//latitudeLabel.text=latitudeString;
[latitudeString release];
NSString *longitudeString=[[NSString alloc] initWithFormat:@"%g",newLocation.coordinate.longitude];
//longitudeLabel.text=longitudeString;
[longitudeString release];
}
//位置查询遇到错误时调用这个方法
- (void)locationManager:(CLLocationManager *)manager
didFailWithError:(NSError *)error
{
NSString *errorType = (error.code == kCLErrorDenied) ?
@"Access Denied" : @"Unknown Error";
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"Error getting Location"
message:errorType
delegate:nil
cancelButtonTitle:@"Okay"
otherButtonTitles:nil];
[alert show];
[alert release];
}
附 一张截图: