IOS - 调用百度、高德地图

第一步:添加白名单

iOS 9系统策略更新,限制了http协议的访问,此外应用需要在“Info.plist”中将要使用的URL Schemes列为白名单,才可正常检查其他应用是否安装

百度:baidumap
高德:iosamap

第二步:跳转代码

    /**
     *  是否安装 百度地图
     */
    if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"baidumap://map/"]]){
        NSString *urlString = [NSString stringWithFormat:@"baidumap://map/marker?location=%f,%f&title=%@&content=%@&src=应用名称",lat,lon,title,@"描述"];
        
        NSDictionary *dic = @{@"name": @"百度地图", @"url": urlString};
    }


    /**
     *  是否安装 高德地图
     */
    if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"iosamap://"]]) {
        NSString *urlString = [NSString stringWithFormat:@"iosamap://viewMap?sourceApplication=应用名称&poiname=%@&lat=%f&lon=%f", @"描述", lat, lon];
        
        NSDictionary *dic = @{@"name": @"高德地图",@"url": urlString};
    }


    /**
     *  本机地图
     */
    {
        CLLocationCoordinate2D desCoor = CLLocationCoordinate2DMake(lat, lon);
        
        MKPlacemark * placemark = [[MKPlacemark alloc] initWithCoordinate:desCoor addressDictionary:[NSDictionary dictionaryWithObject:des forKey:(NSString*)kABPersonAddressStreetKey]];
        
        NSDictionary *dic = @{@"name": @"本机自带地图",
                              @"des": placemark};   
    }

第三部:打开地图

    // 打开苹果自带地图
    MKMapItem * sfStore = [[MKMapItem alloc] initWithPlacemark:placemark];
    [sfStore openInMapsWithLaunchOptions:nil];

    // 打开百度、高德
    [[UIApplication sharedApplication] openURL:url];

你可能感兴趣的:(IOS - 调用百度、高德地图)