MKMapView在所有点之间绘制连接线

时间:2015-09-14 20:54:36

标签: ios xcode swift mkmapview mapkit

我有一个50+坐标列表。在所有这些坐标之间绘制线条的最有效方法是什么(应该创建一个“圆形”路径,因为它们都有显示顺序),这也很容易定制(线条粗细,颜色等等)?

谢谢!

1 个答案:

答案 0 :(得分:4)

我不确定我是否理解你的问题。如果要查找要从头到尾显示的点列表,则需要从这些点创建MKPolyline对象,确保按照要连接的顺序将点添加到myPoints数组中它们:

CLLocationCoordinate2D coordinates[[myPoints count]];

int i = 0;
for (Checkpoint *point in myPoints)
{
    coordinates[i] = CLLocationCoordinate2DMake([point.lat floatValue] , [point.lon floatValue]);
    i++;
}

self.polyline = [MKPolyline polylineWithCoordinates:coordinates count: [myPoints count]];
[mapView addOverlay:self.polyline];

然后确保您正在实现委托方法- mapView:rendererForOverlay:。这是一个例子,但可以根据您的需求进行定制:

-(MKOverlayRenderer*)mapView:(MKMapView*)mapView rendererForOverlay:(id <MKOverlay>)overlay
{
    MKPolylineRenderer* lineView = [[MKPolylineRenderer alloc] initWithPolyline:self.polyline];
    lineView.strokeColor = [UIColor blueColor];
    lineView.lineWidth = 7;
    return lineView;
}

但是,如果您真的想要一个闭环(圆形)对象,那么您将需要创建一个MKPolygon对象。这个过程非常相似;在这种情况下,使用以下代码替换上面的self.polyline初始化程序:

self.polygon = [MKPolygon polygonWithCoordinates:coordinates count: [myPoints count]];
[mapView addOverlay:self.polygon];

我认为- mapView:rendererForOverlay:代码应保持不变。我没有测试过这段代码,但希望它能让你朝着正确的方向前进。

相关问题