MapKit - polylineWithCoordinates verbindet alle Punkte

Ich war nur neugierig, was die richtige Art zu zeichnen, eine einfache route, die die Linie zwischen einer Reihe von Punkten? Ich habe momentan ein array von Koordinaten, und wenn ich übergeben Sie es an polylineWithCoordinates und all die anderen notwendigen Dinge, zieht es ein großes Netz von Linien, die Elemente aller der Punkte zu einander. Ich habe ein paar Proben, aber keiner von Ihnen scheinen etwas besonderes zu tun, um dies zu berücksichtigen, auch wenn Sie mehr als zwei Punkte.

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

}

Dies ist der code in meinem mapViewController, die verantwortlich ist für die Zeichnung, nur im Fall, dass jemand sieht, was ich Tue, oder nicht zu tun.
MapKit - polylineWithCoordinates verbindet alle Punkte

Nun, dass ich jetzt alles viel näher, ist eigentlich nicht anschließen benachbarten Koordinaten jedes andere. Jeder Punkt hat nur 2 Zeilen daraus resultierenden verbinden, Punkt 2 Punkte mehr, aber ich kann nicht herausfinden, das Muster seiner Verbindung in.

  • Haben Sie die Koordinaten wiederholen? Stellen Sie sicher, dass die Koordinaten in myCheckpoints sind in der Reihenfolge, die Sie wollen, dass die Linie gezeichnet.
  • Ja, alle Koordinaten sind eindeutig und in der richtigen Reihenfolge. So bin ich Recht in der Annahme soll das nicht passieren?
  • Es zeichnet die Linien in der Reihenfolge der Koordinaten werden zur Verfügung gestellt. Wie viele Punkte sind in der Linie? Melden Sie die Koordinaten, wie Sie in der for-Schleife.
  • Es sind 20. Ich ging voran und trug Sie, keine dublicated, etc. Ich bin mir nicht sicher, was es sein könnte.
  • Kannst du bitte den log posten? Ein kleiner screenshot des Ergebnisses kann helfen, auch.
  • Hinzugefügt ein Bild wie das ist mehr als hilfreich, das Protokoll. Das Protokoll ist buchstäblich nur 20 Paare von Schwimmern, die lat/lon. Lon ist alles negative durch die Punkte, die Sie tatsächlich darstellen, aber das sollte keine Rolle spielen.
  • Führen Sie einen der Segmente über den Pazifischen Ozean? Können Sie das Verhalten reproduzieren, nur mit sagen wir 4 Punkte?
  • Es kann sein, dass meine Punkte sind eigentlich nicht in Ordnung ist. Bei den ersten 4 Koordinaten, die nicht wirklich die ersten 4 in meiner route. Ich werde versuchen, diese zu Sortieren und sehen, ob das das problem behebt. Keine überquerung des Pazifischen Ozeans, aber ich weiß, bricht es und gefunden haben, hier eine Antwort auf SO was enthält eine Korrektur. Post zurück nach der Sortierung der Ergebnisse.
  • Karenina: Sie hatten Recht, dachte ich, dass ich wieder meine Punkte in Ordnung, aber ich lag falsch. Ich habe sortiert Sie, und jetzt meine Linie zieht richtig. Wenn Sie fügen Sie Ihre Anregungen aus den Kommentaren in den Antworten zu Abschnitt werde ich gehen Sie voran und markieren Sie es richtig 🙂
  • wie u Art Koordinaten(breiten,lang)...
  • gleiche Problem, ich habe das schreiben in Swift gibt es irgendein Beispiel dafür?
  • gleiche Problem, ich habe das schreiben in Swift gibt es irgendein Beispiel dafür?

InformationsquelleAutor Karoly S | 2011-08-22
Schreibe einen Kommentar