添加自定义注释引脚

Posted

技术标签:

【中文标题】添加自定义注释引脚【英文标题】:Add Custom Annotation pin 【发布时间】:2016-08-27 09:40:58 【问题描述】:

我正在尝试在折线的起点和终点添加自定义注释图钉。但我不知道该怎么做。这是我的地图图片。

我想在折线的起点或终点添加绿色注释图钉。

这是我的代码

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation

    if (annotation==mapView.userLocation) 

        MKAnnotationView *annotationView = (MKAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:@"currAnno"];

        if (annotationView == nil) 
            annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"currAnno"];
        

        annotationView.canShowCallout=YES;
        annotationView.image = [UIImage imageNamed:@"mapPin.png"];

        return annotationView;


    else

        static NSString *viewId = @"MKAnnotationView";
        MKAnnotationView *annotationView = (MKAnnotationView*)
        [mapView dequeueReusableAnnotationViewWithIdentifier:viewId];

        if (annotationView == nil) 
            annotationView = [[MKAnnotationView alloc]
                              initWithAnnotation:annotation reuseIdentifier:viewId];
        

        annotationView.canShowCallout=YES;
        annotationView.image = [UIImage imageNamed:@"mapPin.png"];//set your image here
        return annotationView;
    


【问题讨论】:

【参考方案1】:

您需要创建两个注释:一个带有折线起点坐标的注释和一个带有折线终点坐标的注释。将两个注释都添加到地图中。

注解视图以相应注解的坐标为中心。如果您希望图像中绿色引脚的底部出现在注释的坐标处(而不是引脚图像的中心),您需要使用 MKAnnotationView 对象的 centerOffset 属性来移动图片向上:

annotationView.canShowCallout=YES;
annotationView.image = [UIImage imageNamed:@"mapPin.png"];
// Move the pin image up 20 points to place the bottom of the pin
// at the annotation coordinate (adjust the value -20 to suit)
annotationView.centerOffset = CGPointMake(0, -20);

此示例将注释视图图像向上移动 20 点(负 y 值将图像向上移动)。但是,您应该为您的图像使用合适的负值,而不是 -20,例如减去图像高度的一半或任何您认为合适的值。

【讨论】:

以上是关于添加自定义注释引脚的主要内容,如果未能解决你的问题,请参考以下文章

尝试自定义注释引脚

自定义当前位置注释引脚未随核心位置更新

更新注释视图时如何在自定义注释引脚中制作动画

带有默认地图视图引脚的 Swift Mapview 自定义调出视图

Swift - MKAnnotationView 地图引脚的自定义 UIView

单击时执行特定操作的自定义 MKAnnotation 引脚 - 自定义引脚未显示