//
// 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
转载于:https://my.oschina.net/wupengnash/blog/418973