ios-MapKit的使用

在MapKit框架中有这么一个控件叫做MKMapView

在使用它时我们需要导入一个头文件

#import <MapKit/MapKit.h>

在MKMapView中我们可以通过mapType来设置地图的类型

MKMapTypeStandard,标准
MKMapTypeSatellite,卫星地图
MKMapTypeHybrid,鸟瞰混合
ios9之后新增加的两项:

MKMapTypeSatelliteFlyover,卫星地图的立体样式
MKMapTypeHybridFlyover,鸟瞰地图的立体样式

我们想要在地图中获取自己的位置的话,在ios8之后我们需要自己主动的去请求用户的隐私

if([UIDevice currentDevice].systemVersion.doubleValue>=8.0)
    { 
        
        [self.manager requestAlwaysAuthorization];
    }
之前我们获取位置都是通过Core Location框架中的
CLLocationManager中的startUpdatingLocation去请求位置,然后通过设置它的代理,实现相应的代理方法去拿到位置。

但是现在在MapKit中我们可以直接通过MKMapView的userTrackingMode这个属性进行设置。

这个属性总共有三个枚举值

MKUserTrackingModeNone = 0, 不追踪的
MKUserTrackingModeFollow, 追踪
MKUserTrackingModeFollowWithHeading 追踪并且获取所在的方向

MKMapView默认是可以旋转的,我们可以进行设置使其不能发生旋转

//设置地图不允许旋转
 self.mapView.rotateEnabled = NO;
当我们获取到位置的时候,mapView会通过代理来通知我们,也就是说会调用下面这个代理方法

当每次更新到用户的位置就会去调用,注意这里是只有位置发生改变才会去调用,下面的userLocation就可以称之为大头针的一个数据模型

我们可以通过修改这个userLocation中的title和subtitle来进行设置,在这个MKUserLocation类中有位置,标题,子标题,方向等属性。

-(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
    userLocation.title = @"哈哈哈";
    userLocation.subtitle = @"飞飞飞";
}

我们想要移动地图到当前用户的位置,并且设置为中心点,可以进行如下设置。其中userLocation就是上面我们获取到的。

[self.mapView setCenterCoordinate:userLocation.coordinate animated:YES];

我们想要设置经纬度的跨越可以这么设置,这里要稍微提一下的是调用这个方法setRegion:(MKCoordinateRegion)region animated:(BOOL)animated; 有的时候会成功,有的时候不会成功。

//获取中心点
    CLLocationCoordinate2D center = userLocation.location.coordinate;
    
  
    //设置经纬度的跨度
    MKCoordinateSpan span = MKCoordinateSpanMake(0.1, 0.1);
    //将用户当前的位置作为显示区域的中心点
    MKCoordinateRegion region = MKCoordinateRegionMake(center, span);
    
    //设置显示的区域
    self.mapView.region = region;
当地图跨度改变的时候会调用这个方法

-(void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
{
    NSLog(@"%f---%f", mapView.region.span.latitudeDelta, mapView.region.span.longitudeDelta);
}
CLLocation中里面最重要的就是coordinate,我们可以通过coordinate来创建一个位置对象,coordinate就是2D位置坐标的意思。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值