2016-07-20 5 views
2

Also habe ich experimentiert mit der MKMapView und überlagern, um "Straßen, die nicht auf Straßen sind" zu erstellen. Das mag komisch klingen, aber was ich versuchte, ist, dass ich in meiner App für iOS die Exkursionsrouten zeichnen möchte, die ein bestimmtes Hotel anbietet, aber alle Posts, die ich bisher gefunden habe, konzentrierten sich auf vorhandene Straßen, da die Exkursionen durchgehen Wälder, über Flüsse usw. gibt es keine Straßen, die mir helfen könnten.Wie zeichne Routen, die nicht auf Straßen sind, MKMapView

Da es keine Straßen gab, musste ich improvisieren, also entschied ich mich, eine Pliste zu machen (ich hätte wahrscheinlich auch eine andere Art von Datei nehmen können, ich mochte einfach die Arbeit mit Plist) für jede Exkursion und dort eine Reihe von alle Koordinaten und diese Koordinaten mit Google Earth, aber nach 60 verschiedenen Koordinaten habe ich aufgehört, weil es einfach lächerlich war.

Also habe ich versucht, ein Skript zu schreiben, das schreibt, wenn ich auf die Karte zur Laufzeit tippe, die Koordinaten zum plist. Während dies funktioniert, ist es immer noch sehr unangenehm, weil ich die automatisch erstellte Datei im Xcode-Projekt nicht speichern kann und weil es insgesamt nicht so gut funktioniert, wie ich es mir gewünscht habe.

Also meine Frage ist, ob es etwas einfacher ist, dass ich vielleicht verpasst habe, wie man Routen erstellt, die nicht auf Straßen sind.

Antwort

0

Verwenden Sie die Website zum Erstellen der gpx Datei.

Beachten Sie, dass Xcode nur das Tag verwendet. Wenn Sie also ein Tool finden, das <rte> oder <trk> basierte GPX-Dateien generiert, kann Xcode Ihren Standort nicht korrekt simulieren. In der Datei, die die verknüpfte Website erstellt, müssen Sie also <trkpt> zu <wpt> ändern. Dieser Code hilft beim Abrufen der Polylinie.

func addRoute() { 
    let thePath = NSBundle.mainBundle().pathForResource("Route", ofType: "gpx") // Not sure on this part 
    let pointsArray = NSArray(contentsOfFile: thePath!) 

    let pointsCount = pointsArray!.count 

    var pointsToUse: [CLLocationCoordinate2D] = [] 

    for i in 0...pointsCount-1 { 
    let p = CGPointFromString(pointsArray![i] as! String) 
    pointsToUse += [CLLocationCoordinate2DMake(CLLocationDegrees(p.x), CLLocationDegrees(p.y))] 
    } 

    let myPolyline = MKPolyline(coordinates: &pointsToUse, count: pointsCount) 

    mapView.addOverlay(myPolyline) 
}