一丶跳转百度地图
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