MapView не перезагружает аннотации, если вы не увеличиваете или не перемещаете карту - PullRequest
3 голосов
/ 10 марта 2011

Я использую следующий цикл for для управления / определения пяти ближайших аннотаций к местоположению пользователя, а затем задаю их как аннотации mapView.

for (int i = 0; i <= 5; i++) {
            //NSLog(@"Stores Count For Loop: %i", [storesLessThan100KAway count]);
            if ([storesLessThan100KAway count] > 5) {
                NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"distanceToTarget" ascending:YES];
                NSArray *newArray = [storesLessThan100KAway sortedArrayUsingDescriptors:[NSArray arrayWithObject:descriptor]];
                [mapView addAnnotation:[newArray objectAtIndex:i]];
                if ([[mapView annotations] count] > 4) {
                    [descriptor release];
                    [dict release];
                    [currentlocation release];
                    [usrlocation release];
                    [annotation release];
                    [paul drain];
                    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
                    return;
                }
            }

Однако аннотации, добавленные на карту, будутне будет отображаться, пока карта не будет увеличена или перемещена.В любом случае, я мог бы это остановить?

Ответы [ 2 ]

1 голос
/ 31 мая 2014

Попытайтесь поместить эти строки в таймер и остановите его после завершения добавления аннотаций

static float deltaX=.1;
CLLocation *location = [[[CLLocation alloc] initWithLatitude:self.mapView.centerCoordinate.latitude longitude:self.mapView.centerCoordinate.longitude] autorelease];

MKCoordinateRegion region;
region.center = location.coordinate;
MKCoordinateSpan span;

span.latitudeDelta = self.mapView.region.span.latitudeDelta+deltaX;
span.longitudeDelta = self.mapView.region.span.longitudeDelta+deltaX;
deltaX+=.1;
deltaX*=-1;
region.span = span; // Set the region's span to the new span.
[self.mapView setRegion:region animated:0];
1 голос
/ 10 марта 2011

MKMapView является подклассом UIView - Вы можете попробовать вызвать [mapView setNeedsDisplay]?

Если это не сработает:

// Force update of map view.
CLLocationCoordinate2D center = [mapView centerCoordinate];
[mapView setCenterCoordinate:center];
...