как сделать пользовательский пин-код, как карту друзей в приложении 4sq - PullRequest
0 голосов
/ 19 июня 2011

Как сделать собственный пин-код, как карту друзей foursquare вместо пин-кода на карте?

изображение здесь, http://www.socialmedianews.com.au/wp-content/uploads/2010/07/foursquare-friends-map.png

Ответы [ 3 ]

0 голосов
/ 19 июня 2011

Вы хотите заменить пользовательский штифт на портрет в рамке.Вы можете нарисовать рамку с помощью Quartz или добавить рамку в качестве второго прозрачного изображения.Я сделал бы второе добавление следующего к MKAnnotationView:

- (id)initWithAnnotation:(id <MKAnnotation>)annotation 
         reuseIdentifier:(NSString *)reuseIdentifier {
    self = [super initWithAnnotation:annotation reuseIdentifier:reuseIdentifier];
    if (self != nil) {
        self.opaque = NO;
        self.frame = CGRectMake(0,0, self.portraitImage.size.width, self.portraitImage.size.height);
    }
    return self;
}

- (void)drawRect:(CGRect)rect {
        [self.frameImage drawInRect:CGRectMake(0, 0, frameImage.width, frameImage.height)];
        [self.portraitImage drawInRect:CGRectMake(0, 0, portraitImage.width, portraitImage.height)];
}
0 голосов
/ 19 июня 2011
- (MKAnnotationView *)mapView:(MKMapView *)mv viewForAnnotation:(id <MKAnnotation>)annotation      {
MKAnnotationView *pinView = (MKAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:@"pinView"];

 if (!pinView) {
    pinView = [[[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"pinView"] autorelease];
    pinView.image = [UIImage imageNamed:@"SPOON4.png"];
    pinView.frame = CGRectMake(-30, 0, 70, 67.5); 
    //pinView.animatesDrop = YES; can't animate with custom pin images
    pinView.canShowCallout = YES;


    UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
    pinView.rightCalloutAccessoryView = rightButton;

} else {
    pinView.annotation = annotation;
}
if (annotation == mapView.userLocation){
    return nil; //default to blue dot
}
return pinView;
}
0 голосов
/ 19 июня 2011

Вам необходимо использовать пользовательский MKAnnotationView .

Вы можете использовать класс MKAnnotationView как есть или подкласс его, чтобы обеспечить требуемое поведение.Свойство image класса позволяет вам установить внешний вид представления аннотации без непосредственных подклассов.Вы также можете для удобства создавать собственные подклассы и использовать их для приведения аннотации в известное состояние.Например, подкласс MKPinAnnotationView инициализирует содержимое представления аннотации к изображению булавки.

...