IOS Developer MapKit.h

AlexanderH

新手上路
注册
2013-09-28
消息
4
荣誉分数
0
声望点数
1
所在地
ottawa
IPhone开发时使用MKMapView在显示地图的同时获取用户当前坐标的方法





最近在公司有一个项目需要在IPhone手机上显示地图并获取到用户当前的位置信息,从网上参考了很多大侠的文章。发现均是同时使用MKMapView和CLLocationManager两个类才实现的。其实只需要使用MKMapView一个类就可以同时实现显示地图并获取到坐标的功能。



按我目前的理解:



MKMapView应该是使用在需要显示地图的程序中。



CLLocationManager应该是使用在不需要显示地图但需要获取用户坐标信息的程序中。



另外,从网上看到过一位同志说MKMapView获取到的坐标精度要高于CLLocationManager获取到的坐标精度,因为没有测试,不敢妄下结论。



程序的核心部分,其实就是使用了MKMapView的didUpdateUserLocation事件,有关MKMapView的使用方法网上有一大堆,请自行搜索参考。以下是相关代码,已经在XCode4.3 IOS5.0的手机上测试通过,供大家参考。



程序头文件:





#import <CoreLocation/CoreLocation.h>

#import <MapKit/MapKit.h>





@interface UnitMapViewController : UIViewController<MKMapViewDelegate>

{

MKMapView *map;

}



@End



程序源文件:





#import "UnitMapViewController.h"

#import "UnitViewController.h"



@interface UnitMapViewController ()



@End



@implementation UnitMapViewController



NSString *userLatitude;

NSString *userlongitude;



- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

{

self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

if (self) {

// Custom initialization

}

return self;

}



- (void)viewDidLoad

{



[super viewDidLoad];

userLatitude=@"";

userlongitude=@"";





map=[[MKMapView alloc] initWithFrame:[self.view bounds]];

map.mapType=MKMapTypeStandard;

map.delegate=self;

map.showsUserLocation=YES;





[self.view addSubview:map];





}



- (void)viewDidUnload

{

[super viewDidUnload];

// Release any retained subviews of the main view.

}



- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

{

return (interfaceOrientation == UIInterfaceOrientationPortrait);

}



-(void) mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation{

NSString *lat=[[NSString alloc] initWithFormat:@"%f",userLocation.coordinate.latitude];

NSString *lng=[[NSString alloc] initWithFormat:@"%f",userLocation.coordinate.longitude];



userLatitude=lat;

userlongitude=lng;



MKCoordinateSpan span;

MKCoordinateRegion region;



span.latitudeDelta=0.010;

span.longitudeDelta=0.010;

region.span=span;

region.center=[userLocation coordinate];





[map setRegion:[map regionThatFits:region] animated:YES];



}

@End
 
最后编辑:
后退
顶部