首页 > 代码库 > 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: 在地图上添加锚点 添加不同颜色的锚点
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。