如何在ios 6中的地图上绘制路线?

时间:2012-11-06 07:57:00

标签: iphone ios mapkit ios6-maps maproute

我想要显示地图&在地图上绘制路线。我的应用程序支持ios 4 plus。那么我应该如何使用地图来处理ios 6以及之前的工作。另外我想知道sholud我在我的应用程序中使用自定义mapview来显示地图和&路线或我应该使用

[[UIApplication sharedApplication] openURL:]

我从未使用过MapKits。所以请提供任何教程。如果有任何可以使用的rd方库,也请告诉我。

2 个答案:

答案 0 :(得分:5)

如果您不想要应用内地图。使用以下内容:

NSString *destinationAddress = @"Amsterdam";

Class itemClass = [MKMapItem class];
if (itemClass && [itemClass respondsToSelector:@selector(openMapsWithItems:launchOptions:)]) {

    CLGeocoder *geocoder = [[CLGeocoder alloc] init];
    [geocoder geocodeAddressString:destinationAddress completionHandler:^(NSArray *placemarks, NSError *error) {
        if([placemarks count] > 0) {

            MKPlacemark *placeMark = [[MKPlacemark alloc] initWithPlacemark:[placemarks objectAtIndex:0]];

            MKMapItem *mapItem = [[MKMapItem alloc]initWithPlacemark:placeMark];

            MKMapItem *mapItem2 = [MKMapItem mapItemForCurrentLocation];


            NSArray *mapItems = @[mapItem, mapItem2];

            NSDictionary *options = @{
        MKLaunchOptionsDirectionsModeKey:MKLaunchOptionsDirectionsModeDriving,
        MKLaunchOptionsMapTypeKey:
            [NSNumber numberWithInteger:MKMapTypeStandard],
        MKLaunchOptionsShowsTrafficKey:@YES
            };

            [MKMapItem openMapsWithItems:mapItems launchOptions:options];

        } else {
            //error nothing found
        }
    }];
    return;
} else {

    NSString *sourceAddress = [LocalizedCurrentLocation currentLocationStringForCurrentLanguage];

    NSString *urlToOpen = [NSString stringWithFormat:@"http://maps.google.com/maps?saddr=%@&daddr=%@",
                 [sourceAddress stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],
                 [destinationAddress stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlToOpen]];
}

这将打开地图应用程序并检查它是否为ios5或ios6。

对于ios5,我使用了此帖http://www.martip.net/blog/localized-current-location-string-for-iphone-apps

中的LocalizedCurrentLocation

对于ios6,我使用CLGeocoder获取地标,然后用它和当前位置打开地图。

请务必添加CoreLocation.frameworkMapKit.framework

答案 1 :(得分:1)