- //
- // ViewController.m
- // APP自带导航
- //
- // Created by wup on 15/5/23.
- // Copyright (c) 2015年 apple. All rights reserved.
- //
- #import "ViewController.h"
- #import <MapKit/MapKit.h>
- @interface ViewController ()
- @property (nonatomic,strong) CLGeocoder *geo;
- @end
- @implementation ViewController
- - (void)viewDidLoad {
- [super viewDidLoad];
- // Do any additional setup after loading the view, typically from a nib.
- // CLLocationManager *clmgr = [[CLLocationManager alloc] init];
- // [clmgr requestAlwaysAuthorization];
- // MKMapView *mv = [[MKMapView alloc] initWithFrame:self.view.bounds];
- // [self.view addSubview:mv];
- [self.geo geocodeAddressString:@"丽江" completionHandler:^(NSArray *placemarks, NSError *error) {
- //获取到起点的MKplaceMark
- MKPlacemark *startPlace = [[MKPlacemark alloc] initWithPlacemark:[placemarks firstObject]];
- //等待获取到起点的placemarks之后在获取终点的placemarks,block回调延迟问题
- [self.geo geocodeAddressString:@"北京" completionHandler:^(NSArray *placemarks, NSError *error) {
- /**
- 获取到终点的MKplaceMark,MKPlaceMark 是ClPlaceMark的子类。
- */
- MKPlacemark *endPlace = [[MKPlacemark alloc] initWithPlacemark:[placemarks firstObject]];
- /**
- 将MKPlaceMark转换成MKMapItem,这样可以放入到item这个数组中
- */
- MKMapItem *startItem = [[MKMapItem alloc ] initWithPlacemark:startPlace];
- MKMapItem *endItem = [[MKMapItem alloc ] initWithPlacemark:endPlace];
- NSArray *item = @[startItem ,endItem];
- //建立字典存储导航的相关参数
- NSMutableDictionary *md = [NSMutableDictionary dictionary];
- md[MKLaunchOptionsDirectionsModeKey] = MKLaunchOptionsDirectionsModeDriving;
- md[MKLaunchOptionsMapTypeKey] = [NSNumber numberWithInteger:MKMapTypeHybrid];
- /**
- *调用app自带导航,需要传入一个数组和一个字典,数组中放入MKMapItem,
- 字典中放入对应键值
- MKLaunchOptionsDirectionsModeKey 开启导航模式
- MKLaunchOptionsMapTypeKey 地图模式
- MKMapTypeStandard = 0,
- MKMapTypeSatellite,
- MKMapTypeHybrid
- // 导航模式
- MKLaunchOptionsDirectionsModeDriving 开车;
- MKLaunchOptionsDirectionsModeWalking 步行;
- */
- #warning 其实所有的代码都是为了下面一句话,打开系统自带的高德地图然后执行某些动作,launchOptions里面的参数指定做哪些动作
- [MKMapItem openMapsWithItems:item launchOptions:md];
- }];
- }];
- }
- #pragma mark - 超级懒加载
- -(CLGeocoder *)geo
- {
- if (!_geo)
- {
- _geo = [[CLGeocoder alloc] init];
- }
- return _geo;
- }
- @end
来源: http://www.phpxs.com/code/1005588/