当前位置: 代码迷 >> Iphone >> IPhone开发时应用MKMapView在显示地图的同时获取用户当前坐标的方法
  详细解决方案

IPhone开发时应用MKMapView在显示地图的同时获取用户当前坐标的方法

热度:77   发布时间:2016-04-25 06:40:49.0
IPhone开发时使用MKMapView在显示地图的同时获取用户当前坐标的方法

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

?

?

  相关解决方案