Подтвердить что ты не робот

Как автоматически отображать заголовок/субтитры на карте Аннотации (pin)

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

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

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

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

Спасибо

4b9b3361

Ответ 1

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

Ответ 2

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

Ответ 3

Начиная с 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
}