2017-05-19 4 views
2

Salut J'ai un tableau comme cet itinéraire = [[latitude, longitude], [latitude, longitude] ...]. Je devrais dessiner une ligne qui suit les coordonnées des tableaux. J'ai essayé avec cette fonction:Swift Dessiner un itinéraire pour un tableau de valeur

func addPolylineToMap(locations: [CLLocation]){ 
    var coordinates = locations.map({ (location: CLLocation!) -> CLLocationCoordinate2D in 
     return location.coordinate}) 
    var countLocations = locations.count 
    let geodesic = MKGeodesicPolyline(coordinates: &coordinates, count: locations.count) 
    mapView.addOverlay(geodesic) 
} 

et appeler la fonction donnant la route du tableau:

addPolylineToMap(locations: route as! [CLLocation]) 

mais compilateur me donne l'erreur ambiguous use of 'init(coordinates:count:)'

Quoi qu'il en soit, je ne suis pas sûr qu'il pourrait travail. Quelqu'un pourrait-il m'expliquer comment le faire mieux?

P.S.

ROUTE

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 

    let userLocation: CLLocation = locations[0] as CLLocation 

    manager.startUpdatingLocation() 
    var userLatitude = (userLocation.coordinate.latitude) 
    var userLongitude = (userLocation.coordinate.longitude) 
    userMoves = [(userLatitude),(userLongitude)] 
itinéraire

est un tableau créé annexant utilisateur déplace

Répondre

0

Vous pouvez supprimer cette &. Dans Swift 3:

func addPolylineToMap(locations: [CLLocation]) { 
    let coordinates = locations.map { $0.coordinate } 
    let geodesic = MKGeodesicPolyline(coordinates: coordinates, count: coordinates.count) 
    mapView.add(geodesic) 
} 

Ou à Swift 2:

func addPolylineToMap(locations: [CLLocation]) { 
    let coordinates = locations.map { $0.coordinate } 
    let geodesic = MKGeodesicPolyline(coordinates: coordinates, count: coordinates.count) 
    mapView.addOverlay(geodesic) 
} 
+0

fin, cette partie du code fonctionne maintenant, merci vous, mais je reçois une nouvelle erreur sur: addPolylineToMap (emplacements: itinéraire que [CLLocation ]) Il dit: "thread 1: signal SIGABRT ' –

+0

CONSOLE OUTPUT: Impossible de convertir la valeur de type' Swift._SwiftDeferredNSArray '(0x10a665040) en' CLLocation '(0x10a35f388) –

+0

Regardez le contenu. pas d'objets 'CLLocation' Mais ce n'est qu'une question distincte: faites des diagnostics et déterminez comment vous avez construit' route'. s, postez une question distincte sur ce sujet. – Rob