iOS應用內跳轉百度高德蘋果地圖


移動開發經常用到基於位置的一些導航功能,但是對於對導航功能依賴性不強的的應用,我們直接采用應用外跳轉地圖APP即可。

但是應用間跳轉,首先需要設置白名單,

在iOS 9 下涉及到平台客戶端跳轉,系統會自動到項目info.plist下檢測是否設置平台Scheme,對於需要配置的平台,如果沒有配置,將無法正常跳轉平台客戶端,因此需要配置Scheme名單。本文我們需要添加百度地圖和高德地圖的scheme白名單。

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

下面直接上主要代碼,網上高德都是直接導航的,為啥?都那么做?

- (void)mapBtnclick{
   if (![NSString isNotEmptyString:_currentadress]) {
       [self.locationManager startUpdatingLocation];
       [SDIndicator showInfoWithMessage:@"正在定位,請稍候..."];
   }
   _actionSheet= [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:nil otherButtonTitles:nil];
   NSMutableArray *mapsArray=[[NSMutableArray alloc] initWithCapacity:0];
   _mapsUrlArray=[[NSMutableArray alloc] init];
   NSURL * apple_App = [NSURL URLWithString:@"http://maps.apple.com/"];
   if ([[UIApplication sharedApplication] canOpenURL:apple_App]) {
       [mapsArray addObject:@"使用蘋果自帶地圖導航"];
       NSString *urlString=[NSString stringWithFormat:@"http://maps.apple.com/?saddr=%f,%f&daddr=%f,%f",_strLatitude,_strLongitude,[_model.last_latitude floatValue],[_model.last_longitude floatValue] ];
       [_mapsUrlArray addObject:urlString];
   }
   
   NSURL * baidu_App = [NSURL URLWithString:@"baidumap://"];
   if ([[UIApplication sharedApplication] canOpenURL:baidu_App]) {
       [mapsArray addObject:@"使用百度地圖導航"];
       
       NSString *stringURL =[[NSString stringWithFormat:@"baidumap://map/direction?origin={{我的位置}}&destination=latlng:%f,%f|name=%@&mode=driving&coord_type=gcj02",[_model.last_latitude floatValue],[_model.last_longitude floatValue],_model.address] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
       [_mapsUrlArray addObject:stringURL];
       
   }
   
   NSURL * gaode_App = [NSURL URLWithString:@"iosamap://"];
   if ([[UIApplication sharedApplication] canOpenURL:gaode_App]) {
       [mapsArray addObject:@"使用高德地圖導航"];
       NSString *urlString = [[NSString stringWithFormat:@"iosamap://path?sourceApplication=%@&sid=BGVIS1&slat=%f&slon=%f&sname=%@&did=BGVIS2&dlat=%f&dlon=%f&dname=%@&dev=0&t=0",@"龍巔魚鄰",_strLatitude,_strLongitude,_currentadress,[_model.last_latitude floatValue],[_model.last_longitude floatValue],_model.address] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
       [_mapsUrlArray addObject:urlString];
       
   }
   
   for (int x=0; x<mapsArray.count; x++) {
       [_actionSheet addButtonWithTitle:[mapsArray objectAtIndex:x]];
       
   }
   
   if (_mapsUrlArray.count>0) {
        [_actionSheet showInView:self.view.window];
   }else{
       [SDIndicator showInfoWithMessage:@"建議您安裝高德或者百度地圖"];
   }
  
}

 下面說一下,主要的知識點

【1】

使用canOpenURL方法來檢測該手機是否安裝相應APP

該方法會返回一個BOOL值,當為YES時,表明已安裝該APP

 

【2】

1、蘋果自帶地圖(不需要檢測,所以不需要URL Scheme)
2、百度地圖 baidumap://
3、高德地圖 iosamap://

 

當然要攜帶參數的話,就按照各個地圖的規則進行傳值即可

ByZqk

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM