How to draw routes that aren't on roads, MKMapView

ε祈祈猫儿з 提交于 2019-12-10 10:35:33

问题


So i've been experimenting with the MKMapView and overlay to create "roads that aren't on roads". That may sound weird but what I was trying to do is that in my app for iOS i want to draw the excursion routes that a specific hotel offers, however all the posts i found so far were focusing on existing roads, since the excursions go through forests, over rivers etc. there are no roads to help me.

Since there were no roads i had to improvise so I decided to make a plist(I probably could have taken another type of file too, I just liked the working with plist's) for every excursion and in there make an array of all the coordinates and getting these coordinates with google earth, but after 60 different coordinates I stopped because it was just ridiculous.

So then I tried to make a script that writes, when I tap on the map at run-time, the coordinates to the plist. Whilst this works it is still really uncomfortable, because I can't save the automatically created file in the Xcode project, and because it overall just doesn't work as good as I wished it to.

So my question is if there is something easier that I may've missed on how to create routes that aren't on streets.


回答1:


Try using the site to create the gpx file.

Also note that Xcode only uses the tag so if you find a tool that generates <rte> or <trk> based gpx files, Xcode won't be able simulate your location properly. So in the file that the linked web site creates you need to change <trkpt> to <wpt>. This code below might help with getting the polyline.

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)
}


来源:https://stackoverflow.com/questions/38485554/how-to-draw-routes-that-arent-on-roads-mkmapview

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!