原始地址:iOS 6蘋果地圖應用(MapKit)-開啟外部應用
在iOS 6中,蘋果把google地圖換成了自己的地圖,看上去不錯。
:
iOS 6以下(google map web)
iOS 6
實現代碼
標頭檔匯入和判斷版本的預定義聲明
#import <MapKit/MapKit.h> #define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
具體實現
CLLocationCoordinate2D coords1 = CLLocationCoordinate2DMake(30.691793,104.088264); CLLocationCoordinate2D coords2 = CLLocationCoordinate2DMake(30.691293,104.088264); if (SYSTEM_VERSION_LESS_THAN(@"6.0"))// ios6以下,調用google map { NSString *urlString = [[NSString alloc] initWithFormat:@"http://maps.google.com/maps?saddr=%f,%f&daddr=%f,%f&dirfl=d", coords1.latitude,coords1.longitude,coords2.latitude,coords2.longitude]; NSURL *aURL = [NSURL URLWithString:urlString]; //開啟網頁google地圖 [[UIApplication sharedApplication] openURL:aURL]; }else// 直接調用ios自己帶的apple map { //當前的位置 //MKMapItem *currentLocation = [MKMapItem mapItemForCurrentLocation]; //起點 MKMapItem *currentLocation = [[MKMapItem alloc] initWithPlacemark:[[MKPlacemark alloc] initWithCoordinate:coords1 addressDictionary:nil]]; //目的地的位置 MKMapItem *toLocation = [[MKMapItem alloc] initWithPlacemark:[[MKPlacemark alloc] initWithCoordinate:coords2 addressDictionary:nil]]; toLocation.name = @"目的地"; NSArray *items = [NSArray arrayWithObjects:currentLocation, toLocation, nil]; /* //keys MKLaunchOptionsMapCenterKey:地圖中心的座標(NSValue) MKLaunchOptionsMapSpanKey:地圖顯示的範圍(NSValue) MKLaunchOptionsShowsTrafficKey:是否顯示交通訊息(boolean NSNumber) //MKLaunchOptionsDirectionsModeKey: 導航類型(NSString) { MKLaunchOptionsDirectionsModeDriving:駕車 MKLaunchOptionsDirectionsModeWalking:步行 } //MKLaunchOptionsMapTypeKey:地圖類型(NSNumber) enum { MKMapTypeStandard = 0, MKMapTypeSatellite, MKMapTypeHybrid }; */ NSDictionary *options = @{ MKLaunchOptionsDirectionsModeKey:MKLaunchOptionsDirectionsModeDriving, MKLaunchOptionsMapTypeKey: [NSNumber numberWithInteger:MKMapTypeStandard], MKLaunchOptionsShowsTrafficKey:@YES }; //開啟蘋果自身地圖應用,並呈現特定的item [MKMapItem openMapsWithItems:items launchOptions:options]; }