iOS调用第三方导航和线路规划
线路规划:
https://blog.csdn.net/qq_19979539/article/details/51938995
百度地图:baidumap:
高德地图:iosamap:
腾讯地图:qqmap:
谷歌地图:comgooglemapsurl:
系统地图就不用这么麻烦了,直接这样就好:
CLLocationCoordinate2D endCoor =坐标;
MKMapItem *currentLocation = [MKMapItem mapItemForCurrentLocation];
MKMapItem *toLocation = [[MKMapItem alloc] initWithPlacemark:[[MKPlacemark alloc] initWithCoordinate:endCoor addressDictionary:nil]];
toLocation.name = [NSString stringWithFormat:@"到 %@", 目的地];
[MKMapItem openMapsWithItems:@[currentLocation, toLocation]
launchOptions:@{MKLaunchOptionsDirectionsModeKey: MKLaunchOptionsDirectionsModeDriving,MKLaunchOptionsShowsTrafficKey: [NSNumber numberWithBool:YES]}];
其他地图的打开如下:
百度地图:
NSString *stringURL = [NSString stringWithFormat:@"baidumap://map/direction?origin=%f,%f&destination=%f,%f&mode=driving",user.userLocCoord2D.latitude, user.userLocCoord2D.longitude,
目的地.latitude, 目的地.longitude];
[[UIApplication sharedApplication] openURL:url]
高德地图:
NSString *urlString = [[NSString stringWithFormat:@"iosamap://path?sourceApplication=%@&backScheme=%@&sname=%@&dname=%@&dev=0&m=0&t=0&sid=BGVIS1&did=BGVIS2&dlat=%lf&dlon=%lf",@"APP名称", @"iosamap", @"我的位置",目的地,endCoor.latitude, endCoor.longitude] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:urlString]];
腾讯地图:
NSString *urlString =[[NSString stringWithFormat:@"qqmap://map/routeplan?type=drive&from=我的位置&to=%@&tocoord=%lf,%lf&policy=1&referer=tengxun",目的地,endCoor.latitude,endCoor.longitude] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];
谷歌地图:
NSString *urlString = [[NSString stringWithFormat:@"comgooglemapsurl://www.google.com/maps/preview/@%lf,%lf,6z",endCoor.latitude, endCoor.longitude] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:urlString]];
---------------------
作者:尘清_iOS
来源:CSDN
原文:https://blog.csdn.net/qq_19979539/article/details/51938995
目的地导航:
https://www.cnblogs.com/jyking/p/4939637.html
苹果:
1.
NSString *urlString = [[NSString stringWithFormat:@
"http://maps.apple.com/?daddr=%f,%f&saddr=slat,slng"
,coordinate.latitude, coordinate.longitude] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]
2.
MKMapItem *currentLocation = [MKMapItem mapItemForCurrentLocation];
MKMapItem *toLocation = [[MKMapItem alloc] initWithPlacemark:[[MKPlacemark alloc] initWithCoordinate:coordinate addressDictionary:nil]];
[MKMapItem openMapsWithItems:@[currentLocation, toLocation]
launchOptions:@{MKLaunchOptionsDirectionsModeKey: MKLaunchOptionsDirectionsModeDriving,
MKLaunchOptionsShowsTrafficKey: [NSNumber numberWithBool:YES]}];
NSString *urlString = [[NSString stringWithFormat:@
"baidumap://map/direction?origin={{我的位置}}&destination=latlng:%f,%f|name=目的地&mode=driving&coord_type=gcj02"
,coordinate.latitude, coordinate.longitude] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
要注意几点:
1. origin={{我的位置}}
这个是不能被修改的 不然无法把出发位置设置为当前位置
2. destination=latlng:%f,%f|name=目的地
name=XXXX name这个字段不能省略 否则导航会失败 而后面的文字则可以随便填
3. coord_type=gcj02
coord_type允许的值为bd09ll、gcj02、wgs84 如果你APP的地图SDK用的是百度地图SDK 请填bd09ll 否则 就填gcj02 wgs84
NSString *urlString = [[NSString stringWithFormat:@
"iosamap://navi?sourceApplication=%@&backScheme=%@&lat=%f&lon=%f&dev=0&style=2"
,appName,urlScheme,coordinate.latitude, coordinate.longitude] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
要注意几点:
1. sourceApplication=%@&backScheme=%@
sourceApplication代表你自己APP的名称 会在之后跳回的时候显示出来 所以必须填写 backScheme是你APP的URL Scheme 不填是跳不回来的哟
2. dev=0
这里填0就行了,跟上面的gcj02一个意思 1代表wgs84 也用不上
谷歌:
NSString *urlString = [[NSString stringWithFormat:@
"comgooglemaps://?x-source=%@&x-success=%@&saddr=&daddr=%f,%f&directionsmode=driving"
,appName,urlScheme,coordinate.latitude, coordinate.longitude] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
最新文章
- Could not link against boost_system 解决办法
- 微信去除 防欺诈盗号请勿支付或输入qq密码 以及 防欺诈或盗号请不要输入qq密码 的方法
- 经典排序算法(Java版)
- Java web 项目搭建
- Mysql中存储方式的区别
- (@WhiteTaken)设计模式学习——简单工厂
- spark on yarn 运行问题记录
- net core体系-web应用程序-4asp.net core2.0 项目实战(1)-12基于cookie登录授权认证并实现前台会员、后台管理员同时登录
- 18-09-06天津 关于Excel的一些操作
- Java线程的5种状态及切换(透彻讲解)-京东面试
- 1. Go安装
- MySQL深入理解
- openstack网络DVR
- hdu 4612 边双联通 ***
- 【RF库测试】Encode String To Bytes&;Decode Bytes To String&; should be string&;should be unicode string &;should not be string
- elasticsearch安装与使用(5)-- search guard安装与配置
- MySQL 温故知心(二) 事务的隔离级别
- border-1px;避免移动端下边框部分2px
- Ubuntu部署jmeter
- 100个大型机器学习数据集汇总(CV/NLP/音频方向)
热门文章
- phpmyadmin登录提示mysqli_real_connect(): (HY000/2002): No such file or directory和mysql8登录失败的问题
- LeetCode OJ 238. Product of Array Except Self 解题报告
- rocketmq 源码
- vue手写的轮播图片,解决已经修改data中的值,页面标签已绑定,但页面没效果
- 深入研究 Runloop 与线程保活
- 一篇文全面了解DevOps:从概念、关键问题、兴起到实现需求
- Mac下不显示设备
- TCP拥塞控制-慢启动、拥塞避免、快重传、快启动
- GitHub私有代码库将免费开放
- Java知多少(55)线程