如何使用MKRoute创建特定路径?

时间:2014-05-14 12:09:58

标签: ios objective-c mapkit

我对iO场景比较陌生,所以这可能是一个愚蠢的问题,但无论如何......

我一直在做一个项目,我想在地图上突出显示一条特定的路线。例如:公共汽车的行程总是一样的,所以我想突出公共汽车在到达最终目的地之前经过的街道。

事情是,我只能从一个点到另一个点获得指示,但它不遵循公交车的行程,所以它对我不起作用。

请帮助!!

1 个答案:

答案 0 :(得分:1)

首先,如果您需要特定路线,则需要一些坐标。假设您有一些路线坐标作为NSDictionary个对象,如下例所示

{
 Lat = 53.3478;
 Lon = -6.2597;
}

存储在名为NSArray的{​​{1}}中,您可以执行以下操作:

routeLocations

如果您需要在叠加层上进行自定义,则可以执行以下操作 适用于iOS> = 7

CLLocationCoordinate2D routeCoord[routeLocations.count];
for (int i = 0; i < routeLocations.count; i++ )
{
 id location =[routeLocations objectAtIndex:i];
 routeCoord[i] = CLLocationCoordine2DMake([[location objectForKey:@"Lat"]floatValue], [[location objectForKey:@"Lon"]floatValue]);
}
// create your route Polyline
MKPolyline *poly = [MKPolyline polylineWithCoordinates:routeCoord count:routeLocations.count];

// first remove previously added overlays if any then add your newly created route polyline
[self.mapView addOverlay:poly];

否则使用弃用的方法

-(MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay
{
  if ([overlay isKindOfClass:[MKPolyline class]])
  {
    MKPolyline *route = overlay;
    MKPolylineRenderer *routeRenderer = [[MKPolylineRenderer alloc]initWithPolyline:route];
    routeRenderer.strokeColor = [UIColor blueColor];
    return routeRenderer;
  }
}