2011-08-22 14 views
9

Ero solo curioso di sapere qual era il modo corretto di disegnare una linea semplice tra un insieme di punti? Al momento ho una serie di coordinate e quando la passo a polylineWithCoordinates e faccio tutte le altre cose necessarie, disegna una grande rete di linee che collegano tutti i punti l'una all'altra. Ho esaminato alcuni campioni ma nessuno di loro sembra fare qualcosa di speciale per spiegare questo, anche quando usano più di due punti.MapKit - polylineWithCoordinates interconnette tutti i punti

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

} 

Questo è il codice nel mio mapViewController che è responsabile per il disegno, nel caso in cui qualcuno vede quello che sto facendo, o non fare. Here is what the result looks like

Ora che guardo tutto molto più vicino, in realtà non connetto le coordinate adiacenti l'un l'altro. Ogni punto ha solo 2 linee da esso che collegano quel punto a 2 punti in più ma non riesco a capire il motivo a cui le connette.

+0

Ripetere una delle coordinate? Assicurati che le coordinate in myCheckpoints siano nell'ordine in cui vuoi che venga tracciata la linea. – Anna

+0

Sì, tutte le coordinate sono uniche e nell'ordine corretto. Quindi ho ragione nel presumere che questo non dovrebbe accadere? –

+0

Disegnerà le linee nell'ordine in cui sono fornite le coordinate. Quanti punti ci sono nella linea? Registra le coordinate man mano che vengono aggiunte nel ciclo for. – Anna

risposta

3

Assicurarsi che le coordinate in myCheckpoints siano nell'ordine in cui si desidera che le linee vengano disegnate.

Disegnerà le linee nell'ordine in cui sono fornite le coordinate.

+0

Ho usato il metodo di selezione dei blocchi nella risposta qui: http: //stackoverflow.com/questions/805547/how-to-sort-an-nsmutablearray-with-custom-objects-in-it – rmooney

+0

ottengo risposta dal servizio Web non ho ricevuto alcuna istruzione su come disegnare un percorso. sono appena passato l'araay dei cordinati e tracciamo un percorso ma il problema è che traccia due linee uno dall'inizio alla fine e dall'altra estremità al punto di partenza –

Problemi correlati