Возникли проблемы при удалении пользовательских аннотаций в iOS - PullRequest
0 голосов
/ 21 ноября 2011

Я пытаюсь удалить пользовательскую аннотацию, размещенную на карте. Проблема в том, чтобы удалить эту аннотацию, пользователь должен дважды нажать кнопку удаления, которую я сделал. Это строка кода, которая удаляет аннотацию [mv removeAnnotation:[mv.selectedAnnotations objectAtIndex:0]]. Я почти уверен, что по умолчанию мое текущее местоположение (MKUserLocation) всегда является первой аннотацией в массиве, и поэтому мне приходится дважды нажимать кнопку удаления. Я на правильном пути? Любой совет будет оценен.

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view{
NSLog(@"\n\n\n################################\nANNOATION SELECTED\n################################");



_currentAnnotation = view.annotation;
[self zoomOnAnnotation:_currentAnnotation];

 NSLog(@"selectedannotationview is %@", _currentAnnotation);

[viewLoadingCover setHidden:FALSE];
[actIndLoading startAnimating];
//Annotation *currentAnnotation = view.annotation;
currentAnnoView = view;
//if (isLoadingCallout) {
    [self getCurrentMapDataWithLatitute:_currentAnnotation.coordinate.latitude Longitute:_currentAnnotation.coordinate.longitude];
//}


if ([view.annotation isEqual:mapView.userLocation])
{
    isUser = YES;
    //NSLog(@"##### yes this is user location annotation");
    if (!view.rightCalloutAccessoryView) {
        //NSLog(@"##### yes view.rightCalloutAccessoryView is NIL");
        mapView.userLocation.title = @"Loading...";
        mapView.userLocation.subtitle = @" ";
        //NSLog(@"##### cityAndState(subtitle) = %@", cityAndState);
        //[[mapView userLocation] setSubtitle:[NSString stringWithString:cityAndState]];
        userButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
        view.rightCalloutAccessoryView = userButton;
        [userButton addTarget:self action:@selector(UIButton:) forControlEvents:UIControlEventTouchUpInside];
        NSLog(@"userlocation selected---------------------------%@", cityAndState);
    }

    reverseG= [[MKReverseGeocoder alloc] initWithCoordinate:mapView.userLocation.coordinate];
    reverseG.delegate = self;
    [reverseG start];
}
else
{
    isUser = NO;
}

}

Ответы [ 2 ]

1 голос
/ 21 ноября 2011

Я предлагаю NSLogging mv.selectedAnnotations count, чтобы увидеть, что там происходит. Разве удаление аннотации по индексу 1 вместо 0 не приведет к тому, что число> 1 быстро подтвердит правильность или неправильность вашей теории?

0 голосов
/ 21 ноября 2011

Заинтересованы ли вы в методах делегатов MKMapView

- (Void) mapView: (MKMapView *) mapView didSelectAnnotationView: (MKAnnotationView *) view;
- (Void) mapView: (MKMapView *) mapView didDeselectAnnotationView: (MKAnnotationView *) view;

С их помощью вы узнаете, какая аннотация выбрана или не выбрана.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...