我正在尝试向 MKMapView 中的路线添加一些停靠点或路径点。
这是我正在使用的代码。我在网上查看过,但到目前为止还没有发现任何迹象表明有一个属性可以在请求对象中添加航路点。我错过了什么吗?有更好的方法吗?
private func calculateRoute(on mapView: MKMapView,
from source: CLLocationCoordinate2D,
to destination: CLLocationCoordinate2D) {
let request = MKDirections.Request()
request.source = MKMapItem(placemark: MKPlacemark(coordinate: source))
request.destination = MKMapItem(placemark: MKPlacemark(coordinate: destination))
let directions = MKDirections(request: request)
directions.calculate { response, error in
guard let response = response else {
return
}
if let route = response.routes.first {
mapView.addOverlay(route.polyline, level: .aboveRoads)
mapView.setVisibleMapRect(
route.polyline.boundingMapRect,
edgePadding: UIEdgeInsets(top: 50, left: 50, bottom: 50, right: 50),
animated: true)
}
}
}
亲切的问候,
一个
MKDirections.Request
有一个source
和destination
。如果您想添加站点,那么您需要请求一系列路线并将它们连接在一起。
例如,如果您想从 A 经 B 前往 C,请请求从 A 到 B 以及从 B 到 C 的路线。
您可以将多段线显示为单独的叠加层,也许带有 A、B 和 C 的标记。您将需要计算组合路线的边界矩形