• Stars
    star
    160
  • Rank 234,703 (Top 5 %)
  • Language
    Objective-C
  • License
    MIT License
  • Created almost 13 years ago
  • Updated over 8 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Build custom MKMapView annotations with any UIColor

ZSPinAnnotation

Have you ever felt limited by the three Annotation pin colors that Apple provides with MapKit? Have you ever thought it was a pain to have to create custom images in photoshop every time you wanted to change the color? ZSPinAnnotation solves these problems by building the pin annotation on the fly and caching them for performance. All pin annotations use CoreGraphics to draw the pins so you get super sharp and beautiful annotations of any color. ZSPinAnnotation is a MKAnnotationView subclass, so you can easily use it in your mapView:viewForAnnotation: method.

ZSPinAnnotation

How It Works

Use a ZSPinAnnotation on a MapView:

- (MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation:(id <MKAnnotation>)annotation {
	
    // Don't mess with user location
	if(![annotation isKindOfClass:[ZSAnnotation class]])
        return nil;
    
    ZSAnnotation *a = (ZSAnnotation *)annotation;
    static NSString *defaultPinID = @"StandardIdentifier";
    
    // Create the ZSPinAnnotation object and reuse it
    ZSPinAnnotation *pinView = (ZSPinAnnotation *)[self.mapView dequeueReusableAnnotationViewWithIdentifier:defaultPinID];
    if (pinView == nil){
        pinView = [[ZSPinAnnotation alloc] initWithAnnotation:annotation reuseIdentifier:defaultPinID];
    }
    
    // Set the type of pin to draw and the color
    pinView.annotationType = ZSPinAnnotationTypeStandard;
    pinView.annotationColor = a.color;
    pinView.canShowCallout = YES;
    
    return pinView;
	
}

How to use in your App

ZSPinAnnotation requires the QuartzCore.framework, CoreImage.framework and CoreGraphics.framework.

Take a look at the demo project in the download for an example of how to use ZSPinAnnotation.

Pin Types

ZSPinAnnotation provides three different types of pin images: ZSPinAnnotationTypeStandard, ZSPinAnnotationTypeDisc, ZSPinAnnotationTypeTag and ZSPinAnnotationTypeTagStroke. The default is ZSPinAnnotationTypeStandard which defaults to the color red.

Annotation Types