{
MKPinAnnotationView *pinview = nil
if (annotation != mapView.userLocation) {
static NSString *defaultId = @"目的地"
pinview = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:defaultId]
if (pinview == nil) {
pinview = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:defaultId] autorelease]
pinview.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]
pinview.pinColor = MKPinAnnotationColorPurple
pinview.canShowCallout = YES
pinview.animatesDrop = YES
pinview.draggable = YES
pinview.selected = YES
}
}
else
{
[mapView.userLocation setTitle:@"I'm here"]
}
return pinview
}
给pinview的pinview.rightCalloutAccessoryView添加一个按钮,实现委托方法
- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
增加按钮的点击响应,切换到一个新的视图,来展示完整的信息
一、先来认识一个协议MKAnnotation官方文档告诉我们,所有标注的类必须遵守这个协议。所以可以了解,标注这个概念在逻辑属性和视图上是分开的。先来看下这个协议声明了哪些方法:
@protocol MKAnnotation <NSObject>
@property (nonatomic, readonly) CLLocationCoordinate2D coordinate//地理坐标位置
@optional
@property (nonatomic, readonly, copy) NSString *title//标题
@property (nonatomic, readonly, copy) NSString *subtitle//副标题
//拖动时调用
- (void)setCoordinate:(CLLocationCoordinate2D)newCoordinate
@end
二、创建一个系统标注大头针
- (void)viewDidLoad {
[super viewDidLoad]
//初始化地图
mapView =[[MKMapView alloc]initWithFrame:self.view.frame]
//设置代理
mapView.delegate=self
//设置位置
mapView.region=MKCoordinateRegionMake(CLLocationCoordinate2DMake(39.26, 116.3), MKCoordinateSpanMake(1.8, 1))
mapView.mapType=MKMapTypeStandard
//初始化一个大头针类
MKPointAnnotation * ann = [[MKPointAnnotation alloc]init]
//设置大头针坐标
ann.coordinate=CLLocationCoordinate2DMake(39.26, 116.3)
ann.title=@"我"
ann.subtitle=@"看这里"
[mapView addAnnotation:ann]
[self.view addSubview:mapView]
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)