如何更改标记图标?

时间:2012-12-07 11:07:15

标签: ios objective-c mapkit

我想知道是否有办法改变那些用作标记的红色针脚。如果有办法,该怎么做?

1 个答案:

答案 0 :(得分:6)

你可以在mapView中使用3种类型的颜色引脚..

  1. MKPinAnnotationColorGreen;
  2. MKPinAnnotationColorPurple
  3. MKPinAnnotationColorRed
  4. 如果您想添加自定义视图或图片,则可以使用编程方式添加

    你也可以在MKMapView的委托方法中更改pin,如下所示..

    - (MKAnnotationView *)mapView:(MKMapView *)_mapView viewForAnnotation:(id <MKAnnotation>)annotation 
    {
     MKPinAnnotationView *pinView  = (MKPinAnnotationView *)[_mapView dequeueReusableAnnotationViewWithIdentifier:defaultPinID];
            pinView = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:defaultPinID] autorelease];
            if (annotation == _mapView.userLocation) 
            {
    //            pinView.pinColor = MKPinAnnotationColorRed;
    //            return pinView;
                return nil;
            }
            pinView.pinColor = MKPinAnnotationColorGreen; // you can use MKPinAnnotationColorPurple, MKPinAnnotationColorRed;
            pinView.canShowCallout = YES;
            pinView.animatesDrop = NO;
    
            return pinView;
    }
    

    对于自定义图像或图钉,请使用以下代码..

    - (MKAnnotationView *)mapView:(MKMapView *)_mapView viewForAnnotation:(id <MKAnnotation>)annotation 
    {
        static NSString *AnnotationViewID = @"annotationViewID";
    
        MKAnnotationView *annotationView = (MKAnnotationView *)[_mapView dequeueReusableAnnotationViewWithIdentifier:AnnotationViewID];
    
        if (annotationView == nil)
        {
            annotationView = [[[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationViewID] autorelease];
        }
    
        annotationView.image = [UIImage imageNamed:@"yourImageName"];//add any image which you want to show on map instead of red pins
        annotationView.annotation = annotation;
    
        return annotationView;
    }