我有以下代码,我试图在一组坐标之间绘制折线(这是正确的,因为我也使用它们将图钉添加到地图,这些工作正常)。
我调用绘图方法来启动绘图(方法调用中的数组包含必要的坐标):
[self drawRoute:[[transportData objectForKey:@"19"] objectForKey:@"stops"]];
这是应该在地图上绘制线条的实际方法(selectedRoute是MKPolyline对象):
- (void)drawRoute:(NSArray *)routePointsArray {
if (selectedRoute) {
[mapView removeOverlay:selectedRoute];
selectedRoute = nil;
}
CLLocationCoordinate2D routeCoordinates[routePointsArray.count];
for (int i = 0; i < routePointsArray.count; i++) {
float latitude = [[[routePointsArray objectAtIndex:i] objectForKey:@"lat"] floatValue];
float longitude = [[[routePointsArray objectAtIndex:i] objectForKey:@"lon"] floatValue];
CLLocationCoordinate2D routePoint = CLLocationCoordinate2DMake(latitude, longitude);
routeCoordinates[i] = routePoint;
}
selectedRoute = [MKPolyline polylineWithCoordinates:routeCoordinates count:routePointsArray.count];
[mapView addOverlay:selectedRoute];
[mapView setVisibleMapRect:[selectedRoute boundingMapRect]];
}
这是我的代表:
- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay
{
MKPolylineRenderer *routeLineView = [[MKPolylineRenderer alloc] initWithPolyline:selectedRoute];
if(overlay == selectedRoute)
{
if(nil == routeLineView)
{
routeLineView = [[MKPolylineRenderer alloc] initWithPolyline:selectedRoute];
routeLineView.fillColor = [UIColor redColor];
routeLineView.strokeColor = [UIColor redColor];
routeLineView.lineWidth = 5;
}
return routeLineView;
}
return nil;
}
我把它缩小到routeCoordinates数组没有填满坐标,但我不明白为什么。
此外,如果您发现代码中的任何错误,我会非常感激,如果您可以指出这些(可能有一个解决方案),因为我只是学习iOS的这一部分,并可以使用我可以获得的任何帮助。
答案 0 :(得分:0)
您的rendererForOverlay
方法出错。
它做的第一件事是将MKPolylineRenderer
的实例分配给routeLineView
,但稍后只有在routeLineView
为nil
时才会实际添加叠加层,它赢了“是的。
删除将初始值分配给routeLineView
的行。