Я использую в своем приложении вид карты, который отображает некоторые аннотации.
Я пытался изменить регион на карте, когда выбрана аннотация. Выбранная аннотация должна переместиться в центр.
Если аннотация находится рядом с центром, выноска появляется после изменения региона.
Если аннотация находится рядом с границей или если отображается только часть этой аннотации, регион изменяется, но выноска не отображается.
это код, который создает аннотации:
- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation{
MKAnnotationView *annView;
annView = (MKAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:@"currentloc"];
if(annView == nil)
annView=[[[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"currentloc"]autorelease];
if ([annotation isKindOfClass:[UserAnnotation class]]){
[annView setImage:[UIImage imageNamed:@"marker_me.png"]];
}
if ([annotation isKindOfClass:[RestaurantAnnotation class]]){
[annView setImage:[UIImage imageNamed:@"marker_resto.png"]];
UIButton* rightButton = [UIButton buttonWithType: UIButtonTypeDetailDisclosure];
[rightButton setImage:[UIImage imageNamed:@"button_arrow_normal.png"] forState:UIControlStateNormal];
[rightButton setImage:[UIImage imageNamed:@"button_arrow_active.png"] forState:UIControlStateHighlighted];
annView.rightCalloutAccessoryView = rightButton;
}
annView.canShowCallout = YES;
annView.calloutOffset = CGPointMake(-5, 5);
return annView;
}
это мой код, когда выбрана аннотация:
- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view{
if ([view.annotation isKindOfClass:[RestaurantAnnotation class]]) {
Restaurant *selectedRestaurant = [restaurants getRestaurantByName:view.annotation.title andAddress:view.annotation.subtitle];
[selectedRestaurants addObject:selectedRestaurant];
NSLog(@"Restaurant %@ selected",view.annotation.title);
CLLocationCoordinate2D coordinates;
coordinates.latitude = [selectedRestaurant getLocationLat];
coordinates.longitude = [selectedRestaurant getLocationLng];
[mapView setCenterCoordinate:coordinates animated:YES];
}
}
Что мне нужно добавить, чтобы реализовать то, что мне нужно?
Спасибо и извините за плохой английский.