wake-up-neo.com

Wie zeichnet man eine MKPolyline auf einer MapView?

Ich habe eine Reihe von Punkten, die auf einer Karte gezeichnet werden sollen, die bereits dekodiert ist:

- (void) drawRoute:(NSArray *) path {
    NSInteger numberOfSteps = path.count;

    CLLocationCoordinate2D coordinates[numberOfSteps];
    for (NSInteger index = 0; index < numberOfSteps; index++) {
         CLLocation *location = [path objectAtIndex:index];
         CLLocationCoordinate2D coordinate = location.coordinate;

         coordinates[index] = coordinate;
    }

    MKPolyline *polyLine = [MKPolyline polylineWithCoordinates:coordinates count:numberOfSteps];
    [map addOverlay:polyLine];
}

dabei ist "map" eine Instanz von MKMapView und path das Array, das die bereits dekodierte Menge von Punkten darstellt. 

Ich dachte, mit der Linie [map addOverlay:polyLine]; würde es gezeichnet. Ich habe auf einigen Seiten diese Methode gesehen:

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay {
    MKPolylineView *polylineView = [[MKPolylineView alloc] initWithPolyline:overlay];
    polylineView.strokeColor = [UIColor redColor];
    polylineView.lineWidth = 1.0;

    return polylineView;
}

Ist das PolylineView was eigentlich auf der Karte gezeichnet ist? Ich habe auch versucht, die MKPolyline (von der oben genannten Methode) an das Argument "<MKOverlay>" dieser letzten Methode zu übergeben, löst jedoch eine Ausnahme aus.

Ich glaube, ich bin nahe dran, aber ich weiß nicht, was ich jetzt tun soll.

Bitte helfen Vielen Dank im Voraus.

27
Fustigador

Erledigt. 

War eine sehr dumme Sache, ich habe den Delegierten nicht für MapView eingestellt. Einfach hinzufügen [map setDelegate: self]; hat den Trick gemacht.

Trotzdem danke!.

14
Fustigador

Erstellen Sie einfach MKPolyline mit Koordinaten und fügen Sie diese PolyLine der Kartenansicht hinzu.

MKPolyline *polyLine = [MKPolyline polylineWithCoordinates:coordinates count:numberOfSteps];
    [map addOverlay:polyLine];

Sie finden ein Tutorial hier zum Zeichnen der Polylinie über einige Koordinaten .Bearbeiten: Die URL scheint nicht mehr gültig zu sein. Sie finden die archivierte Version dieser URL hier .

4
MKPolyline *polyline = [MKPolyline polylineWithCoordinates:coordinates count:self.allPins.count];
[self.mapView addOverlay:polyline];

Überprüfen Sie diese http://pinkstone.co.uk/how-to-draw-an-mkpolyline-on-a-map-view/ und Swift http://rshankar.com/how-to -add-mapview-annotation-and-draw-Polylinie in Swift/

0
Arvind