码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2014-11-07 18:45:49      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   color   ar   使用   sp   for   strong   

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

方案:

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

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: 在地图上添加锚点 添加不同颜色的锚点

标签:style   blog   io   color   ar   使用   sp   for   strong   

原文地址:http://www.cnblogs.com/safiri/p/4081904.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!