【实现功能】:
1.展示简单地图
2.显示用户当前位置
3.控制视图大小
4.大头针点击显示信息
【实现步骤】
1.导入两个需要的框架:CoreLocation.framework和MapKit.framework
2.引入头文件:
#import <MapKit/MapKit.h>
#import <CoreLocation/CoreLocation.h>
3.需要两个类的变量,这里定义为属性:
@property (nonatomic, retain)MKMapView *mapView;
@property (nonatomic, retain)CLLocationManager *locaManager;
4.别忘了接受协议
@interface ViewController ()<CLLocationManagerDelegate,MKMapViewDelegate>
5.OK开始上代码
1 - (void)viewDidLoad{ 2 [super viewDidLoad]; 3 4 //初始化位置管理 5 self.locaManager = [[CLLocationManager alloc] init]; 6 //如果设备在iOS8及以上,得先弹框让用户授权,才能获得定位权限 7 if ([[UIDevice currentDevice].systemVersion doubleValue] >= 8.0) { 8 [self.locaManager requestWhenInUseAuthorization]; 9 } 10 //设置代理 11 self.locaManager.delegate = self; 12 //开始定位 13 [self.locaManager startUpdatingLocation]; 14 15 16 //初始化地图视图 17 self.mapView = [[MKMapView alloc] initWithFrame:self.view.frame]; 18 //设置地图样式为基本样式(这里有三种样式) 19 self.mapView.mapType = MKMapTypeStandard; 20 //是否显示当前位置 21 self.mapView.showsUserLocation = YES; 22 //设置代理 23 self.mapView.delegate = self; 24 [self.view addSubview:self.mapView]; 25 }
代理方法的实现
#pragma mark -- mapViewDelegate - (void)mapViewDidFinishLoadingMap:(MKMapView *)mapView{ NSLog(@"加载完毕"); } - (void)mapViewWillStartLocatingUser:(MKMapView *)mapView{ NSLog(@"将要获取用户位置"); } - (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation{ //点击大头针,出现信息 userLocation.title = @"丁健"; userLocation.subtitle = @"dingjianjaja"; //让地图视图转移到用户当前位置 [mapView setCenterCoordinate:userLocation.location.coordinate animated:YES]; //设置精度,以及显示用户所在地 MKCoordinateSpan span = MKCoordinateSpanMake(1, 1);//比例尺为1:10^5,1厘米代表1公里 MKCoordinateRegion region = MKCoordinateRegionMake(userLocation.location.coordinate, span); [mapView setRegion:region animated:YES]; }
6.运行
发现不显示用户位置,原因是在iOS8以后程序使用定位有三种状态,即试用期间/始终/永不,所以我们需要在plist文件中配置:试用期间或者始终
NSLocationWhenInUseUsageDescription
简单的展示地图自己位置就完成了,下面会继续加入目的地大头针,以及连接当前位置与目的地,并计算直线距离的功能。
时间: 2024-10-12 16:24:41