Как автоматически отображать заголовок / субтитры на аннотации карты (пин-код) - PullRequest
11 голосов
/ 08 сентября 2010

Я загружаю аннотацию на карту. При загрузке карты аннотация отображается в виде булавки.

Однако заголовок и субтитры не появляются на выводе автоматически. В настоящее время пользователь должен нажать на булавку до отображения заголовка.

Есть ли способ, чтобы заголовок автоматически отображался на булавке при загрузке карты?

(Этот вопрос - почти то же самое, но не совсем так: Чтобы отобразить заголовок текущей операции на карте в iphone , потому что у меня уже есть атрибуты -title и -subtitle, определенные в моем объекте .)

Спасибо

Ответы [ 3 ]

16 голосов
/ 10 сентября 2010

Метод для вызова - "selectAnnotation: animated" из MKMapView.

9 голосов
/ 05 января 2012
- (void)mapView:(MKMapView *)mv didAddAnnotationViews:(NSArray *)views
{    
    MKAnnotationView *annotationView = [views objectAtIndex:0];
    id<MKAnnotation> mp = [annotationView annotation];
    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance([mp coordinate] ,350,350);

    [mv setRegion:region animated:YES];    

    [mapView selectAnnotation:mp animated:YES];

}

если вы делаете то же самое, что и вызов метода setRegion, то убедитесь, что вы вызываете

[mapView selectAnnotation:mp animated:YES];

после

[mv setRegion:region animated:YES];    
0 голосов
/ 08 ноября 2017

Начиная с iOS 11, появился новый тип MKAnnotationView, называемый MKMarkerAnnotationView, который может отображать заголовок и субтитры без выбора. Чек https://developer.apple.com/documentation/mapkit/mkmarkerannotationview

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {

    guard !(annotation is MKUserLocation) else {
        return nil
    }

    if #available(iOS 11.0, *) {
        let annoView = MKMarkerAnnotationView(annotation: annotation, reuseIdentifier: "HunterAnno")
        annoView.canShowCallout = true
        return annoView
    }

    let annoView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: "HunterAnnoLow")
    annoView.canShowCallout = true
    return annoView
}
...