IOS 8 使用系统自带导航

//
//  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


技术分享







郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。