MapKit Framework的基本概念:
MapKit Framework提供了可以将地图直接嵌入到窗口和视图中的功能,同时还提供了地图标注、添加弹窗显示、进行反地理信息编码以通过地标信息查找经纬度坐标等功能。
MKMapView类显示了一个地图视图,其中有一个位置指示器(annotation)提示了当前的位置坐标以及说明。可以利用该类实例显示地图信息并根据应用提供的数据改变地图的内容,如将地图的某个坐标点置于视图中心点、指定地图显示的大小区域和根据自定义信息创建标记点等。
MKMapView的使用方法:
1、使用alloc/init方法创建实例;在初始化时,需要定义地图初始显示的区域,该区域通过该类的region属性设置:
@property(nonatomic) MKCoordinateRegion region除此之外还可以设置scrollEnabled和zoomEnabled来设置是否支持地图的滑动和缩放操作。
在实际使用中,不应派生MKMapView的子类,最好通过设置代理对象获取MKMapView实例的信息。MKMapView实例通过调用代理对象的方法知会map状态的变化和定位自定义标记点信息。代理对象可以是应用中的任何一个对象(只要符合<MKMapViewDelegate>协议)。
2、存在一个NSArray类型的属性annotation,保存MKAnnotation对象,其中的对象必须符合<MKAnnotation>协议;此属性为只读;
在实际应用过程中,MKAnnotation通常由app的data model中存在的类实现;每一个MKAnnotation对象包含定位点的位置以及可以在地图上显示的附加信息组成。
对于每一个MKAnnotation对象的显示过程,由MKAnnotationView完成。
MKAnnotationView:该类专门用于在map视图中显示定位点信息;当定位点MKAnnotation对象的坐标处于当前可见区域时,map视图请求代理对象提供相应的定位点信息以显示视图MKAnnotationView,最简单的方法是设置其image属性:
@property (nonatomic, retain) UIImage *image
同TableView类似,MKAnnotationView对象也可以保存于一个队列中以便循环使用。
创建/联系MKAnnotationView和MKAnnotation对象:通过以下代理方法:
- (MKAnnotationView *)mapView:(MKMapView *)sender viewForAnnotation:(id<MKAnnotation>)annotation;选中某一个MKAnnotationView时的响应:
- (void)mapView:(MKMapView *)sender didSelectAnnotationView:(MKAnnotationVIew *)aView;
3、实现MKAnnotation协议的方法;
该协议用于向map视图提供与定位点annotation相关的信息。在保存定位点相关信息的类中声明符合该协议后,该协议中个的方法就可以作为data source向某个定位点实例提供相关信息,如定位点的位置等。
每个符合该协议的类的实例必须定义coordinate属性,而该协议其他的方法均为可选方法。
该协议中定义的属性有:coordinate、title、subtitle等;
该协议中定义的方法有:
- (void)setCoordinate:(CLLocationCoordinate2D)newCoordinate;//该方法将定位点的center点为newCoordinate;