MapKit 框架为我们提供了在 MKMapView 中绘制简单路径的有用类。然而,使用 MKPolylineRenderer 绘制的线条过于平淡且无风格,更重要的是没有贝塞尔路径,这对于我的地图应用使用来说是不够的。因此,创建了 IVBezierPathRenderer 以绘制更自然的地图路径。
要运行示例项目,首先克隆仓库,然后从 Example 目录运行 pod install
IVBezierPathRenderer 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中
pod "IVBezierPathRenderer"
安装后,将以下导入头文件添加到您的源代码中
@import IVBezierPathRenderer;
IVBezierPathRenderer 非常易于使用。只需像往常一样创建您的 MKPolyline 和 MKPolylineRenderer,然后使用 IVBezierPathRenderer 对象替换您的 MKPolylineRenderer 对象。这就足够了。
func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer {
if let overlay = overlay as? MKPolyline{
let renderer = IVBezierPathRenderer(overlay:overlay)
renderer.strokeColor = UIColor.blueColor().colorWithAlphaComponent(0.5)
renderer.lineWidth = 4
//Optional Tension for curve, default: 4
//renderer.tension = 2.5
//Optional Border
//renderer.borderColor = renderer.strokeColor
//renderer.borderMultiplier = 1.5
return renderer
}
}
-(MKOverlayRenderer*)mapView:(MKMapView*)mapView rendererForOverlay:(id<MKOverlay>) overlay{
if([overlay isKindOfClass:[MKPolyline class]]){
IVBezierPathRenderer *renderer = [[IVBezierPathRenderer alloc] initWithOverlay:overlay];
renderer.strokeColor = [[UIColor blueColor] colorWithAlphaComponent:0.5f];
renderer.lineWidth = 4;
//Optional Tension for curve, default: 4
//renderer.tension = 2.5;
//Optional Border
//renderer.borderColor = renderer.strokeColor;
//renderer.borderMultiplier = 1.5;
return renderer;
}
}
Ivan Li, [email protected]
IVBezierPathRenderer 在 MIT 授权下提供。有关更多信息,请参阅 LICENSE 文件。