将叠加添加到Mapview

时间:2015-05-14 20:35:00

标签: ios objective-c mapkit

我一直在做iOS开发几个月。我已经有一个带有几个注释的地图视图,可以显示用户当前位置。

我一直试图通过文档来阅读使用一组CLLocationCoordinate2D来实现一个简单的叠加来绘制一条线(简单的静态路由)。它一直是一场斗争

我的MkOverlayRenderer方法似乎根本没有运行。如果我没有误会我不应该需要MKMapViewDelegate。我正在尝试实现MKOverlay委托,并有“@synthesize boundingMapRect;”。

这是我尝试实现Overlay

的代码
- (void)drawLineRoute
{
    CLLocationCoordinate2D purplePoints[2];
    purplePoints[0] = CLLocationCoordinate2DMake(28.541944, -81.382936);
    purplePoints[1] = CLLocationCoordinate2DMake(28.538447, -81.383096);

    MKPolyline *purplePolyline = [MKPolyline         polylineWithCoordinates:purplePoints count:2];
    purplePolyline.title = @"Citrus Bowl Connection";

[self.mapView addOverlay:purplePolyline];
}

- (MKOverlayRenderer *)mapView:(MKMapView *)mapView viewForOverlay:  (id<MKOverlay>)overlay
{
if([overlay isKindOfClass:[MKPolyline class]])
{
    MKPolygonRenderer *polyRender = [[MKPolygonRenderer alloc] initWithOverlay:overlay];
    polyRender.lineWidth = 2;
    polyRender.strokeColor = ovoPurple;
    return polyRender;
}

return nil;
}

非常感谢任何帮助或指导。提前谢谢大家。

1 个答案:

答案 0 :(得分:1)

有两种不同的委托方法:

实施返回viewForOverlay的{​​{1}}是不正确的。

一句话,如果你需要支持iOS 7之前的iOS版本,请实现MKOverlayRenderer而不是viewForOverlay的{​​{1}}。如果您不需要支持7之前的iOS版本,那么根本不要实现MKOverlayView,而是实现返回MKOverlayRenderer的{​​{1}}。