我正在使用MKDirectionsRequest在两点之间找到MKRoute。
响应将使用以下代码显示在MKMapView上:

MKDirections *directions = [[MKDirections alloc] initWithRequest:request];
    [directions calculateDirectionsWithCompletionHandler:^(MKDirectionsResponse *response, NSError *error)
     {
         if (error)
         {
             NSLog(@"Error : %@", error);
         }
         else
         {
             [_mapView removeOverlays:_mapView.overlays];
             for (MKRoute *route in response.routes)
             {
                 [_mapView insertOverlay:route.polyline atIndex:0 level:MKOverlayLevelAboveRoads];
             }
         }
     }];

我的问题是,如果用户正在移动,是否有适当的方法来更新MKRoute。我正在使用的自动取款机
- (void)mapView:(MKMapView *)aMapView didUpdateUserLocation:(MKUserLocation *)aUserLocation

为了识别运动,在这种方法中,我将删除MKRoute叠加层,并使用新的用户位置计算并添加新的MKRoute叠加层。
我想知道是否有一种方法可以只计算一次路线并以编程方式更新覆盖图?

编辑:
我在Apple Dev Docs中找到了这个https://developer.apple.com/library/ios/documentation/MapKit/Reference/MKRouteStep_class/Reference/Reference.html#//apple_ref/occ/cl/MKRouteStep
我想我必须做些类似的事情
for (MKRoute *route in response.routes)
{
   for (MKRouteStep *step in route.steps)
   {
      [_mapView insertOverlay:step.polyline atIndex:0 level:MKOverlayLevelAboveRoads];
   }
}

但是我如何识别实际用户位置后面的步骤?

编辑:另一个选择是使用触发事件的计时器(删除旧的叠加层并添加新的叠加层)。你怎么看?
[NSTimer scheduledTimerWithTimeInterval:15 target:self selector:@selector(addRouteOverlay) userInfo:nil repeats:YES];

最佳答案

下面的链接包含用于在MKMapView上显示路线的示例代码,我们只需要在其中传递纬度和经度值即可。

https://github.com/kadirpekel/MapWithRoutes

关于ios - 在iOS7中的MKMapView上显示MKRoute,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18975677/

10-10 20:42