这功能早就做了,最近又在弄,所以记录下代码,免得岁数大了,健忘!
第一步:配置白名单
只有在info.plist文件里添加相应地图白名单,才可以检测到该应用,如图
第二步:检测是否安装了地图app
放在一个数组里,方便弹窗显示,我这里自定义了一下,大家随意哈,不必像我再定义model
/**
* 获取可选的导航地图模型
*
* @return 数组存放JCNaviTypeModel
*/
+ (NSArray *)selectableNaviMapModelArr {
NSMutableArray *selectableNaviArr = [NSMutableArray array];
// // app内导航
// JCNaviTypeModel *inAppNaviModel = [[JCNaviTypeModel alloc] initWithName:@"语音导航" naviType:JCNaviType_InApp];
// [selectableNaviArr addObject:inAppNaviModel];
// 遍历手机的地图
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"iosamap://"]]) {
JCNaviTypeModel *model = [[JCNaviTypeModel alloc] initWithName:@"高德地图" naviType:JCNaviType_Amap];
[selectableNaviArr addObject:model];
}
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"baidumap://"]]) {
JCNaviTypeModel *model = [[JCNaviTypeModel alloc] initWithName:@"百度地图" naviType:JCNaviType_BMK];
[selectableNaviArr addObject:model];
}
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"http://maps.apple.com/"]]) {
JCNaviTypeModel *model = [[JCNaviTypeModel alloc] initWithName:@"苹果地图" naviType:JCNaviType_Apple];
[selectableNaviArr addObject:model];
}
return selectableNaviArr;
}
第三步:跳转到相应app
NSString *externNaviURL;
NSString *naviModeString = [self naviModeStringWithNaviMode:naviMode NaviType:model.naviType];
if (model.naviType == JCNaviType_Amap) {
// 高德
externNaviURL = [[NSString stringWithFormat:@"iosamap://path?sourceApplication=%@&sid=BGVIS1&did=BGVIS2&dlat=%lf&dlon=%lf&dev=0&m=0&t=%@",@"--",endPoint.latitude,endPoint.longitude,naviModeString] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
}
else if (model.naviType == JCNaviType_BMK) {
// 百度
externNaviURL = [[NSString stringWithFormat:@"baidumap://map/direction?origin={{我的位置}}&destination=latlng:%f,%f|name=目的地&mode=%@&coord_type=gcj02",endPoint.latitude, endPoint.longitude,naviModeString] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
}
else if (model.naviType == JCNaviType_Apple) {
// 苹果
externNaviURL = [[NSString stringWithFormat:@"http://maps.apple.com/?saddr=%f,%f&daddr=%f,%f",startPoint.latitude,startPoint.longitude,endPoint.latitude, endPoint.longitude] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
}
// 跳转
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:externNaviURL]]) {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:externNaviURL]];
}
收工!!!!!!!!
转战js。。。。。。路漫漫其修远兮