博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS6地图“查看路线”、导航功能的实现
阅读量:5959 次
发布时间:2019-06-19

本文共 2238 字,大约阅读时间需要 7 分钟。

在iOS6之前,苹果自带的是Google地图,所以“查看路线”的功能可以通过访问google的url来实现:

url 格式为:“http://maps.google.com/maps?saddr=%f,%f&daddr=%f,%f”

 

不过iOS6之后,苹果使用了自家地图,以上的方式就只能跳到google 地图网页版,不过体验不太好,

还是希望调用本地应用,于是找到了官方文档:

 

照文档描述,iOS6中的调用应该为:

访问url:“http://maps.apple.com/maps?saddr=%f,%f&daddr=%f,%f”

不过会提示服务器不可用,估计后面苹果又做更改了。

 

后来,找到网友的一篇文章,

在iOS6中调用地图API的方式可以实现,贴代码如下:

View Code
if ([[[UIDevice currentDevice] systemVersion] floatValue] < 6.0) { // ios6以下,调用google map        NSString *theString = [NSString stringWithFormat:@"http://maps.apple.com/?saddr=%f,%f&daddr=%f,%f",settings.update_latitude,settings.update_longitude, __latitude, __longitude];        theString =  [theString stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];                NSURL *url = [[[NSURL alloc] initWithString:theString] autorelease];        [[UIApplication sharedApplication] openURL:url];    } else { // 直接调用ios自己带的apple map        CLLocationCoordinate2D to;                        to.latitude = __latitude;        to.longitude = __longitude;        MKMapItem *currentLocation = [MKMapItem mapItemForCurrentLocation];        MKMapItem *toLocation = [[MKMapItem alloc] initWithPlacemark:[[[MKPlacemark alloc] initWithCoordinate:to addressDictionary:nil] autorelease]];                toLocation.name = @"Destination";        [MKMapItem openMapsWithItems:[NSArray arrayWithObjects:currentLocation, toLocation, nil]                       launchOptions:[NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:MKLaunchOptionsDirectionsModeDriving, [NSNumber numberWithBool:YES], nil]                                                                 forKeys:[NSArray arrayWithObjects:MKLaunchOptionsDirectionsModeKey, MKLaunchOptionsShowsTrafficKey, nil]]];        [toLocation release];    }

 

------------------

如果不想使用苹果自带的地图的话,也可以使用第三方的地图,如百度;

百度地图的URI API:

使用如下:“

baidumap://map/direction?origin=latlng:34.264642646862,108.95108518068|name:我家&destination=大雁塔&mode=driving&region=西安  //调起百度PC或Web地图,展示“西安市”从(34.264642646862,108.95108518068 )“我家”到“大雁塔”的驾车路线。

 

其他的如高德、搜狗、图吧等没有找到对应的URI API。

注意调用前,需要判断是否已安装百度地图:

使用 if ([[UIApplicationsharedApplication] canOpenURL:[NSURLURLWithString:@"baidumap://map/"]]){}

转载于:https://www.cnblogs.com/zhulin/archive/2012/11/09/2761926.html

你可能感兴趣的文章
(LeetCode-数组-2) 只出现一次的数字
查看>>
基于Nginx的中间件架构(三):Rewrite规则、secure_link和Geoip读取地域信息模块、HTTPS服务...
查看>>
CSS引入外部字体方法,附可用demo
查看>>
窥探React - 源码分析
查看>>
HTML之基础介绍
查看>>
puppeteer_node爬虫分布式进阶
查看>>
Phoenix报错(2-2)AccessDeniedException: Insufficient permissions
查看>>
leetcode 605 Can Place Flowers
查看>>
JS 单例模式
查看>>
解决oninput事件在中文输入法下会取得拼音的值的问题
查看>>
Hooking & Executing Code with dlopen & dlsym -- C functions
查看>>
GitLab 安装笔记
查看>>
JavaScript 异步队列及Co实现
查看>>
原生javascript实现无缝滚动
查看>>
EventBus使用方法详解
查看>>
使用 Phoenix-4.11.0连接 Hbase 集群 ,并使用 JDBC 查询测试
查看>>
判断字符串是否含有中英文和数字
查看>>
javascript模拟原生Promise语法
查看>>
Linux机器相互登录
查看>>
GitChat · 人工智能 | 用语音和自然语言控制智能家居——实例分享
查看>>