Aby utworzyć niestandardowego widoku adnotacji (zamiennik dla standardowego pin), można po prostu ustawić właściwość MKAnnotationView
image
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ń.
Dzięki ALOT ... :) – Abhishek
@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
Tak, dziękuję – Abhishek