使用openUrl打开第三方导航

//判断手机可用地图选项

-(void)getAvailableMapApps

{

    [self.availableMaps removeAllObjects];

 

    CLLocationCoordinate2D coordinateStart = CLLocationCoordinate2DMake(31.23, 121.48);

    NSLog(@"%f,%f",coordinateStart.latitude,coordinateStart.longitude);

    CLLocationCoordinate2D coordinateEnd = CLLocationCoordinate2DMake(31.18, 121.43);

    NSLog(@"%f,%f",coordinateEnd.latitude,coordinateEnd.longitude);

    NSString * toName = @"目的地";

    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",coordinateStart.latitude,coordinateStart.longitude,coordinateEnd.latitude,coordinateEnd.longitude,toName];

        NSLog(@"%@",urlString);

        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",@"练习",coordinateEnd.latitude,coordinateEnd.longitude];

        NSLog(@"%@",urlString);

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

                               @"url":urlString};

        [self.availableMaps addObject:dic];

    }

    

}

// 引用

[self getAvailableMapApps];

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

    [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];

//    提示框代理方法:

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

{

    CLLocationCoordinate2D coordinateEnd = CLLocationCoordinate2DMake(31.18, 121.43);

    if (buttonIndex == 0)

    {

        MKMapItem * currentLocation = [MKMapItem mapItemForCurrentLocation];

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

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

        toLocation.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 * string = mapDic[@"url"];

        string = [string stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet characterSetWithCharactersInString:string]];

        string = [string stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

        NSURL * url = [NSURL URLWithString:string];

//        NSLog(@"\n%@\n%@\n%@",mapDic[@"name"],mapDic[@"url"],string);

        [[UIApplication sharedApplication] openURL:url];

    }

}

如果需要正常运行,请执行以下步骤:

1.倒入头文件 

#import <CoreLocation/CoreLocation.h>

#import <MapKit/MapKit.h>

#import <MapKit/MKPlacemark.h>

2.在info.plist中将百度地图和高德地图加入白名单

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<string>baidumap</string>
<string>iosamap</string>
</array>
</plist>

  

posted @ 2016-04-21 15:37  前路弯弯  阅读(432)  评论(0)    收藏  举报