iOS-82-自己APP地图内检测是否安装了其他地图(百度地图、高德地图、苹果地图),以及跳转

这功能早就做了,最近又在弄,所以记录下代码,免得岁数大了,健忘!


第一步:配置白名单

              只有在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。。。。。。路漫漫其修远兮




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IOT_Elon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值