8

I need to build an array using something like the following:

CLLocationCoordinate2D  points[4];


    points[0] = CLLocationCoordinate2DMake(41.000512, -109.050116);

    points[1] = CLLocationCoordinate2DMake(41.002371, -102.052066);

    points[2] = CLLocationCoordinate2DMake(36.993076, -102.041981);

    points[3] = CLLocationCoordinate2DMake(36.99892, -109.045267);

Problem is, I will never know how many items are going to be in the array, so I can specify the count. Is there a way to create a CLLocationCoordinate2D array, and just insert new coordinates without knowing what the final total will be?

EDIT: My final goal is to use the coordinates to make an MKPolyline, using the polylineWithCoordinates method which needs a CLLocationCoordinate2D array.

Nic Hubbard
  • 41,587
  • 63
  • 251
  • 412

2 Answers2

16
// unpacking an array of NSValues into memory
CLLocationCoordinate2D *points = malloc([mutablePoints count] * sizeof(CLLocationCoordinate2D));
for(int i = 0; i < [mutablePoints count]; i++) {
    [[mutablePoints objectAtIndex:i] getValue:(points + i)];
}

MKPolyline *myPolyline = [MKPolyline polylineWithCoordinates:points count:[mutablePoints count]];
free(points);
Héctor Ramos
  • 9,239
  • 6
  • 36
  • 39
Seamus Campbell
  • 17,816
  • 3
  • 52
  • 60
  • don't forget to add #include in that .m file AND, the function is sizeof(...) not size_of(...) ...just saved you 15 minutes. :D Otherwise worked great! – horseshoe7 Jul 21 '11 at 08:29
  • What actually happens here: CLLocationCoordinate2D *points = malloc([mutablePoints count] * sizeof(CLLocationCoordinate2D)); Would be great if someone could point this out. We aren't creating a C array aren't we? – onigunn Feb 20 '13 at 20:42
  • 1
    We are indeed creating a C array. See the documentation for polylineWithCoordinates:count:. – Seamus Campbell Feb 21 '13 at 00:31
  • what is mutablePoints? – igrrik Mar 02 '16 at 14:59
  • @igrrik it's just an NSArray. I was following up on Dave DeLong's answer. – Seamus Campbell Mar 19 '16 at 18:32
0

Box them up in an NSValue object and throw them in an NSMutableArray.

Dave DeLong
  • 242,470
  • 58
  • 448
  • 498