/ / fit анотация в mkmapview ios7 - ios, object-c, ios7

подходяща анотация в mkmapview ios7 - ios, цел-c, ios7

Имам проблем с мащабиране в MkMapView.Когато търся някои станции, за първи път правилно намалява и показва всички анотации.

Това е моят код за анотация за увеличение

#define MINIMUM_ZOOM_ARC 0.0001 //approximately 1 miles (1 degree of arc ~= 69 miles)
#define ANNOTATION_REGION_PAD_FACTOR 1.15
#define MAX_DEGREES_ARC 360

- (void)zoomMapViewToFitAnnotations:(MKMapView *)mapView animated:(BOOL)animated
{

NSArray *annotations = mapView.annotations;
int count = [mapView.annotations count];
if ( count == 0) { return; } // mbail if no annotati  ons

//convert NSArray of id <MKAnnotation> into an MKCoordinateRegion that can be used to set the map size
//can"t use NSArray with MKMapPoint because MKMapPoint is not an id
MKMapPoint points[count]; //C array of MKMapPoint struct
for( int i=0; i<count; i++ ) //load points C array by converting coordinates to points
{
CLLocationCoordinate2D coordinate = [(id <MKAnnotation>)[annotations objectAtIndex:i] coordinate];
points[i] = MKMapPointForCoordinate(coordinate);
}

//create MKMapRect from array of MKMapPoint
MKMapRect mapRect = [[MKPolygon polygonWithPoints:points count:count] boundingMapRect];
//convert MKCoordinateRegion from MKMapRect
MKCoordinateRegion region = MKCoordinateRegionForMapRect(mapRect);

//add padding so pins aren"t scrunched on the edges
region.span.latitudeDelta  *= ANNOTATION_REGION_PAD_FACTOR;
region.span.longitudeDelta *= ANNOTATION_REGION_PAD_FACTOR;
//but padding can"t be bigger than the world
if( region.span.latitudeDelta > MAX_DEGREES_ARC ) { region.span.latitudeDelta  = MAX_DEGREES_ARC; }
if( region.span.longitudeDelta > MAX_DEGREES_ARC ){ region.span.longitudeDelta = MAX_DEGREES_ARC; }

//and don"t zoom in stupid-close on small samples
if( region.span.latitudeDelta  < MINIMUM_ZOOM_ARC ) { region.span.latitudeDelta  = MINIMUM_ZOOM_ARC; }
if( region.span.longitudeDelta < MINIMUM_ZOOM_ARC ) { region.span.longitudeDelta = MINIMUM_ZOOM_ARC; }
//and if there is a sample of 1 we want the max zoom-in instead of max zoom-out
if( count == 1 )
{
region.span.latitudeDelta =0.05;
region.span.longitudeDelta =0.05;

}

[mapView setRegion:region animated:animated];

}

Отговори:

0 за отговор № 1

Вашият въпрос е маркиран за iOS 7. В 7 има нов метод на MKMapView showAnnotations:animated: което увеличава мащаба на изгледа към предоставения набор от пояснения.