Ad-J Ad-J - 4 months ago 16
Objective-C Question

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

Answer

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.

Comments