[英]iOS - MapKit and navigation from a location to another
我的問題是關於iOS SDK中的mapkit。 是否可以繪制從一個位置到另一個位置的路線? 有內置的API嗎? 如果沒有,我該怎么辦? 謝謝
在iOS 7中,存在一個API,用於獲取從某個位置到另一個名為MKDirection
的方向。 您可以-[MKDirection calculateDirectionsWithCompletionHandler:]
調用-[MKDirection calculateDirectionsWithCompletionHandler:]
方法。 此方法的參數是MKDirectionsHandler
塊,其中包含MKDirectionsResponse
。 MKDirectionsResponse
包含路由數據,該數據是MKRoute
數組。 在每個MKRoute
都有一條polyline
( MKPolyline
),您可以將這些polyline
作為覆蓋添加到MKMapView
。
MKDirections允許您查找兩個位置之間的路線,而MapKit允許您將此路線添加為疊加層。
func drawRoutes(sourceLocation:CLLocationCoordinate2D ,
destinationLocation:CLLocationCoordinate2D)
{
let sourcePlacemark = MKPlacemark(coordinate: sourceLocation, addressDictionary: nil)
let destinationPlacemark = MKPlacemark(coordinate: destinationLocation, addressDictionary: nil)
let sourceMapItem = MKMapItem(placemark: sourcePlacemark)
let destinationMapItem = MKMapItem(placemark: destinationPlacemark)
let directionRequest = MKDirectionsRequest()
directionRequest.source = sourceMapItem
directionRequest.destination = destinationMapItem
directionRequest.transportType = .automobile
let directions = MKDirections(request: directionRequest)
directions.calculate {
(response, error) -> Void in
guard let response = response else {
if let error = error {
print("Error: \(error)")
}
return
}
let route = response.routes[0]
self.mapView.add((route.polyline), level: MKOverlayLevel.aboveRoads)
let rect = route.polyline.boundingMapRect
self.mapView.setRegion(MKCoordinateRegionForMapRect(rect), animated: true)
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.