Reputation: 690
I am using below method for showing annotations and route in mkmapview but it is showing only annotations in my mkmapview not showing complete route in map view's boundary Can any one suggest what modifications I need to do for showing everything properly.
Thanks
- (void)zoomAnnotationsOnMapView:(MKMapView *)mapView toFrame:(CGRect)annotationsFrame animated:(BOOL)animated
{
NSArray *annotations = mapView.annotations;
int count = (int)[mapView.annotations count];
if ( count == 0) { return; } //bail if no annotations
//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 = MINIMUM_ZOOM_ARC;
region.span.longitudeDelta = MINIMUM_ZOOM_ARC;
}
[mapView setRegion:region animated:animated];
[mapView setVisibleMapRect:mapRect edgePadding:UIEdgeInsetsMake(120, 120, 150, 80) animated:YES];
// [MBProgressHUD hideAllHUDsForView:self.view animated:YES];
}
When I applied it, It is showing this result.
Upvotes: 0
Views: 191
Reputation: 1421
This should work
-(void)zoomToDisplayPolyline:(MKMapView*)mapView polyline:(MKPolyline*)polyline animated:(BOOL)animated
{
[mapView setVisibleMapRect:[polyline boundingMapRect] edgePadding:UIEdgeInsetsMake(10.0, 10.0, 10.0, 10.0) animated:animated];
}
Upvotes: 1