iOS4 MKMapKit - карта не масштабируется, когда более одного пин - PullRequest
0 голосов
/ 07 декабря 2011

Конечно, это что-то простое, так как я только начинаю с карт. У меня уже есть карта, показывающая одно местоположение, но когда я добавляю вторую аннотацию, карта остается полностью уменьшенной, вместо того, чтобы идти к моим местам. Контакты увеличиваются, когда я увеличиваю изображение, поэтому я знаю, что этот бит работает.

Фрагменты кода:

- (void)viewDidLoad
{
...
...
...

// Set coordinates for our position
CLLocationCoordinate2D location;
location.latitude = [self.lat doubleValue];
location.longitude = [self.lon doubleValue];

// Add the annotation to our map view
MapViewAnnotation *newAnnotation = [[MapViewAnnotation alloc] 
                                    initWithTitle:self.placename                                        
                                    andSubtitle:self.subtitle
                                    andCoordinate:location];
[self.mapView addAnnotation:newAnnotation];
[newAnnotation release];

// Set coordinates for our second position
CLLocationCoordinate2D amenitylocation;
amenitylocation.latitude = self.latitude;
amenitylocation.longitude = self.longitude;

// Add the annotation to our map view
MapViewAnnotation *amenityAnnotation = [[MapViewAnnotation alloc] 
                                    initWithTitle:self.callouttitle                                        
                                    andSubtitle:self.calloutsubtitle
                                    andCoordinate:amenitylocation];
[self.mapView addAnnotation:amenityAnnotation];
[amenityAnnotation release];

[super viewDidLoad];

}



#pragma mark - MKMapView Delegates

// When a map annotation point is added, zoom to it (1500 range)
- (void)mapView:(MKMapView *)mv didAddAnnotationViews:(NSArray *)views
{
MKAnnotationView *annotationView = [views objectAtIndex:0];
id <MKAnnotation> mp = [annotationView annotation];
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance([mp coordinate], 1500, 1500);
[mv setRegion:region animated:YES];
[mv selectAnnotation:mp animated:YES];
}

- (MKAnnotationView *)mapView:(MKMapView *)mv viewForAnnotation:(id<MKAnnotation>)annotation
{
if(mapView.userLocation==annotation)
{
    return nil;
}

NSString *identifier = @"IDENTIFIER";

MKPinAnnotationView *annotationView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:identifier];

if(annotationView==nil)
{
    annotationView = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier]autorelease];
    annotationView.pinColor=MKPinAnnotationColorPurple;
    annotationView.canShowCallout=YES;
}

return annotationView;
}

Буду признателен за любые указатели.

Кроме того, правильно ли я думаю, что мне придется делать собственные выноски, если я хочу, чтобы на карте одновременно отображалось более одного?

1 Ответ

0 голосов
/ 07 декабря 2011

Извините, нашел ответ - у меня не было делегата MKMapView, связанного с владельцем файла в IB, хотя он есть в моем заголовочном файле.Связал это, и это работает.

...