Volgens de Apple docs, MKPinAnnotationView's pin kleur is verkrijgbaar in rood, groen en paars. Is er een manier om andere kleuren ook te krijgen? Ik heb niets in de documenten gevonden.
MKPinAnnotationView: Zijn er meer dan drie kleuren verkrijgbaar?
wat meer ;)
alt-tekst http://lionel.gueganton.free.fr/pins/pinGray.png

alt-tekst http://lionel.gueganton.free.fr/pins/pinOrange.png

En de oorspronkelijke:
alt-tekst http://lionel.gueganton.free.fr/pins/pinGreen.png

alt-tekst http://lionel.gueganton.free.fr/pins/pinPurple.png

alt-tekst http://lionel.gueganton.free.fr/pins/pinRed.png

En de code:
- (MKAnnotationView*)mapView:(MKMapView*)mapView viewForAnnotation:(id <MKAnnotation>)annotation {
MKPinAnnotationView* anView =[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"test"];
anView.pinColor=MKPinAnnotationColorPurple;
UIImage* image = nil;
// 2.0 is for retina. Use 3.0 for iPhone6+, 1.0 for "classic" res.
UIGraphicsBeginImageContextWithOptions(anView.frame.size, NO, 2.0);
[anView.layer renderInContext: UIGraphicsGetCurrentContext()];
image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData* imgData = UIImagePNGRepresentation(image);
NSString* targetPath = [NSString stringWithFormat:@"%@/%@", [self writablePath], @"thisismypin.png" ];
[imgData writeToFile:targetPath atomically:YES];
return anView;
}
-(NSString*) writablePath {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
return documentsDirectory;
}
Misschien vindt u de volgende beelden nuttig:

en de code om ze te gebruiken in viewForAnnotation :
- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation
{
// ... get the annotation delegate and allocate the MKAnnotationView (annView)
if ([annotationDelegate.type localizedCaseInsensitiveCompare:@"NeedsBluePin"] == NSOrderedSame)
{
UIImage * image = [UIImage imageNamed:@"blue_pin.png"];
UIImageView *imageView = [[[UIImageView alloc] initWithImage:image] autorelease];
[annView addSubview:imageView];
}
// ...
Je zou kunnen gebruiken ZSPinAnnotationom annotatie pinnen te maken op de vlieg met een gespecificeerde UIColor: https://github.com/nnhubbard/ZSPinAnnotation
Ik hou Yonel antwoord maar slechts een heads-up, wanneer u een aangepaste MKAnnotationView maken, dan moet je handmatig toe te wijzen de offset. Voor de beelden Yonel verstrekt: (kan je bij de calloutButton spul als je niet één van die nodig hebben)
#pragma mark MKMapViewDelegate
- (MKAnnotationView *)mapView:(MKMapView *)aMapView viewForAnnotation:(id <MKAnnotation>)annotation
{
if(![annotation isKindOfClass:[MyAnnotation class]]) // Don't mess user location
return nil;
MKAnnotationView *annotationView = [aMapView dequeueReusableAnnotationViewWithIdentifier:@"spot"];
if(!annotationView)
{
annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"spot"];
annotationView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
[(UIButton *)annotationView.rightCalloutAccessoryView addTarget:self action:@selector(openSpot:) forControlEvents:UIControlEventTouchUpInside];
annotationView.enabled = YES;
annotationView.canShowCallout = YES;
annotationView.centerOffset = CGPointMake(7,-15);
annotationView.calloutOffset = CGPointMake(-8,0);
}
// Setup annotation view
annotationView.image = [UIImage imageNamed:@"pinYellow.png"]; // Or whatever
return annotationView;
}
Met iOS 9, pinTintColoris toegevoegd aan MKPinAnnotationView, zodat u een aanbod UIColorvoor de pin kleur.
En hier is de PSD van de pin met schaduw en zijn in @ 2x grootte.
http://dl.dropbox.com/u/5622711/ios-pin.psd
Gebruik deze PSD voor welke kleur je wilt :)
Ik neem geen krediet voor deze PSD. Ik pakte het gewoon uit http://www.teehanlax.com/downloads/iphone-4-guid-psd-retina-display/ Ze een geweldige job gedaan!
Geen van de ter beschikking gestelde oplossingen werkt 100% als u gebruik maakt van de pincode afzetten animatie. Cannonade's oplossing zeer netjes omdat het mogelijk maakt dat de pen nog beide soorten uiteinden (de scherpe punt bij een val en een met de cirkelvormige papier rimpel) maar helaas een blik op de oorspronkelijke speldhoofd kleur zichtbaar wanneer de pen stuitert als het raakt de kaart. Yonel oplossing van het beeld de hele pin vervangen betekent dat de pin valt met de cirkelvormige papieren rimpel voordat het zelfs de kaart is geraakt!
Ik probeerde op deze manier en het lijkt te zijn ok ...
UIImage * image = [UIImage imageNamed:@"blue_pin.png"];
UIImageView *imageView = [[[UIImageView alloc] initWithImage:image]
autorelease];
[annotationView addSubview:imageView];
annotationView = nil;
via het totale pen ... als voorbeeld Yonel
Als het niet in de docs dan zeer waarschijnlijk niet, dan kunt u gebruik maken van mkannotationview en hebben ur eigen beeld als u wenst niettemin













