info.plist 添加
<key>LSApplicationQueriesSchemes</key>
<array>
<string>baidumap</string>
<string>iosamap</string>
<string>qqmap</string>
</array>
传一个名称,调用方法
-(void)openMap:(NSString *)address
{
NSMutableArray *actionTitleArr = [[NSMutableArray alloc]init];
NSMutableArray *urlStringArr = [[NSMutableArray alloc]init];
NSURL *baiduUrl = [NSURL URLWithString:@"baidumap://"];
NSURL *gaodeUrl = [NSURL URLWithString:@"iosamap://"];
NSURL *qqUrl = [NSURL URLWithString:@"qqmap://"];
NSURL *systemUrl = [NSURL URLWithString:@"http://maps.apple.com"];
if ([[UIApplication sharedApplication] canOpenURL:gaodeUrl]) {
[actionTitleArr addObject:@"高德地图"];
NSString *urlString = [[NSString stringWithFormat:@"iosamap://poi?sourceApplication=Electronicsignature&name=%@",address] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[urlStringArr addObject:urlString];
}
if ([[UIApplication sharedApplication] canOpenURL:baiduUrl]) {
[actionTitleArr addObject:@"百度地图"];
NSString *urlString = [[NSString stringWithFormat:@"baidumap://map/geocoder?address=%@&src=webapp.geo.fang.Electronicsignature",address] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[urlStringArr addObject:urlString];
}
if ([[UIApplication sharedApplication] canOpenURL:qqUrl]) {
[actionTitleArr addObject:@"腾讯地图"];
NSString *urlString = [[NSString stringWithFormat:@"qqmap://search?keyword=%@",address] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[urlStringArr addObject:urlString];
}
if ([[UIApplication sharedApplication] canOpenURL:systemUrl]) {
[actionTitleArr addObject:@"苹果地图"];
NSString *urlString = [[NSString stringWithFormat:@"http://maps.apple.com/?address=%@",address] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[urlStringArr addObject:urlString];
}
if (actionTitleArr.count>0) {
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet];
for (int i = 0; i < actionTitleArr.count; i++) {
NSString *title = actionTitleArr[i];
NSString *urlStr = urlStringArr[i];
NSURL *url = [NSURL URLWithString:urlStr];
UIAlertAction * mapAction = [UIAlertAction actionWithTitle:title style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
if ([[UIDevice currentDevice].systemVersion integerValue] >= 10) {
[[UIApplication sharedApplication] openURL:url options:@{} completionHandler:^(BOOL success) {
NSLog(@"scheme调用结束");
}];
}else
{
[[UIApplication sharedApplication] openURL:url];
}
}];
[alertController addAction:mapAction];
}
UIAlertAction *cancleAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
}];
[alertController addAction:cancleAction];
[self presentViewController:alertController animated:YES completion:nil];
}else
{
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:nil message:@"请先安装一款地图软件" preferredStyle:UIAlertControllerStyleActionSheet];
UIAlertAction * confirmAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
}];
[alertController addAction:confirmAction];
[self presentViewController:alertController animated:YES completion:nil];
}
}