2014-08-28 92 views
3

我需要繪製兩點之間的路線,我使用MKDirectionsRequest來達到我的目的。iOS 8 SDK,Swift,MapKit繪製路線

獲得路線是可以的,但我在繪製時遇到了問題。

在iOS系統中8 SDK沒有功能

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay 

只有這一個:

func mapView(mapView: MKMapView!, rendererForOverlay overlay: MKOverlay!) -> MKOverlayRenderer! 

,由於某種原因,我不明白爲什麼這種方法不叫。
設置MapView代理並導入MapKit。


這裏是rendererForOverlay功能實現:

func rendererForOverlay(overlay: MKOverlay!) -> MKOverlayRenderer! { 
    println("rendererForOverlay"); 

    var overlayRenderer : MKOverlayRenderer = MKOverlayRenderer(overlay: overlay); 

    var overlayView : MKPolylineRenderer = MKPolylineRenderer(overlay: overlay); 
    view.backgroundColor = UIColor.blueColor().colorWithAlphaComponent(0.5); 

    return overlayView; 
} 


+1

在SO,最好的做法是包括在問題本身至少有一些相關的代碼,而不僅僅是一個鏈接。 – Anna 2014-08-28 11:45:10

回答

2

地圖視圖並沒有叫你rendererForOverlay方法,因爲它不正確命名。

的方法必須精確命名爲:

mapView(mapView:rendererForOverlay) 

,但在你的代碼它的命名:

rendererForOverlay(overlay:) 


此外,你應該檢查overlay參數的類型爲MKPolyline和設置折線渲染器的strokeColor

(中相應的現有代碼view.backgroundColor實際上正在改變視圖控制器的view的背景顏色 - 不折線。)

實施例:

func mapView(mapView: MKMapView!, rendererForOverlay overlay: MKOverlay!) -> MKOverlayRenderer! { 
    println("rendererForOverlay"); 

    if (overlay is MKPolyline) { 
     var pr = MKPolylineRenderer(overlay: overlay); 
     pr.strokeColor = UIColor.blueColor().colorWithAlphaComponent(0.5); 
     pr.lineWidth = 5; 
     return pr; 
    } 

    return nil 
}