MKDirections绘制导航路线

来源:互联网 发布:js数组删除空元素 编辑:程序博客网 时间:2024/05/22 05:13


////  ViewController.m//  DrawNavLine////  Created by hq on 16/5/18.//  Copyright © 2016年 hanqing. All rights reserved.//#import "ViewController.h"#import <MapKit/MapKit.h>@interface ViewController () <MKMapViewDelegate>@property(nonatomic,strong) CLGeocoder *geo;@property (weak, nonatomic) IBOutlet MKMapView *mapView;- (IBAction)startNav;@end@implementation ViewController-(CLGeocoder *)geo{        if (_geo==nil) {        _geo=[[CLGeocoder alloc]init];    }    return _geo;}- (void)viewDidLoad {        [super viewDidLoad];        self.mapView.delegate=self;}//开始导航- (IBAction)startNav {        [self.geo geocodeAddressString:@"shanghai" completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {        MKPlacemark *mkPlaceMark=[[MKPlacemark alloc]initWithPlacemark:placemarks.firstObject];                //起点        MKMapItem *beigin=[[MKMapItem alloc]initWithPlacemark:mkPlaceMark];                [self.geo geocodeAddressString:@"北京" completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {                        MKPlacemark *mkEndPlaceMark=[[MKPlacemark alloc]initWithPlacemark:placemarks.firstObject];                        //终点            MKMapItem *end=[[MKMapItem alloc]initWithPlacemark:mkEndPlaceMark];                        //开始计算            [self beginCalculate:beigin endItem:end];                    }];    }];}-(void) beginCalculate:(MKMapItem *) beginItem endItem:(MKMapItem *) endItem{        MKDirectionsRequest *request=[[MKDirectionsRequest alloc]init];        [request setSource:beginItem];     [request setDestination:endItem];        MKDirections *directions=[[MKDirections alloc]initWithRequest:request];        //开始计算位置距离    [directions calculateDirectionsWithCompletionHandler:^(MKDirectionsResponse * _Nullable response, NSError * _Nullable error) {                if (error) {            NSLog(@"出错了");            return;        }                [response.routes enumerateObjectsUsingBlock:^(MKRoute * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {                        NSLog(@"%@",obj.name);                        /**             *  MKDirectionsResponse             routes : 路线数组MKRoute                          */            /**             *  MKRoute             name : 路线名称             distance : 距离             expectedTravelTime : 预期时间             polyline : 折线(数据模型)             steps             */            /**             *  steps <MKRouteStep *>             instructions : 行走提示             */                        MKPolyline *polyline=obj.polyline;                        [self.mapView addOverlay:polyline];                                }];    }];}/** *  获取对应的图层渲染 * *  @param mapView 地图 *  @param overlay 覆盖层数据模型 * *  @return 图层渲染 */-(MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay{        NSLog(@"hah");        //创建一个渲染对象    MKPolylineRenderer *render=[[MKPolylineRenderer alloc]initWithOverlay:overlay];        render.lineWidth=6;        //注意,必须要设置该颜色,不然会看不到线------------------------------------    render.strokeColor=[UIColor orangeColor];        return render;}- (void)didReceiveMemoryWarning {    [super didReceiveMemoryWarning];    }@end


0 0
原创粉丝点击