iOS地图在多个点(地理位置)之间绘制路线(线)

时间:2014-02-11 08:50:51

标签: ios objective-c ios7 maps ios6.1

我必须解决问题。 我在服务器上存储了很多坐标,它们代表了一个课程,我必须在地图上绘制课程,必须支持iOS6和iOS7

所以,应该能够画出像这样的东西

任何人都可以帮我解决方案或想法,以便更好地实现这一目标吗?

2 个答案:

答案 0 :(得分:7)

你可以这样做:

 - (void)viewDidLoad {
        [super viewDidLoad];

        // center map
        CLLocationCoordinate2D startCoord = CLLocationCoordinate2DMake(47.081012, 2.398781);
        MKCoordinateRegion adjustedRegion = [self.mapView regionThatFits:MKCoordinateRegionMakeWithDistance(startCoord, 3000000, 3000000)];
        [self.mapView setRegion:adjustedRegion animated:YES];

        [self showLines];
    }

    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
    }

    - (void)showLines {
        CLLocationCoordinate2D *pointsCoordinate = (CLLocationCoordinate2D *)malloc(sizeof(CLLocationCoordinate2D) * 3);
        pointsCoordinate[0] = CLLocationCoordinate2DMake(48.856614, 2.352221);
        pointsCoordinate[1] = CLLocationCoordinate2DMake(45.764043, 4.835658);
        pointsCoordinate[2] = CLLocationCoordinate2DMake(43.296482, 5.369779);


        MKPolyline *polyline = [MKPolyline polylineWithCoordinates:pointsCoordinate count:3];
        free(pointsCoordinate);

        [self.mapView addOverlay:polyline];
    }


    - (MKPolylineRenderer *)mapView:(MKMapView *)mapView viewForOverlay:(id)overlay{

        // create a polylineView using polyline overlay object
        MKPolylineRenderer *polylineView = [[MKPolylineRenderer alloc] initWithPolyline:overlay];

// Custom polylineView
        polylineView.strokeColor =  [UIColor orangeColor];   
        polylineView.lineWidth = 2.0;
        polylineView.alpha = 0.5;

        return polylineView;
    }

答案 1 :(得分:1)

拥有此点后,您可以创建包含要连接的所有点的折线,然后将此折线添加为地图的叠加层。通过地图委托方法,您甚至可以根据您的特殊需求自定义此行的外观。

我最近在Apple的地图上创建了一个矩形,这是一个更简单的例子。您可以查看code,它可能会对您有所帮助。如果您需要更多帮助,请查看this