代码之家  ›  专栏  ›  技术社区  ›  user1904273

IOS Mapkit或旅行推销员问题的核心位置解决方案

  •  0
  • user1904273  · 技术社区  · 7 年前

    Traveling Salesman Problem --计算一组点上的最短路线——但要收费。在苹果的世界里,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 回复  |  直到 7 年前
        1
  •  1
  •   Do2    7 年前

    你将无法通过使用Mapkit实现你想要的,因为你将需要大量的请求,苹果将限制你的应用程序。坚持使用Google或Mapbox,他们有用于STP的矩阵API,而Mapkit没有。

    推荐文章