1
내 앱에서 expectedTravelTime을 계산하려고하는데 GoogleMaps와 비교할 때 다른 값을 얻습니다. 여기 MKRoute에서 expectedTravelTime이 잘못되었습니다.
내 코드입니다 :NSArray *startLocationArray = [startLocation componentsSeparatedByString:@","];
NSArray *destinationArray = [destination componentsSeparatedByString:@","];
MKPlacemark *placemarkStartLocation = [[MKPlacemark alloc] initWithCoordinate:CLLocationCoordinate2DMake([startLocationArray[0] intValue],
[startLocationArray[1] intValue]) addressDictionary:nil];
MKMapItem *mapItemStartLocation = [[MKMapItem alloc] initWithPlacemark:placemarkStartLocation];
MKPlacemark *placemarkDestination = [[MKPlacemark alloc] initWithCoordinate:CLLocationCoordinate2DMake([destinationArray[0] intValue],
[destinationArray[1] intValue]) addressDictionary:nil];
MKMapItem *mapItemDestination = [[MKMapItem alloc] initWithPlacemark:placemarkDestination];
MKDirectionsRequest *request = [[MKDirectionsRequest alloc] init];
[request setSource:mapItemStartLocation];
[request setDestination:mapItemDestination];
[request setTransportType:MKDirectionsTransportTypeAutomobile];
[request setRequestsAlternateRoutes:NO];
MKDirections *directions = [[MKDirections alloc] initWithRequest:request];
__block MKRoute *route;
[directions calculateDirectionsWithCompletionHandler:
^(MKDirectionsResponse *response, NSError *error)
{
if (! error && [response routes] > 0)
{
route = [[response routes] objectAtIndex:0];
double exceedingTime = fmod(route.expectedTravelTime, 60);
eta = (route.expectedTravelTime - exceedingTime)/60;
int iEta = (int)eta;
lblEta.text = [NSString stringWithFormat:@"%im", iEta, nil];
}
}];
startLocation와 목적지는 방법 밖에 전달, 그 값은 다음과 같습니다
startLocation = 37.776402,-122.408470
destination = 37.831287,-122.485519
내가 얻을 :
route.distance = 1513 (meters)
route.expectedTravelTime = 491 (should be seconds, so finally 8 minutes)
하지만 Google지도에
예상 소요 시간 30 분 이상, 그리고 9 마일 이상 거리나는 어디로 가고 있습니까?