如何在iOS 6应用中获取行车路线

时间:2013-02-11 13:12:49

标签: ios6 maps mkmapview mapkit apple-maps

我在我的应用程序中使用Apple Map并且在我的视图中我想显示从用户位置到我在视图上的当前位置的行车方向,现在我只想在我的应用程序内的所有这些,即我可以在mapview上显示行车方向,我已经尝试使用苹果地图应用程序,但是在我从我的应用程序调用它后,它带我到苹果的地图应用程序,我得到了行车方向,但我不能回到我的应用程序所以我我认为我可以在我的应用程序中做一些事情,这样我就可以在我当前的视图中找到行车路线..

NSString* addr = [NSString stringWithFormat:@"http://maps.apple.com/maps?daddr=%1.6f,%1.6f&saddr=%1.6f,%1.6f",coordinate.latitude,coordinate.longitude,mapView.userLocation.coordinate.latitude,mapView.userLocation.coordinate.longitude];
        NSURL* url = [[NSURL alloc] initWithString:[addr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
        [[UIApplication sharedApplication] openURL:url];

此代码将我从我的原生应用程序带到苹果的地图应用程序,但我不能直接返回我的应用程序。有可能的解决方案,以便我可以在获得驾驶方向后回到我的APP? (webview没有为我工作。我在苹果应用程序上添加了一个后退按钮或者是什么)。请帮助....非常感谢!!

或者,任何人都可以向我建议一个更好的实施代码,以便我只能在我的应用程序中完成所有这些工作吗?

我想要一个描述导航路线和行车路线的应用内地图......

2 个答案:

答案 0 :(得分:2)

这不是实现方向的方法,

我为您制作了一个样本,其中涵盖了所有iOS版本,新版谷歌地图和iOS 6汤姆汤姆地图。

这是:

if([[[UIDevice currentDevice] systemVersion] compare:@"6.0" options:NSNumericSearch] == NSOrderedDescending){
        //6.0 or above
        NSString *Destinationlatlong =[NSString stringWithFormat:@"%@,%@",your.latitude,your.longitude];

        NSString* addr = [NSString stringWithFormat:@"comgooglemaps://?saddr=%f,%f&daddr=%@",[AppDelegate zDelegate].location.coordinate.latitude,[AppDelegate zDelegate].location.coordinate.longitude, Destinationlatlong];
        addr=[addr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

        NSURL* url = [[[NSURL alloc] initWithString:addr]autorelease];
        //    NSLog(@"url %@",url);
        if ([[UIApplication sharedApplication]canOpenURL:url]) {
            [[UIApplication sharedApplication] openURL:url];
        }else{
            CLLocationCoordinate2D coords =
            CLLocationCoordinate2DMake([your.latitude doubleValue],[your.longitude doubleValue]);
            MKPlacemark *placeMark = [[MKPlacemark alloc]
                                      initWithCoordinate:coords addressDictionary:nil];


            MKMapItem *destination = [[MKMapItem alloc]initWithPlacemark:placeMark];

            [destination openInMapsWithLaunchOptions:nil];
        }
    }else{
        NSString *Destinationlatlong =[NSString stringWithFormat:@"%@,%@",your.latitude,your.longitude];
        NSString* addr = [NSString stringWithFormat:@"http://maps.google.com/maps?saddr=Current+Location&daddr=%@",Destinationlatlong];
        addr=[addr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

        NSURL* url = [[[NSURL alloc] initWithString:addr]autorelease];
        //    NSLog(@"url %@",url);
        if ([[UIApplication sharedApplication]canOpenURL:url]) {
            [[UIApplication sharedApplication] openURL:url];
        }else{
            UIAlertView *alert=[[[UIAlertView alloc] initWithTitle:@"Warning!" message:@"Device does not support this functionality" delegate:nil cancelButtonTitle:@"Okay" otherButtonTitles: nil]autorelease] ;
            [alert show];
        }
    }

答案 1 :(得分:1)

这应该让你开始。简而言之,从json中的google api获取驾驶指令,解析它,然后使用MKPolyline将其显示在您自己的地图上 http://iosguy.com/2012/05/22/tracing-routes-with-mapkit/