在iOS中的同一地图上使用默认和自定义MKPointAnnotation

时间:2014-05-15 12:41:13

标签: ios

我有一张地图,我要在其上显示带图像的自定义注释和一个带红色引脚的默认外观注释。

为了加载自定义图像,我已将我的视图转换为地图委托,但会发生的是我想要的默认搜索引脚未显示(因为我没有加载图像)。

我正在下面添加我的代码的缩短版本(带备注)。

如何为此引脚加载图像?是否有标准方法来访问引脚UIImage,或者我应该以某种方式制作注释?

- (MKAnnotationView *)mapView:(MKMapView *)theMapView viewForAnnotation:(id <MKAnnotation>)annotation
{
    static NSString *SFAnnotationIdentifier = @"SFAnnotationIdentifier";
    MKPinAnnotationView *pinView =
    (MKPinAnnotationView *)[self.mapView dequeueReusableAnnotationViewWithIdentifier:SFAnnotationIdentifier];

    MKPointAnnotation* pointAnnotation = (MKPointAnnotation*)annotation;

    if (!pinView)
    {
        MKAnnotationView *annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation
                                                                     reuseIdentifier:SFAnnotationIdentifier];

        for (id location in self.locations) {
            // if this is a "special" point loaded 
            if () {
                UIImage *image = ; // get custom image from somewhere 

                annotationView.image = image;
                return annotationView;
            }
        }

        // if the code made here, I want the pin to be regular 

        return annotationView;
    }
    else
    {
        pinView.annotation = annotation;
    }

    return pinView;
}

2 个答案:

答案 0 :(得分:0)

好的,解决了。

return nil; 

完成技巧并提供默认视图。

答案 1 :(得分:0)

更改

UIImage *image = ; // get custom image from somewhere

UIImage *image = [UIImage imageNamed:@"YourPin.png"]; // get custom image from somewhere

也许您需要更改annotationView的偏移量

annotationView.centerOffset = CGPointMake( 0, annotationView.centerOffset.y - annotationView.image.size.height/2 );