2013-04-27 20 views

Odpowiedz

35

Aby utworzyć niestandardowego widoku adnotacji (zamiennik dla standardowego pin), można po prostu ustawić właściwość MKAnnotationViewimage w metodzie viewForAnnotation:

- (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; 
} 

kupili także na dostosowanie właściwości centerOffset aby pinezkę ustawić dokładnie tak, jak chcesz.

Jeśli chodzi o dostosowanie objaśnienia, najprostszym sposobem jest określenie leftCalloutAccessoryView, rightCalloutAccessoryView i/lub detailCalloutAccessoryView. Daje to zaskakujący stopień kontroli, dodawanie różnego rodzaju obrazów, etykiet itp

Jeśli chcesz zrobić radykalne przeprojektowanie objaśnieniu, można mieć viewForAnnotation ustawić canShowCallout do NO a następnie odpowiedzieć na setSelected w swojej niestandardowy widok adnotacji, aby wyświetlić własne objaśnienie. Będąc w Swift, zobacz Customize MKAnnotation Callout View? dla kilku opcji dostosowywania objaśnień.

+0

Dzięki ALOT ... :) – Abhishek

+1

@Ahhishek Nie ma standardowej kontroli popover wbudowanej w iOS dla urządzeń wielkości iPhone'a. Trzeba użyć biblioteki innej firmy. Jeśli szukasz google lub wyszukaj S.O. dla "iphone popover" zobaczysz mnóstwo opcji. – Rob

+0

Tak, dziękuję – Abhishek