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

#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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值