如何在MapView上绘制MKPolyline?

时间:2012-06-06 09:29:42

标签: iphone ios mkmapview

我有一个要在地图上绘制的点数组,它已经被解码了:

- (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];
}

其中“map”是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(从上面的方法)传递给最后一个方法的“&lt; MKOverlay&gt; overlay”参数,但抛出异常。

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

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

3 个答案:

答案 0 :(得分:14)

完成。

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

无论如何,谢谢!。

答案 1 :(得分:4)

只需创建坐标为&amp;的MKPolyline将该polyLine添加到地图视图。

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

您将找到有关如何在某些坐标上绘制折线的教程here修改:网址似乎不再有效。您可以找到此网址here的存档版本。

答案 2 :(得分:0)

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

检查此http://pinkstone.co.uk/how-to-draw-an-mkpolyline-on-a-map-view/和swift http://rshankar.com/how-to-add-mapview-annotation-and-draw-polyline-in-swift/