APP调用手机中的苹果、高德、百度、腾讯地图进行导航

小秀秀终于更新博客啦!!!!

过年前,换了一个项目组,过年来了就变得比之前忙了,忙着忙着,立了flag学习的我,就这个样子消失啦,说好的写博客呢?5月份的我辞职了,6月入职了现在这家公司,也算是换了一个工作内容吧!之前主要是做企业项目,现在是做电商,对我来说还是接触了很多之前没有接触的东西,还是很开心~

一晃又是十月啦,我的博客也该更新咯~~

虽然写了小笔记,但是还是被自己弄掉了,写在里面,总不会弄掉了,内容会比较潦草,还请各位看官多多包容哦~

APP里面有一个地址,想做一个导航功能,直接调起手机里面其他APP的导航,来的比较直接,以下为参考地址,最后封装成一个类。

我们APP使用的是腾讯地图,我在腾讯开发平台没有找到使用cocoapods集成的方式,只能手动集成,这一点有些不开心~

比如APP的有些功能是基于定位来推荐的,如果切换到其他地方去呢?参考如下网址进行模拟定位,真的很实用勒~使用Xcode工具模拟定位,你可以去全世界

三方地图导航文章
苹果地图导航文章

三个地图的官方文档地址:

百度地图文档地址
高德地图文档地址
腾讯地图文档地址

百度文档解释坐标系地址

我们常说的坐标系有哪些?

  1. WGS84:为一种大地坐标系,也是目前广泛使用的GPS全球卫星定位系统使用的坐标系。

  2. GCJ02:又称火星坐标系,是由中国国家测绘局制定的地理坐标系统,是由WGS84加密后得到的坐标系。

  3. BD09:为百度坐标系,在GCJ02坐标系基础上再次加密。其中bd09ll表示百度经纬度坐标,bd09mc表示百度墨卡托米制坐标。

国外使用WGS84坐标系,国内至少使用BD09坐标系

最后将代码封装成一个如下的类


+(void)jumpMapsByLat:(NSString *)lat lon:(NSString *)lon address:( NSString *)address{

 NSString *appName = [[[NSBundle mainBundle] infoDictionary]objectForKey:@"CFBundleDisplayName"];

 UIAlertController *controller = [UIAlertController alertControllerWithTitle:@"请选择地图" message:nil preferredStyle:UIAlertControllerStyleActionSheet];

 UIAlertAction *action1 = [UIAlertAction actionWithTitle:@"使用苹果自带地图导航" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {

 //起点

 MKMapItem *currentLocation = [[MKMapItem alloc] initWithPlacemark:[[MKPlacemark alloc] initWithCoordinate:[QMDataManager shareManager].location.coordinate addressDictionary:nil]];

 currentLocation.name = @"我的位置";

 CLLocationCoordinate2D coords2 = CLLocationCoordinate2DMake(lat.doubleValue, lon.doubleValue);

 //目的地的位置

 MKMapItem *toLocation = [[MKMapItem alloc] initWithPlacemark:[[MKPlacemark alloc] initWithCoordinate:coords2 addressDictionary:nil]];

 toLocation.name = address;

 NSArray *items = [NSArray arrayWithObjects:currentLocation, toLocation, nil];

 NSDictionary *options = @{ MKLaunchOptionsDirectionsModeKey:MKLaunchOptionsDirectionsModeDriving, MKLaunchOptionsMapTypeKey: [NSNumber numberWithInteger:MKMapTypeStandard], MKLaunchOptionsShowsTrafficKey:@YES };

 //打开苹果自身地图应用,并呈现特定的item

 [MKMapItem openMapsWithItems:items launchOptions:options];

 }];

 UIAlertAction *action2 = [UIAlertAction actionWithTitle:@"使用百度地图导航" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {

 if (lat.length == 0|| lon.length == 0) {

 [QMToastManager showWarning:@"暂无坐标信息"];

 return ;

 }

 NSString *urlString = [[NSString stringWithFormat:@"[baidumap://map/direction?origin={{我的位置}}&destination=%@,%@&coord_type=gcj02](baidumap://map/direction?origin=%7B%7B%E6%88%91%E7%9A%84%E4%BD%8D%E7%BD%AE%7D%7D&destination=%25@,%25@&coord_type=gcj02) &mode=walking&src=%@",lat,lon,appName] stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];

 NSURL *url = [NSURL URLWithString:urlString];

 [[UIApplication sharedApplication] openURL:url];

 }];

 UIAlertAction *action3 = [UIAlertAction actionWithTitle:@"使用高德地图导航" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {

 if (lat.length == 0|| lon.length == 0) {

 [QMToastManager showWarning:@"暂无坐标信息"];

 return ;

 }

 NSString *urlString = [[NSString stringWithFormat:@"[iosamap://navi?dev=0&sourceApplication=%@&poiname=%@&lat=%@&lon=%@](iosamap://navi?dev=0&sourceApplication=%25@&poiname=%25@&lat=%25@&lon=%25@)",appName ,address,lat,lon] stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];

 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];

 }];

 UIAlertAction *action4 = [UIAlertAction actionWithTitle:@"使用腾讯地图导航" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {

 if (lat.length == 0|| lon.length == 0) {

 [QMToastManager showWarning:@"暂无坐标信息"];

 return ;

 }

 NSString *urlString = [[NSString stringWithFormat:@"[qqmap://map/routeplan?type=walk&from=我的位置&to=%@&tocoord=%@,%@&referer=%@](qqmap://map/routeplan?type=walk&from=%E6%88%91%E7%9A%84%E4%BD%8D%E7%BD%AE&to=%25@&tocoord=%25@,%25@&referer=%25@)", address, lat, lon, kTengXunMapAppKey] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];

 }];

 UIAlertAction *action5 = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {

 [controller dismissViewControllerAnimated:YES completion:nil];

 }];

 if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"[http://maps.apple.com](http://maps.apple.com)"]]) {

 [controller addAction:action1];

 }

 if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"baidumap://"]]) {

 [controller addAction:action2];

 }

 if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"iosamap://"]]) {

 [controller addAction:action3];

 }

 if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"qqmap://"]]) {

 [controller addAction:action4];

 }

 [controller addAction:action5];

 [CurrentAppDelegate.window.rootViewController presentViewController:controller animated:YES completion:nil];

}

你可能感兴趣的:(APP调用手机中的苹果、高德、百度、腾讯地图进行导航)