iPhone开发之CoreLocation定位功能(6)

        学了iPhone的CoreLocation之后,再回想Android的定位开发,真是省事了不少,iPhone对定位功能开发这一模块封装的很好,只需几步,便可以获取到设备所在的位置等多项参数!

        1.启动XCode4.3.2,单击菜单项File->New->Project...,以Sigle View Application模板新建项目,并命名为WhereAmI:

        iPhone开发之CoreLocation定位功能(6)_第1张图片

        2.单击ViewControler.h头文件,因为CoreLocation框架并不属于UIKit框架,所以需要另外引入,并添加协议:

#import <UIKit/UIKit.h>
#import <CoreLocation/CoreLocation.h>

@interface ViewController : UIViewController<CLLocationManagerDelegate>
{
    CLLocationManager *locationManager;
    CLLocation *startPoint;
    UILabel *latLabel;
    UILabel *lonLabel;
    UILabel *distance;
}

@property(retain,nonatomic)CLLocationManager *locationManager;
@property(retain,nonatomic)CLLocation *startPoint;

@property(retain,nonatomic)IBOutlet UILabel *latLabel;
@property(retain,nonatomic)IBOutlet UILabel *lonLabel;
@property(retain,nonatomic)IBOutlet UILabel *distance;

@end


       3.单击ViewControler.m文件,添加以下代码:

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController
@synthesize startPoint;
@synthesize locationManager;
@synthesize latLabel;
@synthesize lonLabel;
@synthesize distance;

- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view, typically from a nib.
    self.locationManager = [[CLLocationManager alloc]init];
    self.locationManager.delegate = self;
    self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    [locationManager startUpdatingLocation];
}

- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

#pragma mark -
#pragma mark CLLocationManagerDelegate Methods
-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
    if(startPoint==nil)
        startPoint = newLocation;
    //经度    
    NSString *lon = [[NSString alloc]initWithFormat:@"%g",newLocation.coordinate.longitude];
    self.lonLabel.text = lon;
    [lon release];
    //纬度    
    NSString *lat = [[NSString alloc]initWithFormat:@"%g",newLocation.coordinate.latitude];
    self.latLabel.text = lat;
    [lat release];
    //计算移动距离
    CLLocationDistance ld = [newLocation distanceFromLocation:startPoint];
    NSString *distanceString = [[NSString alloc]initWithFormat:@"%gm",ld];
    self.distance.text = distanceString;
    [distanceString release];
}

-(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{
    NSString *errorType = (error.code == kCLErrorDenied)?@"Access Denied":@"Unkown Error";
    UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Error getting location" message:errorType delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
    [alert show];
    [alert release];
}

@end

       4.运行,效果如下:

        
 

你可能感兴趣的:(manager,iPhone,interface,XCode4,CLLocation,distance)