我正在使用 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 覆盖并计算并添加新的用户位置。我想知道是否有一种方法可以只计算一次路线并以编程方式更新覆盖?
编辑: 我在 Apples 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];