У меня есть один UIViewcontroller с MKMapKit и PickerView. Как показано ниже. и у меня есть один plist, который содержит все координаты, соответствующие значениям в PickerView. Так как я выбираю любой элемент из PickerView, я обновляю текущую Карту и беру координаты нового элемента (иногда это может быть от 5 до 6 координаты) и показать это на карте.Обновление аннотаций MKMapkitview не работает?
Но для меня я вижу, что «Аннотации» подходят для отображения карты, но когда я нажимаю другой элемент, предыдущие контакты все еще присутствуют на Карте.
Я хочу показать только аннотаций штырьки выбранного PickerView item.please помочь мне
использования: это мой PLIST файл
В моем PLIST там один поле «категория» предметы перечисленные в Pickerview, являются общим списком категорий.
Поэтому, когда я просматриваю PickerView, я проверю, соответствует ли выбранный элемент любому элементу в поле категории Plist. Если его сопоставление соответствует их координатам в виде карты.
Но когда я нажимаю категорию «restuarents» в PickerView, я получил следующую карту, которая верна.
и когда я нажимаю «cluburi» категорию его должен показать 2 Pins на карте вместо 3.Actually его не клиринговых текущий «restuarent» Pin от карты .like ниже изображений
Итак, как очистить предыдущие контакты на карте перед отображением новых контактов?
Это мой код в файле viewcontroller.m
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
return 1;
}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
return [locations count];
}
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
return [locations objectAtIndex: row];
}
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
[_MAPVIEW setRegion:[_MAPVIEW region] animated:YES];
for(int j=0;j<[[savedContentsarray valueForKey:@"category"] count];j++)
{
if([[[savedContentsarray valueForKey:@"category"] objectAtIndex:j] isEqualToString:[locations objectAtIndex: row]])
{
coordinate.latitude=[[latitude objectAtIndex:j] floatValue];
coordinate.longitude=[[longitude objectAtIndex:j] floatValue];
annotation = [[myAnnotation alloc] initWithCoordinate:coordinate title:[[savedContentsarray valueForKey:@"name"]objectAtIndex:j]];
[_MAPVIEW addAnnotation:annotation];
}
}
}
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id)annotation {
//7
if([annotation isKindOfClass:[MKUserLocation class]])
return nil;
//8
static NSString *identifier = @"myAnnotation";
MKPinAnnotationView * annotationView = (MKPinAnnotationView*)[_MAPVIEW dequeueReusableAnnotationViewWithIdentifier:identifier];
if (!annotationView)
{
//9
annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier];
annotationView.pinColor = MKPinAnnotationColorPurple;
annotationView.animatesDrop = YES;
annotationView.canShowCallout = YES;
}else {
annotationView.annotation = annotation;
}
annotationView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
return annotationView;
}
Итак, если я понял ваше требование, вы хотите, чтобы на карте отображался только выбранный элемент из режима выбора. Если это так, вам нужно удалить существующий вывод из подпунктов Mapview. У меня есть рабочий код, просто дайте момент мне, чтобы поместить это здесь. –
Хорошо, это будет здорово !!, я попробовал этот removeAnnotation код, как только я добавил, что тогда карта всегда кажется пустой .. thatats yi removed.can u дать ваш пример кода – Bangalore