3

我需要在两点之间绘制路线,并MKDirectionsRequest用于我的目的。

获得路线是可以的,但我无法绘制它。

在 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;
}


4

1 回答 1

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
}
于 2014-08-28T11:43:06.940 回答