iOS 开发跳转百度/高德/谷歌地图整理

本文介绍了如何在iOS应用中集成百度地图、高德地图、谷歌地图及系统自带地图进行导航的功能。提供了具体的代码示例,包括如何判断地图应用是否已安装、设置起点与终点、指定导航模式等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

一丶跳转百度地图

  if([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"baidumap://"]]){
                NSLog(@"安装了百度地图");
                /*
                 
                 origin 	起点名称或经纬度,或者可同时提供名称和经纬度,此时经纬度优先级高,将作为导航依据,名称只负责展示。 	
                 1、名称:天安门
                 2、经纬度:39.98871<纬度>,116.43234<经度>。 3、名称和经纬度:name:天安门|latlng:39.98871,116.43234
                 
                 destination 	终点名称或经纬度,或者可同时提供名称和经纬度,此时经纬度优先级高,将作为导航依据,名称只负责展示。
                 mode 	导航模式,固定为transit、driving、navigation、walking,riding分别表示公交、驾车、导航、步行和骑行 	必选
                 region 	城市名或县名 	当给定region时,认为起点和终点都在同一城市,除非单独给定起点或终点的城市。
                 origin_region 	起点所在城市或县 	同上
                 destination_region 	终点所在城市或县 	同上
                 coord_type 	坐标类型,可选参数,默认为bd09ll。 	可选 	允许的值为bd09ll、bd09mc、gcj02、wgs84。bd09ll表示百度经纬度坐标,bd09mc表示百度墨卡托坐标,gcj02表示经过国测局加密的坐标,wgs84表示gps获取的坐标。
                 zoom 	展现地图的级别,默认为视觉最优级别。 	可选 	
                 src 	调用来源,规则:webapp.navi.yourCompanyName.yourAppName 	必选
                 */
                NSString *str = [NSString stringWithFormat:@"baidumap://map/direction?origin={{我的位置}}&destination=latlng:%f,%f|name=北京111&mode=driving&coord_type=bd09ll",coor.latitude, coor.longitude];
                NSString *urlString =[self changeCodeToUtf8:str];
                [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];
                
            }else{
                NSLog(@"没有安装百度地图");
            }

二丶跳转高德地图

 
            if([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"iosamap://"]]){
                NSLog(@"安装了高德地图");
                
                CLLocationCoordinate2D coor1 = coor;//原始坐标
                coor1.latitude =31.195030;
                coor1.longitude = 121.292670;
                
                /*
                 navib服务类型
                 sourceApplication第三方调用应用名称。如applicationName
                 backScheme 第三方调回使用的scheme,如applicationScheme (第三方iOS客户端需要注册该scheme)
                 poiname POI名称
                 poiid 对应sourceApplication 的POI ID
                 lat纬度
                 lon经度
                 dev是否偏移(0:lat和lon是已经加密后的,不需要国测加密;1:需要国测加密)
                 style导航方式:(0:速度最快,1:费用最少,2:距离最短,3:不走高速,4:躲避拥堵,5:不走高速且避免收费,6:不走高速且躲避拥堵,7:躲避收费和拥堵,8:不走高速躲避收费和拥堵)
                 */
                
                
                NSString *str = [NSString stringWithFormat:@"iosamap://navi?sourceApplication=%@&backScheme=%@&lat=%f&lon=%f&dev=0&style=2",@"滴滴地图",@"91ailishi",coor1.latitude, coor1.longitude];
                NSString *urlString = [self changeCodeToUtf8:str];
                [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];
                
                
            }else{
                NSLog(@"没有安装高德地图");
            }

三丶跳转谷歌

 if([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"comgooglemaps://"]]){
                NSLog(@"安装了谷歌地图");
                NSString *str = [NSString stringWithFormat:@"comgooglemaps://?x-source=%@&x-success=%@&saddr=&daddr=%f,%f&directionsmode=driving",@"滴滴地图",@"91ailishi",coor.latitude, coor.longitude];
                NSString *urlString = [self changeCodeToUtf8:str];
                [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];
            }else{
                NSLog(@"没有安装谷歌地图");
            }

四丶跳转自带地图

 MKMapItem *currentLocation = [MKMapItem mapItemForCurrentLocation];//自己位置
            MKMapItem *toLocation = [[MKMapItem alloc] initWithPlacemark:[[MKPlacemark alloc] initWithCoordinate:coor addressDictionary:nil]];//终点位置
            [MKMapItem openMapsWithItems:@[currentLocation, toLocation]
                           launchOptions:@{MKLaunchOptionsDirectionsModeKey: MKLaunchOptionsDirectionsModeDriving,
                                           MKLaunchOptionsShowsTrafficKey: [NSNumber numberWithBool:YES]}];

注意事项:

需要在plist 文件里添加 

Privacy - Location When In Use Usage Description   允许在使用app 时候获取位置

Privacy - Location Always Usage Description  允许app一直获取位置

还需要在plist 文件里边添加schenes 用于跳转导航后的返回

 

转载请注明出处 谢谢:https://my.oschina.net/iceTear/blog/876674

转载于:https://my.oschina.net/iceTear/blog/876674

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值