您的位置:首页 > 移动开发 > IOS开发

在ios6中调用苹果地图用于导航 (地图开发)

2013-04-11 16:58 543 查看
ios6以下我们一般用google地图来导航,但ios6中调用会有点问题,会打开web浏览器再询问之类的,不直观友好。所以在ios6中建议直接用apple map。本来调用apple map应该和调用google map类似,但使用: http://maps.apple.com/maps?saddr=%f,%f&daddr=%f,%f 会提示无法定位,不知道为什么?使用maps://saddr=%f,%f&daddr=%f,%f 会找不到当前位置,也不清楚原因?不过还是找到了解决方法,如下(包括两种地图调用方式):
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",

cutLat,cutLon,stationLat,stationLon];

NSURL *aURL = [NSURL URLWithString:urlString];

[urlString release];

[[UIApplication sharedApplication] openURL:aURL];

} else { // 直接调用ios自己带的apple map

CLLocationCoordinate2D to;

to.latitude = stationLat;

to.longitude = stationLon;

MKMapItem *currentLocation = [MKMapItem mapItemForCurrentLocation];

MKMapItem *toLocation = [[MKMapItem alloc] initWithPlacemark:[[[MKPlacemark alloc] initWithCoordinate:to addressDictionary:nil] autorelease]];

toLocation.name = @"Destination";

[MKMapItem openMapsWithItems:[NSArray arrayWithObjects:currentLocation, toLocation, nil]

launchOptions:[NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:MKLaunchOptionsDirectionsModeDriving, [NSNumber numberWithBool:YES], nil]

forKeys:[NSArray arrayWithObjects:MKLaunchOptionsDirectionsModeKey, MKLaunchOptionsShowsTrafficKey, nil]]];

[toLocation release];

}
记得加上:
#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: