提供多个地图选择

#import <MapKit/MapKit.h>

#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)//用来获取手机的系统,判断系统是多少

设置  

UIActionSheetDelegate 代理

@property(strong ,nonatomic)NSMutableArray *availableMaps;   定义可变数组

 

定义好 地点和终点 (导航的必要条件)

    

        CLLocationCoordinate2D startCoor;

    CLLocationCoordinate2D endCoor;

    


 startCoor =CLLocationCoordinate2DMake([YFMapMessage sharedInstance].coordinate.latitude,[YFMapMessage sharedInstance].coordinate.longitude);

    

    if (_dataArray.count==1) {

        YFMapItemModel *model = _dataArray[0];

       

        endCoor = CLLocationCoordinate2DMake(model.merchantsCoord.latitude, model.merchantsCoord.longitude);

    }


    self.availableMaps=[[NSMutableArray alloc] init];

    

//    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",startCoor.latitude,startCoor.longitude,endCoor.latitude,endCoor.longitude];

//        //        @"http://maps.apple.com/?saddr=%f,%f&daddr=%f,%f",startCoor.latitude,startCoor.longitude,endCoor.latitude,endCoor.longitude

//        urlString =  [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

//        NSURL *aURL = [NSURL URLWithString:urlString];

//        [[UIApplication sharedApplication] openURL:aURL];

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

//        

//        MKMapItem *currentLocation = [MKMapItem mapItemForCurrentLocation];

//        MKMapItem *toLocation = [[MKMapItem alloc] initWithPlacemark:[[MKPlacemark alloc] initWithCoordinate:endCoor addressDictionary:nil]];

//        toLocation.name = @"to name";

//        

//        [MKMapItem openMapsWithItems:@[currentLocation, toLocation]

//                       launchOptions:@{MKLaunchOptionsDirectionsModeKey: MKLaunchOptionsDirectionsModeDriving,MKLaunchOptionsShowsTrafficKey: [NSNumber numberWithBool:YES]}];

//        

//    }

    

    UIButton *btn=[UIButton buttonWithType:UIButtonTypeCustom];

    [btn setTitle:@"开始导航" forState:UIControlStateNormal];

    btn.titleLabel.font=FONT(19);

    [btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];

    [btn addTarget:self action:@selector(pressMore) forControlEvents:UIControlEventTouchUpInside];

    [btn setFrame:CGRectMake(kScreenWidth-100, kScreenHeight-120, 80, 40)];

    [self.view addSubview:btn];




-(void)pressMore

{

    

#if 0

    //注释掉通过百度SDK  的导航

    if (![self checkServicesInited])

        return;

    _naviType = BN_NaviTypeReal;

    [self startNavi];

#else

    [self availableMapsApps];

    UIActionSheet *action = [[UIActionSheet alloc] init];

    [action setTitle:@"请选择地图" ];

    [action addButtonWithTitle:@"使用高德地图导航"];

    for (NSDictionary *dic in self.availableMaps) {

        [action addButtonWithTitle:[NSString stringWithFormat:@"使用%@导航", dic[@"name"]]];

    }

    [action addButtonWithTitle:@"取消"];

    action.cancelButtonIndex = self.availableMaps.count + 1;

    action.delegate = self;

    [action showInView:self.view];

    

    

    

#endif


}

- (void)availableMapsApps {

    [self.availableMaps removeAllObjects];

    

//    CLLocationCoordinate2D startCoor = self.mapView.userLocation.location.coordinate;

//    CLLocationCoordinate2D endCoor = CLLocationCoordinate2DMake(startCoor.latitude+0.01, startCoor.longitude+0.01);

    NSString *toName = @"to name";

    

    if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"baidumap://map/"]]){

        NSString *urlString = [NSString stringWithFormat:@"baidumap://map/direction?origin=latlng:%f,%f|name:我的位置&destination=latlng:%f,%f|name:%@&mode=transit",

                               startCoor.latitude, startCoor.longitude, endCoor.latitude, endCoor.longitude, toName];

        

        NSDictionary *dic = @{@"name": @"百度地图",

                              @"url": urlString};

        [self.availableMaps addObject:dic];

    }

    if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"iosamap://"]]) {

        NSString *urlString = [NSString stringWithFormat:@"iosamap://navi?sourceApplication=%@&backScheme=applicationScheme&poiname=fangheng&poiid=BGVIS&lat=%f&lon=%f&dev=0&style=3",

                               @"云华时代", endCoor.latitude, endCoor.longitude];

        

        NSDictionary *dic = @{@"name": @"高德地图",

                              @"url": urlString};

        [self.availableMaps addObject:dic];

    }

    if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"comgooglemaps://"]]) {

        NSString *urlString = [NSString stringWithFormat:@"comgooglemaps://?saddr=&daddr=%f,%f¢er=%f,%f&directionsmode=transit", endCoor.latitude, endCoor.longitude, startCoor.latitude, startCoor.longitude];

        

        NSDictionary *dic = @{@"name": @"Google Maps",

                              @"url": urlString};

        [self.availableMaps addObject:dic];

    }

}


- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {

    if (buttonIndex == 0) {

//        CLLocationCoordinate2D startCoor =

//        CLLocationCoordinate2D endCoor =

        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",startCoor.latitude,startCoor.longitude,endCoor.latitude,endCoor.longitude];

            //        @"http://maps.apple.com/?saddr=%f,%f&daddr=%f,%f",startCoor.latitude,startCoor.longitude,endCoor.latitude,endCoor.longitude

            urlString =  [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

            NSURL *aURL = [NSURL URLWithString:urlString];

            [[UIApplication sharedApplication] openURL:aURL];

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

            

            MKMapItem *currentLocation = [MKMapItem mapItemForCurrentLocation];

            MKPlacemark *placemark = [[MKPlacemark alloc] initWithCoordinate:endCoor addressDictionary:nil];

            MKMapItem *toLocation = [[MKMapItem alloc] initWithPlacemark:placemark];

            toLocation.name = @"to name";

            

            [MKMapItem openMapsWithItems:@[currentLocation, toLocation]

                           launchOptions:@{MKLaunchOptionsDirectionsModeKey: MKLaunchOptionsDirectionsModeDriving,MKLaunchOptionsShowsTrafficKey: [NSNumber numberWithBool:YES]}];

            

        }

    }else if (buttonIndex < self.availableMaps.count+1) {

        NSDictionary *mapDic = self.availableMaps[buttonIndex-1];

        NSString *urlString = mapDic[@"url"];

        urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

        NSURL *url = [NSURL URLWithString:urlString];

        DLog(@"\n%@\n%@\n%@", mapDic[@"name"], mapDic[@"url"], urlString);

        [[UIApplication sharedApplication] openURL:url];

    }

}


刚开始不能跳转 ,因为要在plist里面设置 跳转到app的 标示


在更新iOS9后原来的方法不起做用了。解决办法:

info.plist添加白名

<key>LSApplicationQueriesSchemes</key>

<array>

     <string>baidumap</string>

     <string>iosamap</string>

<string>comgooglemaps<string>

</array>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值