如何从点数组创建CGPathRef

时间:2012-02-16 10:48:30

标签: objective-c ios5 mapkit

大家好我一直在地图应用程序中工作,我需要在两个位置之间绘制路线,我也有路线坐标(使用google Direction api)并将其保存在一个数组中,现在我只需要要做的是从点数组创建一个路径,稍后我将使用MKOverlayPathView的路径在地图上创建真实路线。这里我的问题是如何从坐标数组创建CGPathRef,或者以任何其他方式执行相同的操作 在此先感谢

2 个答案:

答案 0 :(得分:21)

假设坐标作为NSValue对象存储在NSArray中,您可以执行以下操作:

CGMutablePathRef path = CGPathCreateMutable();
if (points && points.count > 0) {
    CGPoint p = [(NSValue *)[points objectAtIndex:0] CGPointValue];
    CGPathMoveToPoint(path, nil, p.x, p.y);
    for (int i = 1; i < points.count; i++) {
        p = [(NSValue *)[points objectAtIndex:i] CGPointValue];
        CGPathAddLineToPoint(path, nil, p.x, p.y);
    }
}
// do stuff
CGPathRelease(path);

答案 1 :(得分:2)

创建路径的另一种方法:

CGPoint points[5];
// TODO: Fill points array with values.
CGMutablePathRef path = CGPathCreateMutable();
CGPathAddLines(path, NULL, points, 5);
// TODO: Do something useful with path.
CGPathCloseSubpath(path);
CGPathRelease(path);