Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Hide, show annotation on MkMapView

How to hide annotation when zooming out the map view. I have a big number of annotation i have to hide them because if the region displayed on the map is too big you can see only the annotations.

like image 320
Luca Avatar asked Jan 20 '10 10:01

Luca


2 Answers

To do this, you have to check the size of your region, and depending of it you set the views hidden or not.

I tested the code bellow but, you will probably need to make some adjustments.


- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
{
    NSArray *annotations = [_mapView annotations];  
    MyAnnotation *annotation = nil; 
    for (int i=0; i<[annotations count]; i++)
    {
        annotation = (MyAnnotation*)[annotations objectAtIndex:i];
        if (_mapView.region.span.latitudeDelta > .010)
        {
            [[_mapView viewForAnnotation:annotation] setHidden:YES];
        }
        else {
            [[_mapView viewForAnnotation:annotation] setHidden:NO];
        }
    }
}
like image 173
vfn Avatar answered Oct 20 '22 12:10

vfn


Swift version:

let annotations = self.maps.annotations

    for annotation in annotations
    {
        if (self.maps.region.span.latitudeDelta > 0.010)
        {

            self.maps.viewForAnnotation(annotation)?.hidden = true

        }
        else {

            self.maps.viewForAnnotation(annotation)?.hidden = false

        }
    }
like image 31
nano Avatar answered Oct 20 '22 12:10

nano