【问题标题】:iOS 8 SDK, Swift, MapKit Drawing a RouteiOS 8 SDK、Swift、MapKit 绘制路线
【发布时间】:2014-08-28 06:25:50
【问题描述】:

我需要在两点之间绘制路线,我使用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;
}


【问题讨论】:

  • 在 SO 上,最好在问题本身中至少包含一些相关代码,而不仅仅是一个链接。

标签: swift mapkit ios8 mkoverlay mkpolyline


【解决方案1】:

地图视图没有调用您的 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
}

【讨论】:

    猜你喜欢
    • 2011-02-19
    • 1970-01-01
    • 2017-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多