适用于多个目的地和单一来源的iOS MKDirections

我的应用程序需要从一组10个“最接近”的步行点到用户。我已经看到,MKDirections通过“calculateDirectionsWithCompletionHandler”来处理单个源,目标位置。 我的问题是,我有做10个请求,然后检查哪一个是距离最近的一个,或者有一个发送多个目的地的方法,并且响应将是最接近的一个步行?

谢谢

据我所知,没有办法指定两个以上的MKDirections请求点。 您提出的创build10个独立请求的解决scheme应该在理论上有效,但请记住:

  1. MKDirections不会在设备上本地计算路线,而是到达计算它们的远程API并返回响应。 如果您正在计算10条路线,那么在等待所有结果返回时,用户可能会有明显的延迟。

  2. 因为使用远程API来计算方向,所以苹果可能会对这样的东西感到皱眉,如果你太频繁地碰到他们的方向API,他们可能会扼杀你,或者他们可能会拒绝应用程序,如果他们看到提交到App Store这发生了。

我不确定你的具体要求,但是根据你需要的精度,一个解决scheme可能是使用半散列公式计算起始点和每个终点之间的距离,这会使两点之间的距离为-the-乌鸦苍蝇。 由于您正在计算步行路线(与开车相反,您仅限于遵循特定道路并受到交通限制),因此距离这些计算的最近距离可能与实际步行距离/时间最接近点你可以做出一个单一的MKDirections请求这些细节。

//试试这个annotation.coordinate是位置和ULManager.location //作为用户位置

  let dirRe = MKDirectionsRequest() dirRe.source = MKMapItem(placemark: MKPlacemark(coordinate: (self.ULManager.location?.coordinate)!, addressDictionary: nil)) dirRe.destination = MKMapItem(placemark: MKPlacemark(coordinate: (annotation.coordinate), addressDictionary: nil)) dirRe.transportType = .Walking let requestAll = MKDirections(request: dirRe) requestAll.calculateDirectionsWithCompletionHandler ({ (response: MKDirectionsResponse?, error: NSError?) in // do your staff here })