导航
来源:互联网 发布:catia v5软件下载 编辑:程序博客网 时间:2024/04/28 08:04
实现导航有3种方法
- 将需要导航的位置丢给系统自带的地图APP进行导航
- 发送网络请求到公司服务器获取导航数据然后自己手动绘制导航(一般公司是不会这样做的)
- 利用三方SDK实现导航(百度)
首先介绍系统自带的app导航,这里用到的类是:MKMapItem
主要方法是:
+ (void)opnenMapsWithItems:(NSArray *) launchOptions:(NSDictionary *);
具体实现
[self.geocoder geocodeAddressString:startStr completionHandler:^(NSArray *placemarks, NSError *error) { //获取出发点 if(!placemarks.count) return; CLPlacemark *startclpm = [placemarks firstObject]; [self.geocoder geocodeAddressString:endStr completionHandler:^(NSArray *placemarks, NSError *error) { // 获取目的地 if(!placemarks.count) return; CLPlacemark *endclpm = [placemarks firstObject]; //设置item参数 MKPlacemark *startpm = [[MKPlacemark alloc] initWithPlacemark:startclpm]; MKMapItem *startItem = [[MKMapItem alloc] initWithPlacemark:startpm]; MKPlacemark *endpm = [[MKPlacemark alloc] initWithPlacemark:endclpm]; MKMapItem *endItem = [[MKMapItem alloc] initWithPlacemark:endpm]; NSArray *items = @[startItem, endItem]; //设置launchOptions参数 NSMutableDictionary *md = [NSMutableDictionary dictionary]; md[MKLaunchOptionsDirectionsModeKey] = MKLaunchOptionsDirectionsModeDriving;//导航 md[MKLaunchOptionsMapTypeKey] = @(MKMapTypeHybrid);//混合 [MKMapItem openMapsWithItems:items launchOptions:md]; } ]}]
获取导航路线信息
需要用到的对象是:MKDirections
具体实现:
MKDirectionRequest *request = [MKDirectionsRequest alloc] init];request.source = startItem; //这里的item都是上面所得到的MKMapItem对象request.destination = endItem;// 创建MKDirections对象MKdirections *directions = [MKDirections alloc] initWithRequest:request];[directions calculateDirectionsWithCompletionHandler:^(MKDirectionsResponse *response, NSError *error) { NSArray *routes = response.routes; for (MKRoute *route in routes) { //每条路线 NSArray *steps = route.steps; for (MKRouteStep *step in steps) { //每个步骤 } }}]
绘制导航路线(本质:往地图上添加覆盖)
用到的方法是 addoverlay:
然后就会调用代理方法
话不多说,直接上代码
//在之前代码的基础上[self.mapView addOverlay:route.polyline];//然后再外面监听代理方法- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay{ MKPolylineRenderer *line = [[MKPolylineRenderer alloc] initWithPolyline:overlay]; line.lineWidth = 5; // 路线的宽度 line.strokeColor = [UIColor redColor];// 路线的颜色 // 返回路线 return line;}
集成百度地图
讲真,百度地图,直接看百度的官方介绍就可以了,答题方法也差不多,不过百度最好用的还是poi检索,可以搜索周边的吃住行等等。在这里我做简单的介绍吧
- 首先你他要称为百度的开发者
- 然后就可以创建应用,记住,有用的是key和你填写的安全码(具体怎么操作,百度会傻瓜式的教你)
- 然后就是百度的SDK下载,以及配置其环境。百度有官方文档http://lbsyun.baidu.com/index.php?title=iossdk/guide/buildproject 详情看官方,我就不翻译,免得出错
- 还是那句话,具体怎么应用,百度有demo以及文档
0 0
- 导航
- 导航
- 导航
- 导航
- 导航
- 导航
- 导航
- 导航
- 导航
- 导航
- 导航
- 导航
- 导航
- 导航
- 横向导航/顶部导航
- 垂直导航/侧面导航
- 页码导航
- 导航菜单
- HTTP的get,post,HttpClient三种方式向服务器端提交文本数据
- com.umeng.socialize.handler.QZoneSsoHandler$4
- Bazel教程
- 开源ImageFilter库v0.4:新增26种图片效果
- Android 插件化原理解析(5):Activity 生命周期管理(下)
- 导航
- PHP访问SQLServer 完整示例
- nohup的用法
- pyqt4之QMessageBox用法
- Android 插件化原理解析(6、上)
- Linux操作系统:文件和目录命令
- 解决Mysql在使用innobackupex无法备份数据库一次问题
- JAVA学习--银行系统
- OrCAD原理图中多部分元件自动编号的方法