原始地址: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];
}