IOS app唤醒第三方地图App进行导航

87 阅读1分钟

想要唤醒导航软件 app打包前需要在Info.plist的文件里加入白名单 否则不能使用

key叫做LSApplicationQueriesSchemes ,键值内容是对应应用程序的URL Schemes

	<key>LSApplicationQueriesSchemes</key>
	<array>
            <string>baidumap</string>
            <string>iosamap</string>
            <string>qqmap</string>
	</array>

引入 #import "AppDelegate.h"

百度地图

  // tName 目的地 latitude 纬度  longitude 经度
  NSString *urlString = [[NSString stringWithFormat:@"baidumap://map/direction?origin={{我的位置}}&destination=name:%@|latlng:%@,%@&mode=driving&coord_type=bd09ll&src=ios.jianghu.jianhao",tName,latitude, longitude] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
  [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];

腾讯地图

  // tName 目的地 latitude 纬度  longitude 经度
  NSString *urlString = [[NSString stringWithFormat:@"qqmap://map/routeplan?from=我的位置&type=drive&tocoord=%@,%@&to=%@&coord_type=1&policy=0",latitude, longitude, tName] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
  [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];

高德地图

  // tName 目的地 latitude 纬度  longitude 经度
  NSString *urlString = [[NSString stringWithFormat:@"iosamap://path?sourceApplication=%@&backScheme=%@&lat=%@&lon=%@&dname=%@&dev=0&style=2",@"导航功能",@"nav123456",latitude, longitude, tName] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
  [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];

苹果手机自带的导航

引入 #import <MapKit/MapKit.h>

  // tName 目的地 latitude 纬度  longitude 经度
  double dlong = [longitude doubleValue];
  double dLat = [latitude doubleValue];
  CLLocationCoordinate2D loc = CLLocationCoordinate2DMake(dLat, dlong);
  //用户位置
  MKMapItem *currentLoc = [MKMapItem mapItemForCurrentLocation];
  //终点位置
  MKMapItem *toLocation = [[MKMapItem alloc]initWithPlacemark:[[MKPlacemark alloc]initWithCoordinate:loc addressDictionary:**nil**] ];
  // 目的地名称
  toLocation.name = tName;
  NSArray *items = @[currentLoc,toLocation];
  NSDictionary *dic = @{
                MKLaunchOptionsDirectionsModeKey : MKLaunchOptionsDirectionsModeDriving,
                MKLaunchOptionsMapTypeKey : @(MKMapTypeStandard),
                MKLaunchOptionsShowsTrafficKey : @(**YES**)
             };

  [MKMapItem openMapsWithItems:items launchOptions:dic];