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

首先创建一个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;<br><br>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:[MKUserLocation class ]]) {
return nil;
}
static NSString *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;
return pinView;
}

10、MKAnnotation 与MKAnnotationView 的差异  

 
MKAnnotation:
    它在注解里实际上就是一个model,主要用于向视图提供相应的数据。 默认情况下,有三个属性:1、title 2.subtitle 3、coordinate
MKAnnotationView:
    在注解里, 它是用于描述如何显示注解的, 换句话是确定是显示成蓝点还是显示成大头针。 在委托方法里来确定, 如果委托方法,返回nil,这个时候蓝点。如果想要显示成其它的视图,必须在代码里来实现

二、添加位置管理

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

 
@property (nonatomic, strong) CLLocationManager *locationManager;
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;
self.locationManager.distanceFilter = 500;
//对于位置管理来说,并非是精度越高越好。因为GPS模块是手机最耗电的模块,所以为最大限度让我们应用程序省电,需要根据具体的应用来设定具体的精度
 
<em id= "__mceDel" >   self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[self.locationManager startUpdatingLocation];</em>

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);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值