Что такое правильный способ получить ETA (расчетное время прибытия) из AnyLocation в MyCurrentLocation?Расчетное время между двумя местоположениями в iOS
Я хочу, чтобы при нажатии на любую аннотацию, я должен установить детали в нижнем колонтитуле в соответствии с этой аннотацией и текущим местоположением пользователя.
Пожалуйста, см. Ниже изображение для лучшего понимания.
Я видел этот What is proper way to get ETA (estimated time arrival) from any location to my current location и это calculate time taken to cover a journey in Apple Maps Но они не решить мою проблему с помощью этого. Я получаю всегда Null ответ, используя это. Я положил мой код ниже: -
double latitude = -0.075410;
double longitude = 51.512520;
MKPlacemark *placemark = [[MKPlacemark alloc] initWithCoordinate:CLLocationCoordinate2DMake(latitude, longitude) addressDictionary:nil] ;
MKMapItem *mapItemSource = [[MKMapItem alloc] initWithPlacemark:placemark];
double latitude1 = -0.132128;
double longitude1 = 51.464138;
MKPlacemark *placemark1 = [[MKPlacemark alloc] initWithCoordinate:CLLocationCoordinate2DMake(latitude1, longitude1) addressDictionary:nil] ;
MKMapItem *mapItemDestination = [[MKMapItem alloc] initWithPlacemark:placemark1];
MKDirectionsRequest *directionsRequest = [[MKDirectionsRequest alloc] init];
[directionsRequest setSource:mapItemSource];
[directionsRequest setDestination:mapItemDestination];
directionsRequest.transportType = MKDirectionsTransportTypeAutomobile;
MKDirections *directions = [[MKDirections alloc] initWithRequest:directionsRequest];
[directions calculateETAWithCompletionHandler:^(MKETAResponse *response, NSError *error) {
if (error) {
NSLog(@"Error %@", error.description);
} else {
NSLog(@"expectedTravelTime %f", response.expectedTravelTime);
}
}];
//I am not sure why I am getting Null response into calculateETAWithCompletionHandler this method..
//Also tried following......
[directions calculateDirectionsWithCompletionHandler:^(MKDirectionsResponse *response, NSError *error) {
if (error) {
NSLog(@"Error %@", error.description);
} else {
MKRoute * routeDetails = response.routes.lastObject;
//[self.mapView addOverlay:routeDetails.polyline];
NSLog(@"Street %@",[placemark.addressDictionary objectForKey:@"Street"]);
NSLog(@"distance %@",[NSString stringWithFormat:@"%0.1f Miles", routeDetails.distance/1609.344]);
NSLog(@"expectedTravelTime %@",[NSString stringWithFormat:@"%0.1f minutes",routeDetails.expectedTravelTime/60]);
}
}];
//I am not sure why I am getting Null response into calculateDirectionsWithCompletionHandler this method..
Кроме того, я видел эту Is there any way to determine the driving time between two locations using Apple's Maps API? и это How to calculate time required to complete the path in between two locations?. Но RightNow, я не хочу использовать Google Maps Directions API. Потому что мой клиент не хочет этого использовать. Если API Google бесплатно, то определенно я предпочел это.
Кроме того, я пробовал метод distanceFromLocation
. Но, я думаю, это решение предполагает прямолинейное расстояние между двумя точками, что почти никогда не бывает полезным.
Есть ли другие решения для этого .. ??
Любая помощь будет оценена по достоинству.
Вы предполагаете, что ваш пользователь включил чит-код 'noclip'? Если это так, то вычисление - это просто прямое расстояние между местоположениями, разделенное на их среднее расстояние ходьбы. В противном случае вам нужны данные карты. –
@JonathonReinhart, LOL. Можете ли вы показать мне, как включить этот обман? Это может быть очень полезно. –
Этот вопрос слишком широк. Вы опубликовали несколько ссылок и сказали: «Но они не решили мою проблему, используя это». (Так в оригинале). Как они не смогли удовлетворить ваши потребности **, конкретно **? –