1. 添加到map view的子视图不会随地图的移动而移动,map view会固定其子视图的位置。如果要添加随着地图移动的子视图,可以使用annotations和overlays。annotation用来显示由一个经纬度定义的位置,而overlay则是由多个点所定义或者包含了许多连续的图形。
2.在地图上显示annotation,需要提供两个对象
注释对象通常是一些小的数据对象,保存了地图的坐标和一些相关信息。
Map Kit提供了一些标准的注释视图,你也可以使用自定义的注释视图。但是不能将注释视图直接添加到map view,而是使用map view的代理对象来提供。
3.添加注释的具体步骤
注释对象遵守MKAnnotation协议,如果你之想要将一个标题和一个坐标相联系,那么可以直接使用MKPointAnnotation作为注释对象。如果还想要显示其他信息,就需要自定义一个注释对象
MKAnnotationView类定义了注释视图的一些基本特性。MKPinAnnotationView类是MKAnnotationView的子类,用来显示系统标准的注释视图(pin view)
创建一个MKAnnotationView的实例,设置image属性。当此annotation显示在地图上时,该图像显示在相应的坐标位置( If you do not want the image to be centered on the map coordinate, you can use the centerOffset property to move the center point horizontally and vertically in any direction. )。
6.在代理对象中创建注释视图
当map view需要显示注释时候,会调用代理的mapView:viewForAnnotation:方法,如果你不实现此方法或者总是返回nil,map view会使用默认的注释视图,即pin annotation view。在你创建新的视图之前,检查是否已经存在此类视图dequeueReusableAnnotationViewWithIdentifier: ,类似于tableview的cell实现
7.管理地图的注释对象
为了避免注释视图的重叠,在方法mapView:regionWillChangeAnimated: andmapView:regionDidChangeAnimated: 中,根据需要来添加或者减少
8.让注释视图可拖动