什么是从任何位置到我当前位置获得ETA(估计到达时间)的正确方法

Mat*_*old 9 google-maps objective-c map mapkit ios

想知道什么是从任何位置到我当前位置获得ETA(估计到达时间)的正确方法,考虑到以下情况:

一个.恩. - 我从其他设备得到了它的位置(经度/纬度),并希望当对方会接我......在这种情况下,我可以使用什么网络服务来获取用户这个信息?mapkit是否提供了这种选择?

湾 在情况下,将在服务器端进行,我会只是给我的用户的位置,什么是我的服务器端程序员可以用它来获得ETA信息,以便把它送回来给我的用户的工具?

谢谢大家.

我看到了这个问题:有没有办法使用Apple的Maps API确定两个地点之间的驾驶时间? - 问题,正如我在其他地方发现的那样(据我的理解)是谷歌api需要使用现在没有安装在每个iOS用户上的谷歌地图应用程序.

M t*_*e K 18

我知道这篇文章有点旧,但万一有人正在寻找答案,因为iOS 7 Apple在MapKit中提供了一个API来计算所有这些信息.

以下是如何使用此API的摘要

    MKDirectionsRequest *request = [[MKDirectionsRequest alloc] init];
    [request setSource:[MKMapItem mapItemForCurrentLocation]];
    [request setDestination:destination];
    [request setTransportType:MKDirectionsTransportTypeAutomobile];
    [request setRequestsAlternateRoutes:NO];
    MKDirections *directions = [[MKDirections alloc] initWithRequest:request];
    [directions calculateDirectionsWithCompletionHandler:^(MKDirectionsResponse *response, NSError *error) {
        if ( ! error && [response routes] > 0) {
            MKRoute *route = [[response routes] objectAtIndex:0];
            //route.distance  = The distance
            //route.expectedTravelTime = The ETA
        }
    }];
Run Code Online (Sandbox Code Playgroud)


Hbl*_*egg 5

这对我来说很有用,我使用的路由从M到K的答案我正在修改本教程地图指南教程中的代码

(IBAction)routeButtonPressed:(UIBarButtonItem *)sender {
    MKDirectionsRequest *directionsRequest = [[MKDirectionsRequest alloc] init];
    MKPlacemark *placemark = [[MKPlacemark alloc] initWithPlacemark:thePlacemark];
    [directionsRequest setSource:[MKMapItem mapItemForCurrentLocation]];
    [directionsRequest setDestination:[[MKMapItem alloc] initWithPlacemark:placemark]];
    directionsRequest.transportType = MKDirectionsTransportTypeAutomobile;
    MKDirections *directions = [[MKDirections alloc] initWithRequest:directionsRequest];
    [directions calculateDirectionsWithCompletionHandler:^(MKDirectionsResponse *response, NSError *error) {
        if (error) {
            NSLog(@"Error %@", error.description);
        } else {
            routeDetails = response.routes.lastObject;
            [self.mapView addOverlay:routeDetails.polyline];
            self.destinationLabel.text = [placemark.addressDictionary objectForKey:@"Street"];
            self.distanceLabel.text = [NSString stringWithFormat:@"%0.1f Miles", routeDetails.distance/1609.344];

            self.etaLabel.text = [NSString stringWithFormat:@"%0.1f minutes",routeDetails.expectedTravelTime/60];

            //self.transportLabel.text = [NSString stringWithFormat:@"%u" ,routeDetails.transportType];
            self.allSteps = @"";
            for (int i = 0; i < routeDetails.steps.count; i++) {
                MKRouteStep *step = [routeDetails.steps objectAtIndex:i];
                NSString *newStep = step.instructions;
                self.allSteps = [self.allSteps stringByAppendingString:newStep];
                self.allSteps = [self.allSteps stringByAppendingString:@"\n\n"];
                self.steps.text = self.allSteps;


            }
        }

    }];
}
Run Code Online (Sandbox Code Playgroud)