2010-08-12 10 views
8

Tengo que construir una matriz usando algo como lo siguiente:CLLocationCoordinate2D sin saber cuántos habrá en la matriz?

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); 

El problema es que nunca voy a saber cuántos elementos van a estar en la matriz, por lo que puede especificar el recuento. ¿Hay alguna manera de crear una matriz CLLocationCoordinate2D e insertar nuevas coordenadas sin saber cuál será el total final?

EDITAR: Mi objetivo final es utilizar las coordenadas para hacer un MKPolyline, utilizando el método polylineWithCoordinates que necesita una matriz CLLocationCoordinate2D.

Respuesta

15
// 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); 
+0

no se olvide de agregar #include en ese archivo .m Y, la función es sizeof (...) no size_of (...) ... acabo de ahorrarle 15 minutos. : D De lo contrario funcionó muy bien! – horseshoe7

+0

Lo que realmente ocurre aquí: CLLocationCoordinate2D * points = malloc ([mutablePoints count] * sizeof (CLLocationCoordinate2D)); Sería genial si alguien pudiera señalar esto. No estamos creando una matriz C, ¿verdad? – onigunn

+1

Estamos de hecho creando una matriz C. Consulte la documentación de polylineWithCoordinates: count :. –

1

Encuéntrelos en un objeto NSValue y tírelos a un NSMutableArray.

+0

Pero estoy tratando de crear una MKPolyline a partir de esto usando el método polylineWithCoordinates. –

+0

Tendrá que descomprimirlos de su NSMutableArray y luego en la memoria con algunos cálculos de puntero. –

Cuestiones relacionadas