当前位置: 代码迷 >> 综合 >> 地图(MapKit)
  详细解决方案

地图(MapKit)

热度:83   发布时间:2023-12-21 02:40:01.0
地图(MapKit) - 作业部落 Cmd Markdown 编辑阅读器 (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-44461741-1', 'zybuluo.com'); ga('send', 'pageview');
[关闭]
@SanMao 2015-08-05T16:30:22.000000Z 字数 1879 阅读 2

地图(MapKit)

定位/地图


MapKit框架的使用

  • MapKit框架中所有数据类型的前缀都是MK
  • MapKit有一个比较重要的UI控件 :MKMapView,专门用于地图显示
设置MKMapView的userTrackingMode属性可以跟踪显示用户的当前位置
  • MKUserTrackingModeNone :不跟踪用户的位置
  • MKUserTrackingModeFollow :跟踪并在地图上显示用户的当前位置
  • MKUserTrackingModeFollowWithHeading:跟踪并在地图上显示用户的当前位置,地图会跟随用户的前进方向进行旋转
地图的类型,可以通过设置MKMapView的mapViewType设置地图类型
  • MKMapTypeStandard :普通地图
  • MKMapTypeSatellite :卫星云图
  • MKMapTypeHybrid :普通地图覆盖于卫星云图之上
MKMapView的代理
   
    
  1. - (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation;
  2. // 一个位置更改默认只会调用一次,不断监测用户的当前位置
  3. // 每次调用,都会把用户的最新位置(userLocation参数)传进来
  4. - (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated;
  5. // 地图的显示区域即将发生改变的时候调用
  6. - (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated;
  7. // 地图的显示区域已经发生改变的时候调用

MKUserLocation

  • MKUserLocation其实是个大头针模型,包括以下属性
   
    
  1. @property (nonatomic, copy) NSString *title;
  2. // 显示在大头针上的标题
  3. @property (nonatomic, copy) NSString *subtitle;
  4. // 显示在大头针上的子标题
  5. @property (readonly, nonatomic) CLLocation *location;
  6. // 地理位置信息(大头针钉在什么地方)

自定义大头针

  • 自定义大头针,设置MKMapView的代理实现代理方法,返回大头针控件
   
    
  1. - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation;
  2. // 根据传进来的(id<MKAnnotation>)annotation参数创建并返回对应的大头针控件
  • 代理方法的使用注意
    • 如果返回nil,显示出来的大头针就采取系统的默认样式
    • 标识用户位置的蓝色发光圆点,它也是一个大头针,当显示这个大头针时,也会调用代理方法因此,需要在代理方法中分清楚(id )annotation参数代表自定义的大头针还是蓝色发光圆点
MKAnnotationView
  • 地图上的大头针控件是MKAnnotationView

  • MKAnnotationView的属性

   
    
  1. @property (nonatomic, strong) id <MKAnnotation> annotation;
  2. // 大头针模型
  3. @property (nonatomic, strong) UIImage *image;
  4. // 显示的图片
  5. @property (nonatomic) BOOL canShowCallout;
  6. // 是否显示标注
  7. @property (nonatomic) CGPoint calloutOffset;
  8. // 标注的偏移量
  9. @property (strong, nonatomic) UIView *rightCalloutAccessoryView;
  10. // 标注右边显示什么控件
  11. @property (strong, nonatomic) UIView *leftCalloutAccessoryView;
  12. // 标注左边显示什么控件
MKPinAnnotationView
  • MKPinAnnotationView是MKAnnotationView的子类
  • MKPinAnnotationView比MKAnnotationView多了2个属性
   
    
  1. @property (nonatomic) MKPinAnnotationColor pinColor;
  2. // 大头针颜色
  3. @property (nonatomic) BOOL animatesDrop;
  4. // 大头针第一次显示时是否从天而降
添加新批注
在作者公开此批注前,只有你和作者可见。
  • 私有
  • 公开
  • 删除
查看更早的 5 条回复