На mkuserlocation, как я могу показать свое собственное сообщение в viewForAnnotation? - PullRequest
0 голосов
/ 19 июня 2011

Я хочу показать пользовательское сообщение вместо «Мое местоположение» в viewForAnnotation.Как мне это сделать?

Спасибо Deshawn

Ответы [ 3 ]

2 голосов
/ 19 июня 2011

В делегате вашего MKMapView реализуйте метод mapView:viewForAnnotation и проверьте, имеет ли аннотация тип MKUserLocation.Если да, измените свойства заголовка и субтитров аннотации.Выноска автоматически вытянет новые значения.Или вы можете создать совершенно новый вид и вернуть его здесь.

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {
    if ([annotation isKindOfClass:[MKUserLocation class]]) {
        annotation.title = @"I am here";
        return nil;
    }
    return nil;
}

Отказ от ответственности: я не проверял этот код.

1 голос
/ 07 августа 2011

Простая ссылка на него тоже работает, вот так ...

mapView.userLocation.title = @"I am here";

Это можно сделать из любого места, где есть ссылка на вид карты.

1 голос
/ 24 июня 2011

Это можно сделать, обновив Title свойство MKUserLocation.

Поскольку протокол MKAnnotation не требует присвоения Title свойства, приведенная аннотация передается в качестве аргумента MKUserLocation и устанавливается свойство

- (MKAnnotationView*)mapView:(MKMapView *)mapView viewForAnnotation:    (id<MKAnnotation>)annotation {
    if ([annotation isKindOfClass:[MKUserLocation class]]) {
        [(MKUserLocation*)annotation setTitle: @"I am here"];
        return nil;
    }
    return nil;
}
...