JPSThumbnailAnnotation 是一个用于展示图片的简单 MapKit 标注视图,具有简洁的设计和动画。它是为 iOS 7 100% 动态绘制和风格化的。
将 JPSThumbnailAnnotation
文件夹复制到您的 Xcode 项目中,并通过 MapKit
、QuartzCore
和 CoreLocation
库进行链接。
(请参考 /Demo
中的样本 Xcode 项目)
您只需像添加其他 MKAnnotation
一样添加一个 JPSThumbnailAnnotation
。标注接受一个 JPSThumbnail
对象,在特定坐标处显示图片、标题和副标题。您还可以设置一个在展开按钮被点击时运行的代码块。
JPSThumbnail *thumbnail = [[JPSThumbnail alloc] init];
thumbnail.image = [UIImage imageNamed:@"empire.jpg"];
thumbnail.title = @"Empire State Building";
thumbnail.subtitle = @"NYC Landmark";
thumbnail.coordinate = CLLocationCoordinate2DMake(40.75f, -73.99f);
thumbnail.disclosureBlock = ^{ NSLog(@"selected Empire"); };
[mapView addAnnotation:[JPSThumbnailAnnotation annotationWithThumbnail:thumbnail]];
确保地图视图实现了以下 3 个 MKMapViewDelegate 方法
- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view {
if ([view conformsToProtocol:@protocol(JPSThumbnailAnnotationViewProtocol)]) {
[((NSObject<JPSThumbnailAnnotationViewProtocol> *)view) didSelectAnnotationViewInMap:mapView];
}
}
- (void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)view {
if ([view conformsToProtocol:@protocol(JPSThumbnailAnnotationViewProtocol)]) {
[((NSObject<JPSThumbnailAnnotationViewProtocol> *)view) didDeselectAnnotationViewInMap:mapView];
}
}
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation {
if ([annotation conformsToProtocol:@protocol(JPSThumbnailAnnotationProtocol)]) {
return [((NSObject<JPSThumbnailAnnotationProtocol> *)annotation) annotationViewInMap:mapView];
}
return nil;
}
MIT 许可。