您的位置:首页 > 其它

实用知识:CoreLocation的使用(地图展示)

2016-04-30 20:37 417 查看
#import "ViewController.h"

// 如果是从Xib/SB文件当中使用到框架, 需要手动导入框架
#import <MapKit/MapKit.h>

@interface ViewController () <CLLocationManagerDelegate, MKMapViewDelegate>

@property (strong, nonatomic) CLLocationManager *manager;

@property (weak, nonatomic) IBOutlet MKMapView *mapView;

@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];

// 授权
// 如果当前授权状态已经作出决定, 该方法什么都不干
[self.manager requestAlwaysAuthorization];

// 如果调用了代码, 会自动导入
NSLog(@"%@", [MKMapView class]);

// 地图类型

/**
MKMapTypeStandard = 0, // 标准
MKMapTypeSatellite,    // 卫星
MKMapTypeHybrid,   // 标准 + 卫星
*/
//    self.mapView.mapType = MKMapTypeHybrid;

// 地图手势
//    self.mapView.scrollEnabled = NO;    // 拖拽
//    self.mapView.rotateEnabled = NO;    // 旋转
//    self.mapView.zoomEnabled = NO;      // 放大缩小

/**
MKUserTrackingModeNone   // 不追踪
MKUserTrackingModeFollow, // 追踪用户位置
MKUserTrackingModeFollowWithHeading,   // 追踪用户位置与方向
*/

// 用户的追踪模式, 需要申请用户授权
// 以用户为中心, 显示用户周边
self.mapView.userTrackingMode = MKUserTrackingModeFollow;

// 已经通过SB连线了代理对象
}

#pragma mark - MKMapViewDelegate

// 更新了用户位置时触发
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
// MKUserLocation 表示用户的位置信息

// 用户位置
CLLocation *location = userLocation.location;
NSLog(@"%f, %f", location.coordinate.latitude, location.coordinate.longitude);

NSLog(@"%@", userLocation.title);
}

// 地图加载完成后触发
- (void)mapViewDidFinishLoadingMap:(MKMapView *)mapView
{
NSLog(@"地图加载完成后触发");
}

// 地图显示区域即将改变触发
- (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated
{
NSLog(@"地图显示区域即将改变触发");
}

// 地图显示区域改变之后触发
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
{
NSLog(@"地图显示区域改变之后触发");
}

#pragma mark - CLLocationManagerDelegate

- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status
{
if (status == kCLAuthorizationStatusAuthorizedAlways) {
NSLog(@"授权成功");
}
}

#pragma mark - Getter & Setter

- (CLLocationManager *)manager
{
if ( !_manager) {
_manager = [[CLLocationManager alloc] init];
_manager.delegate = self;
}
return _manager;

}

@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: