#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; }