自己APP調(diào)起高德,百度和自帶地圖導(dǎo)航(小結(jié))

1,效果如

demo

2,設(shè)置info.plist

info.plist下檢測是否設(shè)置平臺Scheme,對于需要配置的平臺,如果沒有配置,將無法正常跳轉(zhuǎn)平臺客戶端,因此需要配置Scheme名單。本文我們需要添加百度地圖和高德地圖的scheme白名單。

操作方法:在項目的info.plist中添加LSApplicationQueriesSchemes字段,類型是Array,然后添加兩個Item。

如圖:

設(shè)置infoplist

3,代碼附上:如下

#pragma mark -- 設(shè)置導(dǎo)航

-(void)thridMapNavgationMath{

? ? //導(dǎo)航到某個地方

? ? self.navcoordinate = CLLocationCoordinate2DMake(39.3183, 116.9206);

? ? //系統(tǒng)版本高于8.0,使用UIAlertController

? ? if (IS_SystemVersionGreaterThanEight) {


? ? ? ? UIAlertController * alertController = [UIAlertController alertControllerWithTitle:@"導(dǎo)航到還車點" message:nil preferredStyle:UIAlertControllerStyleActionSheet];

? ? ? ? NSMutableAttributedString *alertControllerStr = [[NSMutableAttributedString alloc] initWithString:@"導(dǎo)航到還車點"];

//設(shè)置字體顏色

? ? ? ? [alertControllerStr addAttribute:NSForegroundColorAttributeName value:BC_RGBColor(0x333333) range:NSMakeRange(0, 0)];

? ? ? ? [alertControllerStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:14] range:NSMakeRange(0, 0)];

? ? ? ? [alertController setValue:alertControllerStr forKey:@"attributedTitle"];

//? ? ? ? //自帶地圖

//? ? ? ? [alertController addAction:[UIAlertAction actionWithTitle:@"自帶地圖" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {

//

//? ? ? ? ? ? NSLog(@"alertController -- 自帶地圖");

//

//? ? ? ? ? ? //使用自帶地圖導(dǎo)航

//? ? ? ? ? ? MKMapItem *currentLocation =[MKMapItem mapItemForCurrentLocation];

//

//? ? ? ? ? ? MKMapItem *toLocation = [[MKMapItem alloc] initWithPlacemark:[[MKPlacemark alloc] initWithCoordinate:self.navcoordinate addressDictionary:nil]];

//

//? ? ? ? ? ? [MKMapItem openMapsWithItems:@[currentLocation,toLocation] launchOptions:@{MKLaunchOptionsDirectionsModeKey:MKLaunchOptionsDirectionsModeDriving,

//? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? MKLaunchOptionsShowsTrafficKey:[NSNumber numberWithBool:YES]}];

//

//

//? ? ? ? }]];


? ? ? ? //判斷是否安裝了高德地圖,如果安裝了高德地圖,則使用高德地圖導(dǎo)航

? ? ? ? if ( [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"iosamap://"]]) {

? ? ? ? ? ? UIAlertAction *gaodeAction =[UIAlertAction actionWithTitle:@"高德地圖" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {


? ? ? ? ? ? ? ? NSLog(@"alertController -- 高德地圖");

? ? ? ? ? ? ? ? NSString *urlsting =[[NSString stringWithFormat:@"iosamap://navi?sourceApplication= &backScheme= &lat=%f&lon=%f&dev=0&style=2",self.navcoordinate.latitude,self.navcoordinate.longitude]stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

? ? ? ? ? ? ? ? [[UIApplication? sharedApplication]openURL:[NSURL URLWithString:urlsting]];


? ? ? ? ? ? }];

? ? ? ? ? ? [gaodeAction setValue:BC_RGBColor(0x32d2dc) forKey:@"titleTextColor"];

? ? ? ? ? ? [alertController addAction:gaodeAction];

//? ? ? ? ? ? [alertController addAction:[UIAlertAction actionWithTitle:@"高德地圖" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {

//

//? ? ? ? ? ? ? ? NSLog(@"alertController -- 高德地圖");

//? ? ? ? ? ? ? ? NSString *urlsting =[[NSString stringWithFormat:@"iosamap://navi?sourceApplication= &backScheme= &lat=%f&lon=%f&dev=0&style=2",self.navcoordinate.latitude,self.navcoordinate.longitude]stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

//? ? ? ? ? ? ? ? [[UIApplication? sharedApplication]openURL:[NSURL URLWithString:urlsting]];

//

//? ? ? ? ? ? }]];


? ? ? ? }


? ? ? ? //判斷是否安裝了百度地圖,如果安裝了百度地圖,則使用百度地圖導(dǎo)航

? ? ? ? if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"baidumap://"]]) {

? ? ? ? ? ? UIAlertAction *baiduAction = [UIAlertAction actionWithTitle:@"百度地圖" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {


? ? ? ? ? ? ? ? NSLog(@"alertController -- 百度地圖");

? ? ? ? ? ? ? ? NSString *urlsting =[[NSString stringWithFormat:@"baidumap://map/direction?origin={{我的位置}}&destination=latlng:%f,%f|name=目的地&mode=driving&coord_type=gcj02",self.navcoordinate.latitude,self.navcoordinate.longitude] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

? ? ? ? ? ? ? ? [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlsting]];


? ? ? ? ? ? }];

? ? ? ? ? ? [baiduAction setValue:BC_RGBColor(0x32d2dc) forKey:@"titleTextColor"];

? ? ? ? ? ? [alertController addAction:baiduAction];


//? ? ? ? ? ? [alertController addAction:[UIAlertAction actionWithTitle:@"百度地圖" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {

//

//? ? ? ? ? ? ? ? NSLog(@"alertController -- 百度地圖");

//? ? ? ? ? ? ? ? NSString *urlsting =[[NSString stringWithFormat:@"baidumap://map/direction?origin={{我的位置}}&destination=latlng:%f,%f|name=目的地&mode=driving&coord_type=gcj02",self.navcoordinate.latitude,self.navcoordinate.longitude] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

//? ? ? ? ? ? ? ? [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlsting]];

//

//? ? ? ? ? ? }]];

? ? ? ? }


? ? ? ? //添加取消選項

? ? ? ? UIAlertAction *cancleAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {


? ? ? ? ? ? [alertController dismissViewControllerAnimated:YES completion:nil];


? ? ? ? }];

? ? ? ? [cancleAction setValue:BC_RGBColor(0x32d2dc) forKey:@"titleTextColor"];

? ? ? ? [alertController addAction:cancleAction];


//? ? ? ? [alertController addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {

//

//? ? ? ? ? ? [alertController dismissViewControllerAnimated:YES completion:nil];

//

//? ? ? ? }]];


? ? ? ? //顯示alertController

? ? ? ? [self presentViewController:alertController animated:YES completion:nil];


? ? }

? ? else {? //系統(tǒng)版本低于8.0,則使用UIActionSheet


? ? ? ? UIActionSheet * actionsheet = [[UIActionSheet alloc] initWithTitle:@"導(dǎo)航到還車點" delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:nil otherButtonTitles:@"自帶地圖", nil];


? ? ? ? //如果安裝高德地圖,則添加高德地圖選項

? ? ? ? if ( [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"iosamap://"]]) {


? ? ? ? ? ? [actionsheet addButtonWithTitle:@"高德地圖"];


? ? ? ? }


? ? ? ? //如果安裝百度地圖,則添加百度地圖選項

? ? ? ? if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"baidumap://"]]) {


? ? ? ? ? ? [actionsheet addButtonWithTitle:@"百度地圖"];

? ? ? ? }


? ? ? ? [actionsheet showInView:self.view];



? ? }

}

#pragma mark - UIActionSheetDelegate

- (void)actionSheetCancel:(UIActionSheet *)actionSheet

{

? ? NSLog(@"ActionSheet - 取消了");

? ? [actionSheet removeFromSuperview];

}

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex

{


? ? NSLog(@"numberOfButtons == %ld",actionSheet.numberOfButtons);

? ? NSLog(@"buttonIndex == %ld",buttonIndex);


? ? if (buttonIndex == 0) {


? ? ? ? NSLog(@"自帶地圖觸發(fā)了");


? ? ? ? MKMapItem *currentLocation =[MKMapItem mapItemForCurrentLocation];


? ? ? ? MKMapItem *toLocation = [[MKMapItem alloc] initWithPlacemark:[[MKPlacemark alloc] initWithCoordinate:self.navcoordinate addressDictionary:nil]];


? ? ? ? [MKMapItem openMapsWithItems:@[currentLocation,toLocation] launchOptions:@{MKLaunchOptionsDirectionsModeKey:MKLaunchOptionsDirectionsModeDriving,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? MKLaunchOptionsShowsTrafficKey:[NSNumber numberWithBool:YES]}];


? ? }

? ? //既安裝了高德地圖,又安裝了百度地圖

? ? if (actionSheet.numberOfButtons == 4) {


? ? ? ? if (buttonIndex == 2) {


? ? ? ? ? ? NSLog(@"高德地圖觸發(fā)了");


? ? ? ? ? ? NSString *urlsting =[[NSString stringWithFormat:@"iosamap://navi?sourceApplication= &backScheme= &lat=%f&lon=%f&dev=0&style=2",self.navcoordinate.latitude,self.navcoordinate.longitude]stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

? ? ? ? ? ? [[UIApplication? sharedApplication]openURL:[NSURL URLWithString:urlsting]];

? ? ? ? }

? ? ? ? if (buttonIndex == 3) {


? ? ? ? ? ? NSLog(@"百度地圖觸發(fā)了");

? ? ? ? ? ? NSString *urlsting =[[NSString stringWithFormat:@"baidumap://map/direction?origin={{我的位置}}&destination=latlng:%f,%f|name=目的地&mode=driving&coord_type=gcj02",self.navcoordinate.latitude,self.navcoordinate.longitude] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

? ? ? ? ? ? [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlsting]];

? ? ? ? }


? ? }

? ? //安裝了高德地圖或安裝了百度地圖

? ? if (actionSheet.numberOfButtons == 3) {


? ? ? ? if (buttonIndex == 2) {


? ? ? ? ? ? if ( [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"iosamap://"]]) {


? ? ? ? ? ? ? ? NSLog(@"只安裝的高德地圖觸發(fā)了");

? ? ? ? ? ? ? ? NSString *urlsting =[[NSString stringWithFormat:@"iosamap://navi?sourceApplication= &backScheme= &lat=%f&lon=%f&dev=0&style=2",self.navcoordinate.latitude,self.navcoordinate.longitude]stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

? ? ? ? ? ? ? ? [[UIApplication? sharedApplication]openURL:[NSURL URLWithString:urlsting]];


? ? ? ? ? ? }

? ? ? ? ? ? if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"baidumap://"]]) {

? ? ? ? ? ? ? ? NSLog(@"只安裝的百度地圖觸發(fā)了");

? ? ? ? ? ? ? ? NSString *urlsting =[[NSString stringWithFormat:@"baidumap://map/direction?origin={{我的位置}}&destination=latlng:%f,%f|name=目的地&mode=driving&coord_type=gcj02",self.navcoordinate.latitude,self.navcoordinate.longitude] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

? ? ? ? ? ? ? ? [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlsting]];

? ? ? ? ? ? }



? ? ? ? }


? ? }


}

4:小結(jié):(1),自己項目沒用到自帶地圖導(dǎo)航,所以注釋掉了

? ? (2)調(diào)用自己地圖需注意添加#import<MapKit/MapKit.h>才能調(diào)用

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容