2012-06-06 33 views
25

我有地图上描绘的点的阵列,其已经解码:如何在MapView上绘制MKPolyline?

- (void) drawRoute:(NSArray *) path { 
    NSInteger numberOfSteps = path.count; 

    CLLocationCoordinate2D coordinates[numberOfSteps]; 
    for (NSInteger index = 0; index < numberOfSteps; index++) { 
     CLLocation *location = [path objectAtIndex:index]; 
     CLLocationCoordinate2D coordinate = location.coordinate; 

     coordinates[index] = coordinate; 
    } 

    MKPolyline *polyLine = [MKPolyline polylineWithCoordinates:coordinates count:numberOfSteps]; 
    [map addOverlay:polyLine]; 
} 

其中“地图”是的MKMapView的一个实例,并表示路径已经解码的设定点的阵列。

我认为,与线[map addOverlay:polyLine];它将被绘制。我已经在一些页面中看到了这种方法:

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay { 
    MKPolylineView *polylineView = [[MKPolylineView alloc] initWithPolyline:overlay]; 
    polylineView.strokeColor = [UIColor redColor]; 
    polylineView.lineWidth = 1.0; 

    return polylineView; 
} 

是否polylineView实际绘制在地图上?我也尝试将MKPolyline(从上面的方法)传递给最后一个方法的“< MKOverlay> overlay”参数,但会引发异常。

我想我很近,但我不知道现在该做什么。

请帮忙!非常感谢你提前。

+2

请注意,此代码现在已在iOS7上过时。 –

回答

13

完成。

是一个非常愚蠢的事情,我没有设置MapView的委托。只需添加[map setDelegate:self];诀窍。

谢谢你!

4

只需创建坐标为&的MKPolyline即可将该多边形添加到地图视图中。

MKPolyline *polyLine = [MKPolyline polylineWithCoordinates:coordinates count:numberOfSteps]; 
    [map addOverlay:polyLine]; 

你会发现如何通过一些坐标绘制折线的教程here编辑:该网址似乎不再有效。你可以找到这个网址的存档版本here

+0

这里是它的一个存档版本的链接:http://web.archive.org/web/20120906022305/http://navarra.ca/?p=786 – Brian