zoukankan      html  css  js  c++  java
  • iOS 调用第三方地图进行导航

    
     //支持的地图
     {
        _model = model;
        //支持的地图
        NSMutableArray *maps = [NSMutableArray array];
        //苹果原生地图-苹果原生地图方法和其他不一样
        NSMutableDictionary *iosMapDic = [NSMutableDictionary dictionary];
        iosMapDic[@"title"] = @"苹果地图";
        [maps addObject:iosMapDic];
        //百度地图
        if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"baidumap://"]]) {
            NSMutableDictionary *baiduMapDic = [NSMutableDictionary dictionary];
            baiduMapDic[@"title"] = @"百度地图";
            NSString *urlString = [[NSString stringWithFormat:@"baidumap://map/direction?origin={{我的位置}}&destination=latlng:%@,%@|name=%@&mode=driving&coord_type=gcj02",model.latitube,model.longitube,model.name] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
            baiduMapDic[@"url"] = urlString;
            [maps addObject:baiduMapDic];
        }
        //高德地图
        if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"iosamap://"]]) {
            NSMutableDictionary *gaodeMapDic = [NSMutableDictionary dictionary];
            gaodeMapDic[@"title"] = @"高德地图";
            NSString *urlString = [[NSString stringWithFormat:@"iosamap://path?sourceApplication=%@&sid=BGVIS1&slat=&slon=&sname=&did=BGVIS2&dlat=%@&dlon=%@&dname=%@&dev=0&t=2",[[BDMethod bd_shareBDMethod] bd_getAppName],model.latitube,model.longitube,_model.name] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
            gaodeMapDic[@"url"] = urlString;
            [maps addObject:gaodeMapDic];
        }
        //选择
        UIAlertController * alert = [UIAlertController alertControllerWithTitle:@"选择地图" message:nil preferredStyle:UIAlertControllerStyleActionSheet];
        NSInteger index = maps.count;
        for (int i = 0; i < index; i++) {
            NSString * title = maps[i][@"title"];
            //苹果原生地图方法
            if (i == 0) {
                UIAlertAction * action = [UIAlertAction actionWithTitle:title style:(UIAlertActionStyleDefault) handler:^(UIAlertAction * _Nonnull action) {
                    [self navAppleMap];
                }];
                [alert addAction:action];
                continue;
            }
            UIAlertAction * action = [UIAlertAction actionWithTitle:title style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
                NSString *urlString = maps[i][@"url"];
                [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];
            }];
            [alert addAction:action];
        }
        UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
        }];
        [alert addAction:cancelAction];
        [vc presentViewController:alert animated:YES completion:nil];
    }
    
    //苹果地图
    - (void)navAppleMap
    {
        //终点坐标
        CLLocationCoordinate2D loc = CLLocationCoordinate2DMake([_model.latitube doubleValue], [_model.longitube doubleValue]);
        //用户位置
        MKMapItem *currentLoc = [MKMapItem mapItemForCurrentLocation];
        //终点位置
        MKMapItem *toLocation = [[MKMapItem alloc]initWithPlacemark:[[MKPlacemark alloc]initWithCoordinate:loc addressDictionary:nil] ];
        NSArray *items = @[currentLoc,toLocation];
        //第一个
        NSDictionary *dic = @{
                              MKLaunchOptionsDirectionsModeKey : MKLaunchOptionsDirectionsModeDriving,
                              MKLaunchOptionsMapTypeKey : @(MKMapTypeStandard),
                              MKLaunchOptionsShowsTrafficKey : @(YES)
                              };
        [MKMapItem openMapsWithItems:items launchOptions:dic];
    }
    
    
    1. 具体可以参考高德百度的开放API:
      高德地图:http://lbs.amap.com/api/amap-mobile/guide/ios/route
      百度地图:http://lbsyun.baidu.com/index.php?title=uri/api/ios
  • 相关阅读:
    文件分段后,进行分片上传逻辑
    总结几个最近处理问题中使用http协议的代码
    openresty(nginx)中使用lua脚本获取请求IP地址的代码
    线上Storm的worker,executor,task参数调优篇
    async/await
    DataTables.Queryable Sample
    关闭 XXXXX 前你必须关闭所有会话框
    关于P/Invoke的闲话
    Windows 2008 Scheduled tasks result codes
    MySQL 8.0.13的使用心得
  • 原文地址:https://www.cnblogs.com/niit-soft-518/p/8866768.html
Copyright © 2011-2022 走看看