Zgodnie z docs Apple, MKPinAnnotationView za pin kolor jest dostępny w kolorze czerwonym, zielonym i fioletowym. Czy istnieje jakiś sposób, aby uzyskać inne kolory też? Znalazłem nic w docs.
MKPinAnnotationView: Czy istnieją więcej niż trzy kolory dostępne?
trochę więcej ;)
alt text http://lionel.gueganton.free.fr/pins/pinGray.png

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

I oryginalne:
alt text http://lionel.gueganton.free.fr/pins/pinGreen.png

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

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

I kod:
- (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;
}
Może się okazać użyteczne następujące obrazy:

a kod do korzystania z nich w 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];
}
// ...
Można użyć ZSPinAnnotationdo tworzenia adnotacji szpilki na bieżąco z określoną UIColor: https://github.com/nnhubbard/ZSPinAnnotation
Lubię Odbierz Yonel za ale tylko głowy do góry, podczas tworzenia niestandardowych MKAnnotationView, będziesz musiał ręcznie przydzielić offsetu. Na obrazach Yonel przewidzianymi: (można pominąć rzeczy calloutButton jeśli nie trzeba jedną z tych)
#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;
}
Z iOS 9, pinTintColorzostał dodany do MKPinAnnotationView, co pozwala dostarczać UIColordla koloru pin.
A oto PSD dla kołka w tle i jej w @ 2x wielkości.
http://dl.dropbox.com/u/5622711/ios-pin.psd
Użyj tej PSD na dowolny kolor chcesz :)
Biorę żadnego kredytu w tym PSD. Właśnie chwycił ją od http://www.teehanlax.com/downloads/iphone-4-guid-psd-retina-display/ Mają wspaniałą robotę!
Żadna z zamieszczonych rozwiązań działać w 100%, jeśli używasz animację muche. Rozwiązanie kanonada jest bardzo schludny, ponieważ pozwala kołek do jeszcze oba rodzaje końcówek (ostry czubek kiedy spada, a ten z okrągłym papieru tętnienia), ale niestety wgląd w oryginalnym kolorze pin głowy widać, gdy odbija pin trafi mapę. Rozwiązanie yonel za zastąpić cały szpilka zdjęcie Oznacza kołek spada z okrągłym papieru tętnienia zanim to nawet uderzyć mapę!
Próbowałem w ten sposób i to wydaje się być ok ...
UIImage * image = [UIImage imageNamed:@"blue_pin.png"];
UIImageView *imageView = [[[UIImageView alloc] initWithImage:image]
autorelease];
[annotationView addSubview:imageView];
annotationView = nil;
stosując kompletny szpilka zdjęcie ... jak yonel przykład
Jeśli nie nie jest w docs następnie najprawdopodobniej można użyć mkannotationview i mają ur własny obraz, jeśli u chcą choć













