7.6 Displaying Custom Pins on a Map View

本文介绍如何在iOS应用中自定义MKPinAnnotationView,包括为地图上的标记设置不同的颜色和图片,确保每个标记都能显示callout,并实现pin的复用以提高性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


自定义pin

- (MKAnnotationView *)mapView:(MKMapView *)mapView

            viewForAnnotation:(id <MKAnnotation>)annotation

{

    MKAnnotationView *result = nil;

    if ([annotation isKindOfClass:[MyAnnotation class]] == NO)

    {

        return result;

    }

    if ([mapView isEqual:self.myMapView] == NO)

    {

        /* We want to process this event only for the Map View

         that we have created previously */

        return result;

    }

    /* First typecast the annotation for which the Map View has fired this delegate message */

    MyAnnotation *senderAnnotation = (MyAnnotation *)annotation;

    /* Using the class method we have defined in our custom annotation class, we will attempt to get a reusable identifier for the pin we are about to create */

    NSString *pinReusableIdentifier = [MyAnnotation

                                       reusableIdentifierforPinColor:senderAnnotation.pinColor];

    /* Using the identifier we retrieved above, we will attempt to reuse a pin in the sender Map View */

    MKPinAnnotationView *annotationView = (MKPinAnnotationView *) [mapView dequeueReusableAnnotationViewWithIdentifier:pinReusableIdentifier];

    if (annotationView == nil){

        /* If we fail to reuse a pin, then we will create one */

        annotationView =[[MKPinAnnotationView alloc] initWithAnnotation:senderAnnotation

                                        reuseIdentifier:pinReusableIdentifier];

        /* Make sure we can see the callouts on top of each pin in case we have assigned title and/or subtitle to each pin */

        annotationView.canShowCallout = YES;

    }

    UIImage *pinImage = [UIImage imageNamed:@"aa.jpg"];

    NSLog(@"pingImage = %@",pinImage);

    if (pinImage != nil){

        annotationView.image = pinImage;

    }

    result = annotationView;

    return result;

}


其他的同前一节

输出


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值