在ios6中调用苹果地图用于导航

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值