Search code examples
iosobjective-cmkmapviewcoordinates

Center coordinate of a set of CLLocationsCoordinate2D


Is there any way to get center coordinate of a set of CLLocationsCoordinate2D in iOS?

enter image description here


Solution

  • Hmm... it depends how you define the centre of the points. Does it depend on the distribution etc...

    An easy way to do it is as follows...

    //find rect that encloses all coords
    
    float maxLat = -200;
    float maxLong = -200;
    float minLat = MAXFLOAT;
    float minLong = MAXFLOAT;
    
    for (int i=0 ; i<[locations count] ; i++) {
        CLLocationCoordinate2D location = [locations objectAtIndex:i];
    
        if (location.latitude < minLat) {
            minLat = location.latitude;
        }
    
        if (location.longitude < minLong) {
            minLong = location.longitude;
        }
    
        if (location.latitude > maxLat) {
            maxLat = location.latitude;
        }
    
        if (location.longitude > maxLong) {
            maxLong = location.longitude;
        }
    }
    
    //Center point
    
    CLLocationCoordinate2D center = CLLocationCoordinate2DMake((maxLat + minLat) * 0.5, (maxLong + minLong) * 0.5);
    

    This will give the center of the rect covering all the points. However it does not take the spread into account.

    i.e.

    . = point
    X = centre
    
    .....               X                   .
    

    EDIT

    Corrected some of the maths.