objective-c – MKAnnotation的自定义图像

前端之家收集整理的这篇文章主要介绍了objective-c – MKAnnotation的自定义图像前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我创建了一个我添加到MKMapView的注释.如何使用自定义图像而不是标准的红色针?
  1. @interface AddressAnnotation : NSObject<MKAnnotation> {
  2. CLLocationCoordinate2D coordinate;
  3. NSString *title;
  4. NSString *subtitle;
  5. MKPinAnnotationColor pinColor;
  6. }
  7. @property (nonatomic,retain) NSString *title;
  8. @property (nonatomic,retain) NSString *subtitle;
  9. @property (nonatomic,assign) MKPinAnnotationColor pinColor;
  10. @end

解决方法

MKMapView从其委托方法获取其引脚视图 mapView:viewForAnnotation:所以你必须:

>将视图控制器设置为地图的代表.
>实现mapView:viewForAnnotation:在你的控制器中.

将控制器设置为委托

  1. @interface MapViewController : UIViewController <MKMapViewDelegate>

使用委托协议标记接口.这就让我们将控制器设置为Interface Builder(IB)中的MKMapView代理.打开包含地图的.xib文件,右键单击MKMapView,然后将代理插槽拖到控制器上.
如果你喜欢使用代码代替IB,添加self.yourMapView.delegate = self;在控制器的viewDidLoad方法中.结果将是一样的.

实现mapView:viewForAnnotation:

  1. - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
  2. {
  3. // this part is boilerplate code used to create or reuse a pin annotation
  4. static NSString *viewId = @"MKPinAnnotationView";
  5. MKPinAnnotationView *annotationView = (MKPinAnnotationView*)
  6. [self.mapView dequeueReusableAnnotationViewWithIdentifier:viewId];
  7. if (annotationView == nil) {
  8. annotationView = [[[MKPinAnnotationView alloc]
  9. initWithAnnotation:annotation reuseIdentifier:viewId] autorelease];
  10. }
  11. // set your custom image
  12. annotationView.image = [UIImage imageNamed:@"emoji-ghost.png"];
  13. return annotationView;
  14. }

猜你在找的C&C++相关文章