Я использую MapKit для отображения направлений между местоположениями, и я ищу способ добавить аннотацию, которая работает аналогично аннотации маршрута в приложении Apple Maps, где аннотации показывают каждое время прохождения маршрута (как показано на рисунке на изображении ниже). Я уже правильно рисую направления, проблема заключается в том, как вычислить пару координат вдоль маршрута. То есть, где нужно отказаться от аннотации.
Я подумал о том, чтобы каким-то образом использовать MKDirection
(который содержит полные указания, шаг за шагом), но я не уверен, как бы я создал пару координат, которые находятся где-то посередине маршрута.
Я не смог найти какую-либо поддержку для этого в документации MapKit. Любые идеи?
Вот как я генерирую маршрут и показываю его.
- (void)generateRoute {
MKDirectionsRequest *request = [[MKDirectionsRequest alloc] init];
request.source = [MKMapItem mapItemForCurrentLocation];
request.destination = self.destinationMapItem;
MKDirections *directions = [[MKDirections alloc] initWithRequest:request];
[directions calculateDirectionsWithCompletionHandler:
^(MKDirectionsResponse *response, NSError *error) {
if (error) {
// Handle Error
} else {
[self showRoute:response];
}
}];
}
- (void)showRoute:(MKDirectionsResponse *)response {
[self.mapView removeOverlays:self.mapView.overlays];
for (MKRoute *route in response.routes)
{
[self.mapView addOverlay:route.polyline level:MKOverlayLevelAboveRoads];
}
[self fitRegionToRoute];
}
- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id < MKOverlay >)overlay
{
MKPolylineRenderer *renderer = [[MKPolylineRenderer alloc] initWithOverlay:overlay];
renderer.strokeColor = [UIColor blueColor];
renderer.alpha = 0.7;
renderer.lineWidth = 4.0;
return renderer;
}