(八十一)利用系统自带App来实现导航
来源:互联网 发布:二维平移变换矩阵 编辑:程序博客网 时间:2024/04/29 08:59
利用系统的地图App进行导航,只需要传入起点和终点、启动参数,调用MKMapItem的类方法openMapWithItems:launchOptions:来实现定位,调用此方法后会打开系统的地图App。
下面我们来看看这个方法:
+ (BOOL)openMapsWithItems:(NSArray *)mapItems launchOptions:(NSDictionary *)launchOptions;
①第一个参数是一个MapItem数组,每个MapItem中可以包含一个地标,用两个MapItem,一个作起点,一个作终点。
可以利用MKPlacemark初始化,而MKPlacemark可以利用CLPlacemark初始化,要得到CLPlacemark,可以利用CLGeocoder对象对地名进行地理编码得到。
②第二个参数是一个字典,字典中的键和值都可以通过手册查到,值可以使用之前设置地图属性时的值,注意非对象需要包装。
下面的代码演示了通过两个TextField输入起点和终点的地名,通过点击开始定位按钮实现打开系统自带地图App进行定位。
注意block是回调方法,为了保证顺序获取起点终点的地标,要在第一个block内写第二个block代码。
#import "ViewController.h"#import <MapKit/MapKit.h>@interface ViewController ()@property (weak, nonatomic) IBOutlet UITextField *startView;@property (weak, nonatomic) IBOutlet UITextField *endView;@property (strong, nonatomic) CLGeocoder *gcoder;@property (strong, nonatomic) CLPlacemark *startMrk,*endMrk;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; _gcoder = [[CLGeocoder alloc] init];}- (IBAction)startGeo:(id)sender { NSString *startStr = _startView.text; NSString *endStr = _endView.text; [_gcoder geocodeAddressString:startStr completionHandler:^(NSArray *placemarks, NSError *error) { if (!placemarks.count) return; _startMrk = [placemarks firstObject]; [_gcoder geocodeAddressString:endStr completionHandler:^(NSArray *placemarks, NSError *error) { if (!placemarks.count) return; _endMrk = [placemarks firstObject]; [self startNavigation]; }]; }]; }- (void)startNavigation{ MKPlacemark *startMrk = [[MKPlacemark alloc] initWithPlacemark:_startMrk]; MKPlacemark *endMrk = [[MKPlacemark alloc] initWithPlacemark:_endMrk]; MKMapItem *startItem = [[MKMapItem alloc] initWithPlacemark:startMrk]; MKMapItem *endItem = [[MKMapItem alloc] initWithPlacemark:endMrk]; NSArray *items = @[startItem,endItem]; NSMutableDictionary *options = [NSMutableDictionary dictionary]; /* 启动参数的key NSString * const MKLaunchOptionsDirectionsModeKey; NSString * const MKLaunchOptionsMapTypeKey; NSString * const MKLaunchOptionsMapCenterKey; NSString * const MKLaunchOptionsMapSpanKey; NSString * const MKLaunchOptionsShowsTrafficKey; NSString * const MKLaunchOptionsCameraKey 一般键值也是常量字符串,有些是结构体需要用@包装 */ options[MKLaunchOptionsDirectionsModeKey] = MKLaunchOptionsDirectionsModeDriving; options[MKLaunchOptionsMapTypeKey] = @(MKMapTypeStandard); [MKMapItem openMapsWithItems:items launchOptions:options]; }@end
0 0
- (八十一)利用系统自带App来实现导航
- 利用系统自带App导航
- 使用系统自带ScreenLock来保护你的App
- iOS APP利用系统自带库监听网络状态
- Android系统自带App分析(短信App)
- iOS之利用系统自带API实现录音功能
- iOS调用系统自带地图导航
- 系统自带导航栏的注意事项
- 去掉webview自带导航栏 使用系统导航栏
- IFS自定义成本来源来实现系统自带成本来源的方法
- iOS如何调起地图进行导航(高德,百度,系统自带)(URI)
- 去掉系统自带导航栏下边的线条(备忘)
- LINE分享android利用系统自带分享实现LINE分享功能
- LINE分享android利用系统自带分享实现LINE分享功能
- 利用Spring aop 自带的ehcache来缓存对象
- Android夜间模式实现(系统自带)
- 实现系统自带二维码扫描功能
- iOS 系统自带地图 基本实现
- pascal笔记2
- 进制转换
- 【MySQL】(4)操作数据表中的记录
- 编码 UTF-8 的不可映射字符http://www.cnblogs.com/zz0412/p/jenkins02.html
- postgres修改使用密码登录的方法
- (八十一)利用系统自带App来实现导航
- [Leetcode]-Unique Paths II
- 最短路径算法
- 南阳oj NYOJ 贪心 找点 题目891
- c语言归并排序(poj2299)《学习记录》
- 开门人和关门人
- 将Oracle数据库表导入到SQL Server中
- 1、文件ZIp的对byte[]的压缩和解压缩
- 2015 Multi-University Training Contest 1 Annoying problem