2013-04-27 10 views

Antwort

35

Um eine benutzerdefinierte Anmerkungsansicht (Ihr Ersatz für die Standard-PIN) erstellt haben, können Sie die image Eigenschaft des MKAnnotationView im viewForAnnotation Verfahren eingestellt gerade:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation 
{ 
    if ([annotation isKindOfClass:[MKUserLocation class]]) 
    { 
     return nil; 
    } 
    else if ([annotation isKindOfClass:[YourAnnotationClassHere class]]) // use whatever annotation class you used when creating the annotation 
    { 
     static NSString * const identifier = @"MyCustomAnnotation"; 

     MKAnnotationView* annotationView = [mapView dequeueReusableAnnotationViewWithIdentifier:identifier]; 

     if (annotationView) 
     { 
      annotationView.annotation = annotation; 
     } 
     else 
     { 
      annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation 
                  reuseIdentifier:identifier]; 
     } 

     annotationView.canShowCallout = NO; // set to YES if using customized rendition of standard callout; set to NO if creating your own callout from scratch 
     annotationView.image = [UIImage imageNamed:@"your-image-here.png"]; 

     return annotationView; 
    } 
    return nil; 
} 

Vielleicht möchten Sie auch die centerOffset Eigenschaft einstellen um den Pin genau so auszurichten, wie Sie es möchten.

In Bezug auf die Anpassung des Callouts ist der einfachste Ansatz, leftCalloutAccessoryView, rightCalloutAccessoryView und/oder detailCalloutAccessoryView anzugeben. Dies gibt Ihnen einen überraschenden Grad an Kontrolle, das Hinzufügen alle Arten von Bildern, Etiketten, usw.

Wenn Sie eine radikale Neugestaltung des callout tun möchten, können Sie viewForAnnotationcanShowCallout-NO gesetzt und dann auf setSelected in Ihrem antworten benutzerdefinierte Anmerkungsansicht, um Ihren eigenen Callout anzuzeigen. In Swift finden Sie unter Customize MKAnnotation Callout View? einige Optionen zum Anpassen der Callouts.

+0

Vielen Dank ... :) – Abhishek

+1

@Abhishek Es gibt keine Standard-Popover-Steuerung in iOS für iPhone-Geräte integriert. Sie müssten eine Drittanbieter-Bibliothek verwenden. Wenn Sie google oder suchen Sie S.O. Für "iphone popover" werden Sie viele Optionen sehen. – Rob

+0

yup hat es dank allot erhalten – Abhishek