Ich möchte ein weißes Rechteck mit der erwarteten Reisezeit in der Mitte einer angegebenen Route auf der MKMapView anzeigen.So zeigen Sie die erwarteteTravelTime in der Mitte einer Route auf MKMapView an
0
A
Antwort
0
Hier ist der Code i die & Mittelpunkt ETA zu erhalten verwendet, um die Route, können Sie die ETACoordinate verwenden können und individuelle Annotation Ansicht erstellen, und fügen Sie die Karte
- (void) showRouteBetweenSourceCoordinate: (CLLocationCoordinate2D) sourceCoordinate destinationCoordinate: (CLLocationCoordinate2D) destinationCoordinate onMapView: (MKMapView *) onMapView onCompletion: (void (^) (NSString * ETA, CLLocationCoordinate2D ETACoordinate, NSError * error)) onCompletion {
MKDirectionsRequest *request =
[[MKDirectionsRequest alloc] init];
MKPlacemark *sourcePlacemark = [[MKPlacemark alloc] initWithCoordinate:sourceCoordinate addressDictionary:nil];
MKMapItem *sourceMapItem=[[MKMapItem alloc] initWithPlacemark:sourcePlacemark];
request.source = sourceMapItem;
MKPlacemark *destinationPlacemark = [[MKPlacemark alloc] initWithCoordinate:destinationCoordinate addressDictionary:nil];
MKMapItem *destinationMapItem=[[MKMapItem alloc] initWithPlacemark:destinationPlacemark];
request.destination = destinationMapItem;
request.requestsAlternateRoutes = NO;
[request setTransportType:MKDirectionsTransportTypeAutomobile];
MKDirections *directions =
[[MKDirections alloc] initWithRequest:request];
[directions calculateDirectionsWithCompletionHandler:
^(MKDirectionsResponse *response, NSError *error) {
if (error) {
onCompletion(nil,CLLocationCoordinate2DMake(0, 0),error);
} else {
if (response.routes.count>0) {
MKRoute *route=response.routes[0];
MKMapPoint routePoint=route.polyline.points[route.polyline.pointCount/2]; // get the center point of the polyline
[onMapView addOverlay:route.polyline level:MKOverlayLevelAboveRoads];
CLLocationCoordinate2D etaCoordinate=MKCoordinateForMapPoint(routePoint);
int etaInMins=(int)(route.expectedTravelTime/60);
onCompletion([NSString stringWithFormat:@"%d min",etaInMins],etaCoordinate,nil);
}
else
onCompletion(nil,CLLocationCoordinate2DMake(0, 0),nil);
}
}];
}
Warum sie meine Frage heruntergestuft haben, es war wirklich ein Problem und ich habe es gelöst. –