web-dev-qa-db-fra.com

Comment dessiner un MKPolyline sur un MapView?

J'ai un tableau de points à dessiner sur une carte, c'est déjà décodé:

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

où "map" est une instance de MKMapView et path du tableau représentant l'ensemble de points déjà décodé. 

Je pensais qu'avec la ligne [map addOverlay:polyLine]; elle serait dessinée. J'ai vu dans certaines pages cette méthode:

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

    return polylineView;
}

La polyligne est-elle ce qui est réellement dessiné sur la carte? J'ai également essayé de passer MKPolyline (de la méthode ci-dessus) à l'argument "<MKOverlay> overlay" de cette dernière méthode, mais lève une exception.

Je pense que je suis proche, mais je ne sais pas quoi faire maintenant.

S'il vous plaît aider! Merci beaucoup d'avance.

27
Fustigador

Terminé. 

Était une chose très stupide, je n'ai pas défini le délégué pour MapView. Ajoutant simplement [map setDelegate: self]; a fait le tour.

Merci quand même!.

14
Fustigador

Il suffit de créer MKPolyline avec les coordonnées et d’ajouter ce polyLine à la vue cartographique.

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

Vous trouverez un tutoriel ici sur la manière de tracer une polyligne sur certaines coordonnées .Éditer: L’URL ne semble plus être valide. Vous pouvez trouver la version archivée de cette URL ici .

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

Vérifiez ceci http://pinkstone.co.uk/how-to-draw-an-mkpolyline-on-a-map-view/ et pour Swift http://rshankar.com/how-to -add-mapview-annotation-and-draw-polline-in-Swift/

0
Arvind