3sl*_*3sl 10 objective-c mapkit mkannotation mkannotationview
我创建了一个注释,我将其添加到MKMapView中.如何使用自定义图像而不是标准红色针?
@interface AddressAnnotation : NSObject<MKAnnotation> {
CLLocationCoordinate2D coordinate;
NSString *title;
NSString *subtitle;
MKPinAnnotationColor pinColor;
}
@property (nonatomic,retain) NSString *title;
@property (nonatomic,retain) NSString *subtitle;
@property (nonatomic, assign) MKPinAnnotationColor pinColor;
@end
Run Code Online (Sandbox Code Playgroud)
Jan*_*ano 18
MKMapView从其委托方法mapView获取其引脚视图:viewForAnnotation: 所以你必须:
将您的控制器设置为委托
@interface MapViewController : UIViewController <MKMapViewDelegate>
Run Code Online (Sandbox Code Playgroud)
使用委托协议标记接口.这让你在Interface Builder(IB)中将控制器设置为MKMapView的委托.打开包含地图的.xib文件,右键单击MKMapView,然后将delegate插座拖到控制器上.
如果您更喜欢使用代码而不是IB,请添加self.yourMapView.delegate=self;控制器的viewDidLoad方法.结果将是相同的.
实现mapView:viewForAnnotation:
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{
// this part is boilerplate code used to create or reuse a pin annotation
static NSString *viewId = @"MKPinAnnotationView";
MKPinAnnotationView *annotationView = (MKPinAnnotationView*)
[self.mapView dequeueReusableAnnotationViewWithIdentifier:viewId];
if (annotationView == nil) {
annotationView = [[[MKPinAnnotationView alloc]
initWithAnnotation:annotation reuseIdentifier:viewId] autorelease];
}
// set your custom image
annotationView.image = [UIImage imageNamed:@"emoji-ghost.png"];
return annotationView;
}
Run Code Online (Sandbox Code Playgroud)