首页 > 代码库 > Map2: 在地图上添加锚点 添加不同颜色的锚点

Map2: 在地图上添加锚点 添加不同颜色的锚点

在地图视图上标注一些点来特别说明这些地理位置

方案:

使用地图内置的标注。如下步骤:

1.创建一个新的类,命名为 MyAnnotation。
2.确保这个类要实现 MKAnnotation 协议。
3.给这个类定义一个类型为 CLLocationCoordinate2D 的属性,命名为 coordinate。特别要注意这个参数需要标示为只读类型的。因为 MKAnnotation 这个协议中定义的 Coordinate也是只读类型的。

4.同理,定义两个 NSString 类型的属性,分别命名为 title 和 subtitle。这两个参数用来保存锚点的标题和内容信息。

5.给这个类添加一个初始化方法,这个方法需要接收一个 CLLocationCoordinate2D类型的参数。在这个方法中把我们在步骤 3 定义的那个属性传递进来..由于这个属性是只读的,他并不能在这个类以外进行赋值。因此,这个初始化方法也就是一个桥梁,使我们能够正常的往这个了类中进行传递值。同理 title 和 subtitle 也要进行类似的操作。

6.初始化 MyAnnotation 这个类,然后把他添加到你的地图中,通过 Annotation 这个方法。 

 

如方案中所述,我们必须创建一个遵循 MKAnnotation 协议的对象,然后实例化这个对象,并将其传递给 map 以显示出来。 
.h
#import <Foundation/Foundation.h>#import <MapKit/MapKit.h>@interface MyAnnotation : NSObject<MKAnnotation>//coordinate [k??‘?:d?ne?t] 坐标  annotation [æn?‘te??(?)n]注释@property (nonatomic, readonly)CLLocationCoordinate2D coordinate;@property (nonatomic, copy, readonly)NSString *title;@property (nonatomic, copy, readonly)NSString *subtitle;//初始化方法- (id)initWithCoordinates:(CLLocationCoordinate2D)paramCoordinates title:(NSString *)paramTitle subTitle:(NSString *)paramSubTitle;@end

.m

#import "MyAnnotation.h"@implementation MyAnnotation- (id)initWithCoordinates:(CLLocationCoordinate2D)paramCoordinates title:(NSString *)paramTitle subTitle:(NSString *)paramSubTitle{    self = [super init];    if (self != nil) {        _coordinate = paramCoordinates;        _title = paramTitle;        _subtitle = paramSubTitle;    }    return self;}@end
然后实例化这个类,并将其添加到我们的map中。例如,在view controller的实现文件中,编写如下代码: 
- (void)viewDidLoad {    [super viewDidLoad];        self.view.backgroundColor = [UIColor whiteColor];        self.myMapView = [[MKMapView alloc]initWithFrame:self.view.bounds];    self.myMapView.mapType = MKMapTypeStandard;    self.myMapView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;       self.myMapView.delegate = self;    [self.view addSubview:_myMapView];    //在地图上添加锚点    //创建一个简单的位置 degrees 角度,度数 latitude纬度 longitude经度    CLLocationCoordinate2D location = CLLocationCoordinate2DMake(35.8219, 116.0225);    // Create the annotation using the location    MyAnnotation *annotation = [[MyAnnotation alloc]initWithCoordinates:location title:@"My Title" subTitle:@"My Sub Title"];    //将锚点添加到地图上    [_myMapView addAnnotation:annotation];}

 

二 . 添加不同颜色的锚点

为了能够在地图视图中为我们的锚点自定义显示的颜色(从 SDK 中提供的锚点颜色中选 取),我们必须要获得一个 MKPinAnnotationView 这个实例对象而不是以往的 MKAnnotationView 对象。我们需要通过 mapView:viewForAnnotation 这个方法来获得这个实例对象。记住 MKPinAnnotationView 是 MKAnnotationView 的一个子类。具体实现方式请参考如下代码:
 

 

 

 

 

 

 

 

Map2: 在地图上添加锚点 添加不同颜色的锚点