Аннотации MapKit появляются в одном контроллере вида, а не в другом - PullRequest
0 голосов
/ 30 апреля 2018

В контроллере моего просмотра отображаются аннотации Map Kit.

_mapVC = [[CollectionMapViewController alloc] init];
mapVC.collectedLeafArray = [collectionFetchedResultsController fetchedObjects];
    mapVC.canShowCallout = YES;
    mapVC.delegate = self;
    [mapVC layoutMapView];
    [self addChildViewController:mapVC];
    [self.view insertSubview:mapVC.view belowSubview:_userCollectionSortMenu.view];

    [mapVC didMoveToParentViewController:self];

Я точно так же настроил свой дочерний контроллер представления в моем контроле просмотра заметок. Однако они не отображаются.

 _mapVC = [[CollectionMapViewController alloc] init];
    _mapVC.collectedLeafArray = [NSArray arrayWithObject:_collectedLeaf];
    _mapVC.delegate = self;
    _mapVC.canShowCallout = NO;
    [_mapVC layoutMapView];

    [self addChildViewController:_mapVC];
    [_scrollView addSubview:_mapVC.view]; 
    [_mapVC didMoveToParentViewController:self];

Я знаю, что собранный лист не равен нулю, потому что я проверяю широту в методе CollectionMapViewController, который устанавливает аннотации:

- (void)layoutMapView
{
    NSMutableArray* leavesWithValidGeotag = [[NSMutableArray alloc] initWithCapacity:[collectedLeafArray count]];

    for (CollectedLeaf* collectedLeaf in collectedLeafArray)
    {
        NSLog(@"latitude: %@", collectedLeaf.latitude);
        if ( ![collectedLeaf.latitude isEqualToString:kGeoLocationNotAvailable] )
        {
            [leavesWithValidGeotag addObject:collectedLeaf];
            LeafAnnotation* annotation = [[LeafAnnotation alloc] initWithLeaf:collectedLeaf];
            [mapView addAnnotation:annotation];
            [annotation release];
        }
    }

    //// Adjust the region

    if([leavesWithValidGeotag count] > 1)
    {
        NSArray* westEastSort = [leavesWithValidGeotag sortedArrayUsingSelector:@selector(longitudeCompare:)];
        CollectedLeaf* eastMostLeaf = [westEastSort objectAtIndex:0];
        CollectedLeaf* westMostLeaf = [westEastSort lastObject];

        NSArray* southNorthSort = [leavesWithValidGeotag sortedArrayUsingSelector:@selector(latitudeCompare:)];
        CollectedLeaf* southMostLeaf = [southNorthSort objectAtIndex:0];
        CollectedLeaf* northMostLeaf = [southNorthSort lastObject];

        CLLocationCoordinate2D center;
        center.longitude = ([westMostLeaf.longitude doubleValue] + [eastMostLeaf.longitude doubleValue]) / 2.0f;
        center.latitude = ([southMostLeaf.latitude doubleValue] + [northMostLeaf.latitude doubleValue]) / 2.0f;

        MKCoordinateSpan span = MKCoordinateSpanMake(1.5 * fabs([northMostLeaf.latitude doubleValue] - [southMostLeaf.latitude doubleValue]),
                                                     1.5 * fabs([westMostLeaf.longitude doubleValue] - [eastMostLeaf.longitude doubleValue]));

        if ( span.latitudeDelta < kMinimumSpan )
        {
            span.latitudeDelta = kMinimumSpan;
        }
        if ( span.longitudeDelta < kMinimumSpan )
        {
            span.longitudeDelta = kMinimumSpan;
        }

        MKCoordinateRegion region = MKCoordinateRegionMake(center, span);
        [mapView setRegion:region];
    }

    else if([leavesWithValidGeotag count] == 1)
    {
        CollectedLeaf* theLeaf = [leavesWithValidGeotag objectAtIndex:0];
        CLLocationCoordinate2D center;
        center.longitude = [theLeaf.longitude doubleValue];
        center.latitude = [theLeaf.latitude doubleValue];
        MKCoordinateSpan span = MKCoordinateSpanMake(kMinimumSpan, kMinimumSpan);
        MKCoordinateRegion region = MKCoordinateRegionMake(center, span);
        [mapView setRegion:region];
    }

    [leavesWithValidGeotag release];
}

1 Ответ

0 голосов
/ 30 апреля 2018

Может быть, вам нужно скопировать объект NSArray.

NSArray *test1 = [NSArray arrayWithObject:_collectedLeaf];
_mapVC.collectedLeafArray = [test1 copy];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...