使用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>

浙公网安备 33010602011771号