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)
这对我来说很有用,我使用的路由从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)
| 归档时间: |
|
| 查看次数: |
8339 次 |
| 最近记录: |