iOS:如何获得两个坐标之间的路线path

在我的项目中,我需要借助经度和纬度找出两个地点之间的path。

我正在使用下面的代码

- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. [mapvw setDelegate:self]; [self mapp]; } -(void)mapp { CLLocationCoordinate2D coordinateArray[2]; coordinateArray[0] = CLLocationCoordinate2DMake(28.6129, 77.2295); coordinateArray[1] = CLLocationCoordinate2DMake(28.6562, 77.2410); self.routeLine = [MKPolyline polylineWithCoordinates:coordinateArray count:2]; [mapvw setVisibleMapRect:[self.routeLine boundingMapRect]]; //If you want the route to be visible [mapvw addOverlay:self.routeLine]; } -(MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id<MKOverlay>)overlay { if(overlay == self.routeLine) { if(nil == self.routeLineView) { self.routeLineView = [[MKPolylineView alloc] initWithPolyline:self.routeLine]; self.routeLineView.fillColor = [UIColor redColor]; self.routeLineView.strokeColor = [UIColor redColor]; self.routeLineView.lineWidth = 3; } return self.routeLineView; } return nil; } 

有了这个代码,我得到了这样的模拟器上的输出

在这里输入图像说明

但是我想不是用直线表示路的方向的路线图。 请帮我解决它在过去2天的麻烦….

要绘制两条拉特之间的path,可以使用下面的代码。

ViewController.h

 #import <UIKit/UIKit.h> #import <MapKit/MapKit.h> @interface ViewController : UIViewController<MKMapViewDelegate> @property (strong, nonatomic) IBOutlet MKMapView *myMapView; @end 

ViewController.m

 #import "ViewController.h" @interface ViewController () @property (strong, nonatomic) MKPlacemark *destination; @property (strong,nonatomic) MKPlacemark *source; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. [self getDirections]; } -(void)getDirections { CLLocationCoordinate2D sourceCoords = CLLocationCoordinate2DMake(37.773972, -122.431297); MKCoordinateRegion region; //Set Zoom level using Span MKCoordinateSpan span; region.center = sourceCoords; span.latitudeDelta = 1; span.longitudeDelta = 1; region.span=span; [_myMapView setRegion:region animated:TRUE]; MKPlacemark *placemark = [[MKPlacemark alloc] initWithCoordinate:sourceCoords addressDictionary:nil]; MKPointAnnotation *annotation = [[MKPointAnnotation alloc] init]; annotation.coordinate = sourceCoords; annotation.title = @"San Francisco"; [self.myMapView addAnnotation:annotation]; //[self.myMapView addAnnotation:placemark]; _destination = placemark; MKMapItem *mapItem = [[MKMapItem alloc] initWithPlacemark:_destination]; CLLocationCoordinate2D destCoords = CLLocationCoordinate2DMake(37.615223, -122.389977); MKPlacemark *placemark1 = [[MKPlacemark alloc] initWithCoordinate:destCoords addressDictionary:nil]; MKPointAnnotation *annotation1 = [[MKPointAnnotation alloc] init]; annotation1.coordinate = destCoords; annotation1.title = @"San Francisco University"; [self.myMapView addAnnotation:annotation1]; //[self.myMapView addAnnotation:placemark1]; _source = placemark1; MKMapItem *mapItem1 = [[MKMapItem alloc] initWithPlacemark:_source]; MKDirectionsRequest *request = [[MKDirectionsRequest alloc] init]; request.source = mapItem1; request.destination = mapItem; request.requestsAlternateRoutes = NO; MKDirections *directions = [[MKDirections alloc] initWithRequest:request]; [directions calculateDirectionsWithCompletionHandler: ^(MKDirectionsResponse *response, NSError *error) { if (error) { NSLog(@"ERROR"); NSLog(@"%@",[error localizedDescription]); } else { [self showRoute:response]; } }]; } -(void)showRoute:(MKDirectionsResponse *)response { for (MKRoute *route in response.routes) { [_myMapView addOverlay:route.polyline level:MKOverlayLevelAboveRoads]; for (MKRouteStep *step in route.steps) { NSLog(@"%@", step.instructions); } } } #pragma mark - MKMapViewDelegate methods - (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay { MKPolylineRenderer *renderer = [[MKPolylineRenderer alloc] initWithPolyline:overlay]; renderer.strokeColor = [UIColor colorWithRed:0.0/255.0 green:171.0/255.0 blue:253.0/255.0 alpha:1.0]; renderer.lineWidth = 10.0; return renderer; } 

希望它能帮助你! 根据您的要求,在上面的代码中更改纬度。