2011-08-22 17 views
9

Tenía curiosidad por saber cuál era la forma correcta de dibujar una línea de ruta simple entre un conjunto de puntos? Actualmente tengo un conjunto de coordenadas y cuando lo paso a polylineWithCoordinates y hago todas las demás cosas necesarias, dibuja una gran red de líneas que interconectan todos los puntos entre sí. He visto algunas muestras, pero ninguna de ellas parece hacer nada especial para explicar esto, incluso cuando usan más de dos puntos.MapKit - polylineWithCoordinates interconecta todos los puntos

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    ... 

    //Add drawing of route line 
    CLLocationCoordinate2D coordinates[[myCheckpoints count]]; 

    int i = 0; 
    for (Checkpoint *ckpt in myCheckpoints) 
    { 
     coordinates[i] = CLLocationCoordinate2DMake([ckpt.lat floatValue] , [ckpt.lon floatValue]); 
     i++; 
    } 

    MKPolyline *route = [MKPolyline polylineWithCoordinates: coordinates count: [myCheckpoints count]]; 
    [mapView addOverlay:route]; 

} 

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay { 

    MKPolylineView *polylineView = [[[MKPolylineView alloc] initWithPolyline:overlay] autorelease]; 
    polylineView.strokeColor = [UIColor greenColor]; 
    polylineView.lineWidth = 5.0; 

    return polylineView; 

} 

Este es el código en mi mapViewController que es responsable de la elaboración, por si acaso alguien ve lo que estoy haciendo, o no hacerlo. Here is what the result looks like

Ahora que veo todo mucho más cerca, en realidad no se está conectando coordenadas adyacentes entre sí. Cada punto solo tiene 2 líneas derivadas conectando ese punto con 2 puntos más, pero no puedo entender el patrón en el que los conecta.

+0

¿Alguna de las coordenadas se repite? Asegúrese de que las coordenadas en myCheckpoints estén en el orden en que desea dibujar la línea. – Anna

+0

Sí, todas las coordenadas son únicas y están en el orden correcto. ¿Estoy en lo cierto al suponer que esto no debería estar sucediendo? –

+0

Dibujará las líneas en el orden en que se proporcionan las coordenadas. ¿Cuántos puntos hay en la línea? Registre las coordenadas a medida que se agregan en el for-loop. – Anna

Respuesta

3

Asegúrate de que las coordenadas en myCheckpoints estén en el orden en que deseas dibujar las líneas.

Dibujará las líneas en el orden en que se proporcionan las coordenadas.

+0

Utilicé el método de clasificación de bloques en la respuesta aquí: http: //stackoverflow.com/questions/805547/how-to-sort-an-nsmutablearray-with-custom-objects-in-it – rmooney

+0

recibo respuesta del servicio web. No recibí instrucciones sobre cómo dibujar una ruta. Acabo de pasar el araay de cordinates y dibujar una ruta, pero el problema es que dibuja dos líneas una desde el principio hasta el final y desde el otro hasta el punto de inicio –

Cuestiones relacionadas