地图划线

#import "ViewController.h"
#import <CoreLocation/CoreLocation.h>
#import <MapKit/MapKit.h>



@interface ViewController ()<MKMapViewDelegate>

@property(nonatomic ,strong)MKMapView * map;


@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    MKMapView * map = [[MKMapView alloc]initWithFrame:self.view.bounds];
  
    self.map = map;
    
    self.map.delegate = self;
    
    [self.view addSubview:map];
    
    
    
    CLGeocoder * geoCode = [[CLGeocoder alloc]init];
    
    [geoCode geocodeAddressString:@"北京" completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
        
        //通过coreLocation 的CLPlacemark 获取地面 装换为MKPlacemark
        
        MKPlacemark * place1 = [[MKPlacemark alloc]initWithPlacemark:[placemarks firstObject]];
    
        
        [geoCode geocodeAddressString:@"武汉" completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
            
            MKPlacemark * place2 = [[MKPlacemark alloc]initWithPlacemark:[placemarks firstObject]];
            
            //创建方向请求
            MKDirectionsRequest * request = [[MKDirectionsRequest alloc]init];
            
            request.source = [[MKMapItem alloc]initWithPlacemark:place1];
            
            request.destination = [[MKMapItem alloc]initWithPlacemark:place2];
            
            //创建方向对象
            MKDirections * direction = [[MKDirections alloc]initWithRequest:request];
            
            //计算方向 添加蒙版 也就是划线
             [direction calculateDirectionsWithCompletionHandler:^(MKDirectionsResponse * _Nullable response, NSError * _Nullable error) {
                 
                 for (MKRoute * route in response.routes) {
                     
                     [self.map addOverlay:route.polyline];
         
                 }
                 
                 
             }];
            
            
  
        }];
    }];

}


//当添加折线时,调用 , 返回一个折线渲染器
-(MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay
{
    
    MKPolylineRenderer * polylineRenderer = [[MKPolylineRenderer alloc]initWithPolyline:overlay];
    
    polylineRenderer.lineWidth = 2;
    
    polylineRenderer.strokeColor = [UIColor orangeColor];
    
    return polylineRenderer;
    
    
}

  

posted @ 2016-04-28 13:49  o.0...w  阅读(178)  评论(0编辑  收藏  举报