Mee*_*shi 0 google-maps objective-c ios directions durandal
从AnyLocation到MyCurrentLocation获取ETA(估计到达时间)的正确方法是什么?
我想,当使用点击任何注释时,我必须根据该注释和用户的当前位置在页脚上设置细节.
请参阅下面的图片以便更好地理解.
我看到了什么是从任何位置到我当前位置获得ETA(估计时间到达)的正确方法,这计算了用于覆盖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..
Run Code Online (Sandbox Code Playgroud)
我也看到了这是否有任何方法可以确定使用Apple的Maps API在两个位置之间的驾驶时间?以及如何计算在两个位置之间完成路径所需的时间?.但是RightNow,我不想使用Google Maps Directions API.因为我的客户不想使用它.如果Google API是免费的,那么我绝对喜欢这样.
另外,我尝试了distanceFromLocation方法.但是,我认为,这个解决方案假设两点之间的直线距离,这几乎从来没用过.
这样做有没有其他解决方案.. ??
任何帮助,将不胜感激.
kb9*_*920 13
试试这个方法.在这里,您必须传递源和目的地纬度和经度信息.
NSString *strUrl = [NSString stringWithFormat:@"http://maps.googleapis.com/maps/api/directions/json?origin=%f,%f&destination=%f,%f&sensor=false&mode=%@", lat, longi, userLat, userLong, @"DRIVING"];
NSURL *url = [NSURL URLWithString:[strUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSData *jsonData = [NSData dataWithContentsOfURL:url];
if(jsonData != nil)
{
NSError *error = nil;
id result = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error];
NSMutableArray *arrDistance=[result objectForKey:@"routes"];
if ([arrDistance count]==0) {
NSLog(@"N.A.");
}
else{
NSMutableArray *arrLeg=[[arrDistance objectAtIndex:0]objectForKey:@"legs"];
NSMutableDictionary *dictleg=[arrLeg objectAtIndex:0];
NSLog(@"%@",[NSString stringWithFormat:@"Estimated Time %@",[[dictleg objectForKey:@"duration"] objectForKey:@"text"]]);
}
}
else{
NSLog(@"N.A.");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4608 次 |
| 最近记录: |