iOS地图及定位功能基本实现的详尽描述

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

首先创建一个viewController:

添加MapKit,CoreLocation框架

一、添加地图

1、初始化地图视图:

@PRoperty (nonatomic, strong) MKMapView *mapView;

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

2、设置地图的显示类型,三种:标准,卫星地图,混合

self.mapView.mapType {

MKMapTypeStandard=0,

MKMapTypeSatellite,

MKMapTypeHybrid };

3、定义地图是否可以放大缩小滑动,添加代理

self.mapView.zoomEnabled =YES;

self.mapView.scrollEnabled= YES;

self.mapView.delegate = self;

4、添加CoreLocation框架

添加一个地区的地理坐标位置(经纬度),北纬是正数,东经是正数;当前坐标表示郑州市位置

CLLocationCoordinate2D coordinate;

coordinate.latitude=34.7598711;

coordinate.longitude=113.663221;

5、表示显示区域的精度,值越小表示的范围越精确,值越大表示的范围越大,但是不精确

MKCoordinateSpan span = {100,100};

100在地图上表示100*111公里的范围

6、根据地理坐标和span创建表示区域的值。(通常一个圆,和半径)

初始化方法(1):MKCoordinateRegion region ={coordinate,span};

(2):MKCoordinateRegion region;

region=MKCoordinateRegionMake(coordinate,span);

7、告诉地图显示的区域,并讲地图添加到当前视图上

[self.mapView setRegion:region];

[self.view addSubview:self.mapView];

8、为坐标位置添加注解

MKPointAnnotation *pinAnnotation =[[MKPointAnnotation alloc] init];

pinAnnotation.coordinate=coordinate;

pinAnnotation.title=@"郑州";

pinAnnotation.subtitle=@"河南青云信息技术";

[self.mapView addAnnotation:pinAnnotation];

9、当要对显示当注解自定义时,调用下面方法,用来设置显示界面

- (MKAnnotationView*)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation

{if([annotation isKindOfClass:[MKUserLocationclass]]) {returnnil;

}staticNSString *indentifier =@"pinView";

MKPinAnnotationView*pinView =(MKPinAnnotationView*)[mapView dequeueReusableAnnotationViewWithIdentifier:indentifier];if(nil ==pinView) {

pinView=[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:indentifier];

}

pinView.pinColor=MKPinAnnotationColorPurple;

pinView.animatesDrop=YES;

pinView.canShowCallout=YES;returnpinView;

}

10、MKAnnotation 与 MKAnnotationView 的差异

MKAnnotation:

它在注解里实际上就是一个model,主要用于向视图提供相应的数据。 默认情况下,有三个属性:1、title2.subtitle3、coordinate

MKAnnotationView:

在注解里, 它是用于描述如何显示注解的, 换句话是确定是显示成蓝点还是显示成大头针。 在委托方法里来确定, 如果委托方法,返回nil,这个时候蓝点。如果想要显示成其它的视图,必须在代码里来实现

二、添加位置管理

1、初始化,并添加代理,设置精度

@property (nonatomic, strong) CLLocationManager *locationManager;

self.locationManager=[[CLLocationManager alloc] init];

self.locationManager.delegate=self;

self.locationManager.distanceFilter=500;

//对于位置管理来说,并非是精度越高越好。因为GPS模块是手机最耗电的模块,所以为最大限度让我们应用程序省电,需要根据具体的应用来设定具体的精度

self.locationManager.desiredAccuracy=kCLLocationAccuracyBest;

[self.locationManager startUpdatingLocation];

2、当位置更新时调用下面方法,可得出新旧两位置间的距离,新位置的坐标;并将地图显示在新坐标位置

- (void)locationManager:(CLLocationManager *)manager

didUpdateToLocation:(CLLocation*)newLocation

fromLocation:(CLLocation*)oldLocation

{

NSLog(@"%@",NSStringFromSelector(_cmd));CLLocationDistance distance=[newLocation distanceFromLocation:oldLocation];

NSLog(@"distance is %f",distance /1000.0);

MKCoordinateRegion region= MKCoordinateRegionMake(newLocation.coordinate, MKCoordinateSpanMake(100,100));

[self.mapView setRegion:region animated:YES];

}

3、如果位置管理器失效,将调用下面方法并返回错误信息

- (void)locationManager:(CLLocationManager *)manager

didFailWithError:(NSError*)error

{

NSLog(@"%@",error);

}

小结:关于iOS中地图及定位的基本实现先描述到这里,后续更新,欢迎浏览查询!

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航