iOS 调起地图App进行导航(百度,高德,系统自带高德)URL API方式

demo:http://download.csdn.net/detail/qq_26598821/9484647

demo中有两处这样的判断

if ([[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]])
// -- 使用 canOpenURL:[NSURL URLWithString:@"baidumap://"] 判断不明白为什么为否。

原因是如下

if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"baidumap://"]])
// -- 使用 canOpenURL 判断需要在info.plist 的 LSApplicationQueriesSchemes 添加 baidumap 。

1,App 调起百度地图路线规划进行导航。百度 URL API :http://lbsyun.baidu.com/index.php?title=uri/api/ios

#pragma mark ------------------------------ 导航 - 百度  
-(void) onDaoHangForBaiDuMap  
{  
    //    百度地图如何调起APP进行导航  
//    mode  导航模式,固定为transit、driving、walking,分别表示公交、驾车和步行  
    NSString * modeBaiDu = @"driving";  
    switch (_seleIndex) {  
        case 1:  
        {  
            modeBaiDu = @"transit";  
        }  
            break;  
        case 2:  
        {  
            modeBaiDu = @"driving";  
        }  
            break;  
        case 3:  
        {  
            modeBaiDu = @"walking";  
        }  
            break;  
              
        default:  
            break;  
    }  
    NSString *url = [[NSString stringWithFormat:@"baidumap://map/direction?origin=%lf,%lf&destination=%f,%f&mode=%@&src=公司|APP",[SingleObject shareSingleObject].currentCoordinate.latitude,[SingleObject shareSingleObject].currentCoordinate.longitude,self.location.latitude,self.location.longitude,modeBaiDu] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding] ;  
      
//    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];  
      
        if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"baidumap://"]])// -- 使用 canOpenURL 判断需要在info.plist 的 LSApplicationQueriesSchemes 添加 baidumap 。  
        {  
            [[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];  
        }else{  
            [[[UIAlertView alloc]initWithTitle:@"没有安装百度地图" message:@"" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil nil] show];  
        }  
      
}  

2,App 调起高德地图路线规划进行导航。高德 URL API:http://lbs.amap.com/api/uri-api/ios-uri-explain/
LSApplicationQueriesSchemes

#pragma mark ------------------------------ 导航 - 高德  
-(void) onDaoHangForGaoDeMap  
{  
//    m 驾车:0:速度最快,1:费用最少,2:距离最短,3:不走高速,4:躲避拥堵,5:不走高速且避免收费,6:不走高速且躲避拥堵,7:躲避收费和拥堵,8:不走高速躲避收费和拥堵 公交:0:最快捷,2:最少换乘,3:最少步行,5:不乘地铁 ,7:只坐地铁 ,8:时间短  是  
//    t = 0:驾车 =1:公交 =2:步行  
      
    NSString * t = @"0";  
    switch (_seleIndex) {  
        case 1:  
        {  
            t = @"1";  
        }  
            break;  
        case 2:  
        {  
            t = @"0";  
        }  
            break;  
        case 3:  
        {  
            t = @"2";  
        }  
            break;  
              
        default:  
            break;  
    }  
    //起点  
    CLLocation * location = [[CLLocation alloc]initWithLatitude:[SingleObject shareSingleObject].currentCoordinate.latitude longitude:[SingleObject shareSingleObject].currentCoordinate.longitude];  
    location = [location locationMarsFromBaidu];  
      
    CLLocationCoordinate2D coor =location.coordinate;  
      
    //目的地的位置  
    CLLocation * location2 = [[CLLocation alloc]initWithLatitude:self.location.latitude longitude:self.location.longitude];  
    location2 = [location2 locationMarsFromBaidu];  
      
    CLLocationCoordinate2D coor2 =location2.coordinate;  
//    导航 URL:iosamap://navi?sourceApplication=%@&poiname=%@&lat=%lf&lon=%lf&dev=0&style=0",@"ABC"  
//    路径规划 URL:iosamap://path?sourceApplication=applicationName&sid=BGVIS1&slat=39.92848272&slon=116.39560823&sname=A&did=BGVIS2&dlat=39.98848272&dlon=116.47560823&dname=B&dev=0&m=0&t=0  
    // -- 不能直接让用户进入导航,应该给用户更多的选择,所以先进行路径规划  
      
    NSString *url = [[NSString stringWithFormat:@"iosamap://path?sourceApplication=applicationName&sid=BGVIS1&slat=%lf&slon=%lf&sname=我的位置&did=BGVIS2&dlat=%lf&dlon=%lf&dname=%@&dev=0&m=0&t=%@",coor.latitude,coor.longitude, coor2.latitude,coor2.longitude,self.mainTitle,t] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];  
      
    if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"iosamap://"]]) <span style="font-family: Arial, Helvetica, sans-serif;">// -- 使用 canOpenURL 判断需要在info.plist 的 LSApplicationQueriesSchemes 添加 iosamap 。</span>  
    {  
          
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];  
          
    }else{  
        [[[UIAlertView alloc]initWithTitle:@"没有安装高德地图" message:@"" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil nil] show];  
    }  
      
      
}  

1,App 调起系统自带高德地图路线规划进行导航。

#pragma mark ------------------------------ 导航 - iosMap  
-(void) onDaoHangForIOSMap  
{  
    //起点  
    CLLocation * location = [[CLLocation alloc]initWithLatitude:[SingleObject shareSingleObject].currentCoordinate.latitude longitude:[SingleObject shareSingleObject].currentCoordinate.longitude];  
    location = [location locationMarsFromBaidu];  
      
    CLLocationCoordinate2D coor =location.coordinate;  
    MKMapItem *currentLocation = [[MKMapItem alloc] initWithPlacemark:[[MKPlacemark alloc]                         initWithCoordinate:coor  addressDictionary:nil]];  
    currentLocation.name =@"我的位置";  
      
    //目的地的位置  
    CLLocation * location2 = [[CLLocation alloc]initWithLatitude:self.location.latitude longitude:self.location.longitude];  
    location2 = [location2 locationMarsFromBaidu];  
      
    CLLocationCoordinate2D coor2 =location2.coordinate;  
    //    CLLocationCoordinate2D coords = self.location;  
      
      
    MKMapItem *toLocation = [[MKMapItem alloc] initWithPlacemark:[[MKPlacemark alloc] initWithCoordinate:coor2 addressDictionary:nil]];  
      
    toLocation.name = self.mainTitle;  
      
    NSArray *items = [NSArray arrayWithObjects:currentLocation, toLocation, nil nil];  
    NSString * mode = MKLaunchOptionsDirectionsModeDriving;  
    switch (_seleIndex) {  
        case 1:  
        {  
            mode = MKLaunchOptionsDirectionsModeTransit;  
        }  
            break;  
        case 2:  
        {  
            mode = MKLaunchOptionsDirectionsModeDriving;  
        }  
            break;  
        case 3:  
        {  
            mode = MKLaunchOptionsDirectionsModeWalking;  
        }  
            break;  
              
        default:  
            break;  
    }  
    NSDictionary *options = @{ MKLaunchOptionsDirectionsModeKey:mode, MKLaunchOptionsMapTypeKey: [NSNumber                                 numberWithInteger:MKMapTypeStandard], MKLaunchOptionsShowsTrafficKey:@YES };  
    //打开苹果自身地图应用,并呈现特定的item  
    [MKMapItem openMapsWithItems:items launchOptions:options];  
}  

转载:http://blog.csdn.net/qq_26598821/article/details/51087785
http://www.jianshu.com/p/bff790afffad

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,347评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,435评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,509评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,611评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,837评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,987评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,730评论 0 267
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,194评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,525评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,664评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,334评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,944评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,764评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,997评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,389评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,554评论 2 349

推荐阅读更多精彩内容