我需要在两点之间绘制路线,而我正在使用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;
}
答案 0 :(得分: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
}