簡體   English   中英

iOS-MapKit以及從一個位置導航到另一個位置

[英]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都有一條polylineMKPolyline ),您可以將這些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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM