iOS 开发笔记 - 导航到地图
2018-02-21 21:24 jiangys 阅读(350) 评论(0) 编辑 收藏 举报导航到地图,已经不是什么新鲜事了。网上有好多参考的资料,我总结出只需要两步
第一步:在info中加上支持的各平台
比如:iosamap高德地图、comgooglemaps谷歌地图、baidumap百度地图、qqmap腾讯地图
<key>LSApplicationQueriesSchemes</key> <array> <string>iosamap</string> <string>comgooglemaps</string> <string>baidumap</string> <string>qqmap</string> </array>
第二步:直接在使用的地方,调用下面的代码即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | - ( void )mapChooose { //系统版本高于8.0,使用UIAlertController UIAlertController * alertController = [UIAlertController alertControllerWithTitle:@ "导航到设备" message: nil preferredStyle:UIAlertControllerStyleActionSheet]; //自带地图 [alertController addAction:[UIAlertAction actionWithTitle:@ "自带地图" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { NSLog (@ "alertController -- 自带地图" ); //使用自带地图导航 MKMapItem *currentLocation =[MKMapItem mapItemForCurrentLocation]; MKMapItem *toLocation = [[MKMapItem alloc] initWithPlacemark:[[MKPlacemark alloc] initWithCoordinate: self .coordinate addressDictionary: nil ]]; [MKMapItem openMapsWithItems:@[currentLocation,toLocation] launchOptions:@{MKLaunchOptionsDirectionsModeKey:MKLaunchOptionsDirectionsModeDriving, MKLaunchOptionsShowsTrafficKey:[ NSNumber numberWithBool: YES ]}]; }]]; //判断是否安装了高德地图,如果安装了高德地图,则使用高德地图导航 if ( [[UIApplication sharedApplication] canOpenURL:[ NSURL URLWithString:@ "iosamap://" ]]) { [alertController addAction:[UIAlertAction actionWithTitle:@ "高德地图" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { NSLog (@ "alertController -- 高德地图" ); NSString *urlsting =[[ NSString stringWithFormat:@ "iosamap://navi?sourceApplication= &backScheme= &lat=%f&lon=%f&dev=0&style=2" , self .coordinate.latitude, self .coordinate.longitude]stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding ]; [[UIApplication sharedApplication]openURL:[ NSURL URLWithString:urlsting]]; }]]; } //判断是否安装了百度地图,如果安装了百度地图,则使用百度地图导航 if ([[UIApplication sharedApplication] canOpenURL:[ NSURL URLWithString:@ "baidumap://" ]]) { [alertController addAction:[UIAlertAction actionWithTitle:@ "百度地图" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { NSLog (@ "alertController -- 百度地图" ); NSString *urlsting =[[ NSString stringWithFormat:@ "baidumap://map/direction?origin={{我的位置}}&destination=latlng:%f,%f|name=目的地&mode=driving&coord_type=gcj02" , self .coordinate.latitude, self .coordinate.longitude] stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding ]; [[UIApplication sharedApplication] openURL:[ NSURL URLWithString:urlsting]]; }]]; } //判断是否安装了谷歌地图,如果安装了谷歌地图,则使用谷歌地图导航 if ([[UIApplication sharedApplication] canOpenURL:[ NSURL URLWithString:@ "comgooglemaps://" ]]) { [alertController addAction:[UIAlertAction actionWithTitle:@ "谷歌地图" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { NSString *urlString = [[ NSString stringWithFormat:@ "comgooglemaps://?x-source=%@&x-success=%@&saddr=&daddr=%f,%f&directionsmode=driving" , @ "" , //appName, @ "" , //urlScheme, self .coordinate.latitude, self .coordinate.longitude] stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding ]; [[UIApplication sharedApplication] openURL:[ NSURL URLWithString:urlString]]; }]]; } //添加取消选项 [alertController addAction:[UIAlertAction actionWithTitle:@ "取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) { [alertController dismissViewControllerAnimated: YES completion: nil ]; }]]; //显示alertController [ self presentViewController:alertController animated: YES completion: nil ]; } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端