Many threads on this topic, and finally found a answer that will work - using MapQuest API.
But now it is closed.
http://devblog.mapquest.com/2015/05/01/looking-for-a-free-open-appkey-read-this/
I tried the Google Maps API, so many keys tried them all noting worked - too much effort for something so simple so not using Google Maps.
I found this, https://github.com/Project-OSRM/osrm-backend/wiki/Server-api
Works great - clean and simple but doesn't allow a set start and end location. Just best route when passing in a list.
There is also this, http://www.gebweb.net/optimap/ not sure if I can access the API ?
Anyone solved this issue ? Maybe I could just do a local sort using the items long / lat position and calculate the distance between points rather than use an API ?
Using something like this
waypoints.sort {
let distanceA = newStart.location.distanceBetween($0.location)
let distanceB = newStart.location.distanceBetween($1.location)
return distanceA < distanceB
}