iOS地图的注释(Annotation)

1. 添加到map view的子视图不会随地图的移动而移动,map view会固定其子视图的位置。如果要添加随着地图移动的子视图,可以使用annotations和overlays。annotation用来显示由一个经纬度定义的位置,而overlay则是由多个点所定义或者包含了许多连续的图形。


2.在地图上显示annotation,需要提供两个对象

annotation object) annotation view.)

注释对象通常是一些小的数据对象,保存了地图的坐标和一些相关信息。

Map Kit提供了一些标准的注释视图,你也可以使用自定义的注释视图。但是不能将注释视图直接添加到map view,而是使用map view的代理对象来提供。


3.添加注释的具体步骤

定义一个注释对象annotation object : 使用MKPointAnnotation类来实现一个简单的注释,这类注释可以显示标题和副标题。 自定义一个遵守MKAnnotation协议的对象,这类注释可以存储任何类型数据 定义一个注释视图annotation view来显示数据: 如果注释可以由一张静态图片表示,则创建一个MKAnnotationView类的实例,然后将图像赋值给image属性 如果你想使用标准的pin annotation,创建一个MKPinAnnotationView类的实例 如果静态图像不够表示你的注释,那么创建一个MKAnnotationView的子类 Implement the mapView:viewForAnnotation: method in your map view delegate. Your implementation of this method should dequeue an existing annotation view if one exists or create a new one. If your application supports multiple types of annotations, you must include logic in this method to create a view of the appropriate type for the provided annotation object. 在map view的代理对象中实现mapView:viewForAnnotation:方法,使用已经存在的注释视图或者新创建一个。如果你的程序支持多种不同的注释,那么应该根据不同的注释提供不同的视图 方法添加你的注释对象到map view


4.自定义注释对象

注释对象遵守MKAnnotation协议,如果你之想要将一个标题和一个坐标相联系,那么可以直接使用MKPointAnnotation作为注释对象。如果还想要显示其他信息,就需要自定义一个注释对象

[plain]

<span style="font-size:16px;">Listing 5-1  Creating a simple annotation object     @@interface MyCustomAnnotation : NSObject <MKAnnotation> {         CLLocationCoordinate2D coordinate;     }     @property (nonatomic, readonly) CLLocationCoordinate2D coordinate;     - (id)initWithLocation:(CLLocationCoordinate2D)coord;           // Other methods and properties.     @end  </span>  


[plain]

<span style="font-size:16px;">@implementation MyCustomAnnotation     @synthesize coordinate;           - (id)initWithLocation:(CLLocationCoordinate2D)coord {         self = [super init];         if (self) {             coordinate = coord;         }         return self;     }     @end  </span>  


5.使用标准注释视图

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. )。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wygwzg.html