IOS Mapkit或旅行商问题核心定位解决方案

时间:2018-12-17 22:48:11

标签: ios swift mapkit core-location

Google Directions提供了一个用于解决Traveling Salesman Problem的API,它可以计算出一组点上的最短路线,但需要为此付费。在苹果世界中,Polyline和MKRoute似乎很有前途,但是我在文档中找不到任何东西可以表明它们支持两个以上的点-start和dest。使用MapKit和/或Core Location是否有人对TSP问题感到幸运?似乎可以使用以下方法计算节点之间所有边缘的时间距离:

request.source = startLocation
        request.destination = destLocation
        request.requestsAlternateRoutes = true
        request.transportType = .automobile

        let directions = MKDirections(request: request)
        directions.calculate { (directions, error) in

            if var routeResponse = directions?.routes {
                routeResponse.sort(by: {$0.expectedTravelTime <
                    $1.expectedTravelTime})
                let quickestRouteForSegment: MKRoute = routeResponse[0]

                completion(quickestRouteForSegment.expectedTravelTime)  
            }
        }
    }

并手动开发一种算法,尝试各种可能性并选择最快的算法。但这很快就变得复杂,需要很多请求。只是想知道是否有人发现了一种更复杂的方法来处理它。

1 个答案:

答案 0 :(得分:1)

使用Mapkit将无法实现所需的功能,因为您将需要大量请求,而Apple会限制您的应用程序。坚持使用Google或Mapbox,它们具有用于STP的矩阵API,而Mapkit没有。