iOS应用内调用第三方地图进行导航

本文介绍了如何在iOS应用中配置地图应用白名单,如百度地图、高德地图等,以及使用`canOpenURL`方法判断设备上是否安装了相应地图应用。还展示了如何通过经纬度调用地图应用进行导航,包括苹果地图、腾讯地图的调用方法。

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

1、配置相对于地图app的LSApplicationQueriesSchemes白名单

在这里插入图片描述

  • 百度地图:baidumap
  • 高德地图:iosamap
  • 腾讯地图:qqmap

2、判断是否能打开第三方地图

这个方法能判断是否能打开相对应的地图
例如想调起百度地图、高德地图或者苹果地图,那么就需要先判断是否能打开(如果你在第一步配置白名单时没填错,那么不能打开就说明手机没有安装相关应用),如果不能打开就提示该用户先去下载该应用

//判断是否能打开百度地图
    NSURL * baidu_App = [NSURL URLWithString:@"baidumap://"];
    if ([[UIApplication sharedApplication] canOpenURL:baidu_App]) {
        
     }

    //判断是否能打开高德地图
    NSURL * gaode_App = [NSURL URLWithString:@"iosamap://"];
    if ([[UIApplication sharedApplication] canOpenURL:gaode_App]) {

    }

    //判断是否能打开苹果地图
    NSURL * apple_App = [NSURL URLWithString:@"http://maps.apple.com/"];
    if ([[UIApplication sharedApplication] canOpenURL:apple_App]) {
       
    }

   //判断是否能打开腾讯地图
    NSURL * tencent_App = [NSURL URLWithString:@"qqmap://"];
    if ([[UIApplication sharedApplication] canOpenURL:tencent_App]) {
        
    }

3、传经纬度调起地图导航

  • 百度地图
    origin:latlng起点纬度,经度 name起点名称
    destination:latlng终点纬度,经度 name终点名称
    mode:出行方式 driving驾车模式
NSString *map = [[NSString stringWithFormat:@"baidumap://map/direction?origin=latlng:39.69,118.15|name:我的位置&destination=latlng:39.92,116.40|name:终点&mode=driving"]stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
            
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:map] options:@{} completionHandler:nil];
  • 高德地图
    sourceApplication:第三方调用名称
    sid:起点po id
    slat:起点纬度
    slon:起点经度
    sname:起点名称
    did:终点po id
    dlat:终点纬度
    dlon:终点精度
    dname:终点名称
    dev:起终点是否偏移
    t:0:驾车 1:公交 2:步行
NSString *map =[[NSString stringWithFormat:@"iosamap://path?sourceApplication=demo&sid=&slat=39.69&slon=118.15&sname=我的位置&did=&dlat=39.92&dlon=116.40&dname=终点&dev=0&t=0"]stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:map] options:@{} completionHandler:nil];
  • 腾讯地图
    type:bus公交,drive驾车,walk步行,bike骑行
    from:起点名称
    fromcoord:起点坐标(纬度在前,经度在后,逗号分隔)
    to:终点名称
    tocoord:终点坐标
    referer:开发者key
 NSString *urlString = [[NSString stringWithFormat:@"qqmap://map/routeplan?type=drive&from=我的位置&fromcoord=39.69,118.15&to=终点&tocoord=39.92,116.40&referer="]stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
 [[UIApplication sharedApplication]openURL:[NSURL URLWithString:urlString] options:@{} completionHandler:nil];
  • 苹果自带地图
    currentLocation:起点坐标(纬度在前,经度在后)
    tolocation:终点坐标(纬度在前,经度在后)
 CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(39.92,116.40);
 MKMapItem *currentLocation = [[MKMapItem alloc] initWithPlacemark:[[MKPlacemark alloc] initWithCoordinate:CLLocationCoordinate2DMake(39.69,118.15) addressDictionary:nil]];
 MKMapItem *tolocation = [[MKMapItem alloc] initWithPlacemark:[[MKPlacemark alloc] initWithCoordinate:coordinate addressDictionary:nil]];
tolocation.name = @"终点";
[MKMapItem openMapsWithItems:@[currentLocation,tolocation]launchOptions:@{MKLaunchOptionsDirectionsModeKey:MKLaunchOptionsDirectionsModeDriving,MKLaunchOptionsShowsTrafficKey:[NSNumber numberWithBool:YES]}];
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值