闻道丶iOS(尝鲜版)iOS学习iOS 开发每天分享优质文章

iOS 调起第三方应用,进行定位,导航......

2017-03-27  本文已影响75人  橘子的皮

我们常用的地图应用有高德地图、百度地图、谷歌地图(好像国内不怎用...0),当然我们iOS有系统自带的地图,哈哈,多方便啊,直接拿过来用就是咯,下面我们讲讲怎么拉起第三方地图应用来进行定位导航等。。。

系统地图:导入#import <CoreLocation/CoreLocation.h>就好
高德地图:iosamap://
百度地图:baidumap://
//我们要在info.plist配置白名单
<key>LSApplicationQueriesSchemes</key>
    <array>
        <string>iosamap</string>
        <string>baidumap</string>
    </array>
 //百度地图
    if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"baidumap://"]]) {
        NSMutableDictionary *baiduMapDic = [NSMutableDictionary dictionary];
        NSString *urlString = [[NSString stringWithFormat:@"baidumap://map/direction?origin={{我的位置}}&destination=%@&mode=driving&coord_type=gcj02",self.shopDetailModel.address]stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
     //打开百度地图
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];
    }
    
    //高德地图
    if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"iosamap://"]]) {
        NSMutableDictionary *gaodeMapDic = [NSMutableDictionary dictionary];
     //百度坐标转换火星坐标 (由于我们公司的后台是百度地图的服务,所以在这里我做了个坐标转化)
        const double x_pi = 3.14159265358979324 * 3000.0 / 180.0;
        NSString *lo = [NSString stringWithFormat:@"%f",endLocation.longitude];
         NSString *la = [NSString stringWithFormat:@"%f",endLocation.latitude];
        double x = [lo doubleValue] - 0.0065, y = [la doubleValue] - 0.006;
        double z = sqrt(x * x + y * y) - 0.00002 * sin(y * x_pi);
        double theta = atan2(y, x) - 0.000003 * cos(x * x_pi);
        double  gg_lon = z * cos(theta);
        double  gg_lat = z * sin(theta);
        
        NSString *urlString = [[NSString stringWithFormat:@"iosamap://path?sourceApplication=Zhongyi&sid=BGVIS1&slat=%lf&slon=%lf&sname=%@&did=BGVIS2&dlat=%lf&dlon=%lf&dname=%@&dev=0&m=0&t=0",[self.latitude doubleValue],[self.longitude doubleValue],@"我的位置",gg_lat,gg_lon,self.shopDetailModel.address]stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
     //打开高德地图
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];

     //系统地图
        const double x_pi = 3.14159265358979324 * 3000.0 / 180.0;
                    //百度坐标转换火星坐标
         NSString *lo = [NSString stringWithFormat:@"%f",self.shopDetailModel.longitude.doubleValue];
                    NSString *la = [NSString stringWithFormat:@"%f",self.shopDetailModel.latitude.doubleValue];
                    double x = [lo doubleValue] - 0.0065, y = [la doubleValue] - 0.006;
                    double z = sqrt(x * x + y * y) - 0.00002 * sin(y * x_pi);
                    double theta = atan2(y, x) - 0.000003 * cos(x * x_pi);
                    double  gg_lon = z * cos(theta);
                    double  gg_lat = z * sin(theta);
                    CLLocationCoordinate2D loc = CLLocationCoordinate2DMake(gg_lat, gg_lon);
                    MKMapItem *currentLocation = [MKMapItem mapItemForCurrentLocation];
                    MKMapItem *toLocation = [[MKMapItem alloc] initWithPlacemark:[[MKPlacemark alloc] initWithCoordinate:loc addressDictionary:nil]];
                    toLocation.name = self.shopDetailModel.address;
                    [MKMapItem openMapsWithItems:@[currentLocation, toLocation]
                                   launchOptions:@{
MKLaunchOptionsMapTypeKey: [NSNumber numberWithInteger:MKMapTypeStandard],MKLaunchOptionsDirectionsModeKey: MKLaunchOptionsDirectionsModeDriving,MKLaunchOptionsShowsTrafficKey: [NSNumber numberWithBool:YES]}];

                }
            }];


上一篇 下一篇

猜你喜欢

热点阅读