Синяя точка MapKit не видна при использовании пользовательских аннотаций - PullRequest
3 голосов
/ 20 января 2011

Я не могу видеть синюю точку текущего местоположения при использовании пользовательских аннотаций

- (MKAnnotationView *) mapView:(MKMapView *) mapView viewForAnnotation:(id<MKAnnotation> ) annotation {

    MKAnnotationView *customAnnotationView=[[[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:nil] autorelease];

    UIImage *pinImage = [UIImage imageNamed:@"ann.png"];
    [customAnnotationView setImage:pinImage];

    customAnnotationView.canShowCallout = YES;
                                                                                                 
    //UIImageView *leftIconView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"ann.png"]];
    //customAnnotationView.leftCalloutAccessoryView = leftIconView;

    UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
    [rightButton addTarget:self action:@selector(showDetails:) forControlEvents:UIControlEventTouchUpInside];
    customAnnotationView.rightCalloutAccessoryView = rightButton;

    return customAnnotationView;
}

Ответы [ 3 ]

8 голосов
/ 20 января 2011
if (annotation == map.userLocation) {
        return nil;
    }

Добавьте это .:d

2 голосов
/ 20 января 2011

Я получил ответ сейчас.Просто нужно добавить следующие строки в приведенный выше код в конце непосредственно перед return customAnnotationView;

if (annotation == mapView.userLocation) {
NSLog (@"ноль");вернуть ноль;}

спасибо:)

1 голос
/ 20 января 2011

Видимость текущего местоположения пользователя «синяя точка» не связана с пользовательскими аннотациями. Чтобы отобразить текущее местоположение пользователя, необходимо установить для свойства showsUserLocation вашего MKMapView значение YES. Например:

yourMapView.showsUserLocation = YES;

или

[yourMapView showsUserLocation] = YES;

Поймите, что MapKit отображает причуду, показывающую текущее местоположение пользователя: в симуляторе расположение пользователя всегда будет штаб-квартирой Apple в Купертино, штат Калифорния, США. Однако на устройстве оно будет работать нормально.


Отредактировано, чтобы добавить:

Как указывает Теренте, вы должны быть осторожны, чтобы не «съесть» аннотацию местоположения пользователя, и поэтому должны проверить, является ли обрабатываемая вами аннотация местоположением пользователя. Я оборачиваю логику:

if ([annotation isKindOfClass:[MapLocation class]]) {

}

Где MapLocation - мой класс аннотаций.

...