iOS 8 SDK、Swift、MapKit 绘制路线
Posted
技术标签:
【中文标题】iOS 8 SDK、Swift、MapKit 绘制路线【英文标题】:iOS 8 SDK, Swift, MapKit Drawing a Route 【发布时间】: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 上,最好在问题本身中至少包含一些相关代码,而不仅仅是一个链接。 【参考方案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
【讨论】:
以上是关于iOS 8 SDK、Swift、MapKit 绘制路线的主要内容,如果未能解决你的问题,请参考以下文章
使用 mapKit 的地图显示相反的方向(iOS Swift)
iOS 5 MapKit,MKPlacemark,在 iOS 5 上运行 iOS 4.3 应用程序