亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS實現設備判斷是否安裝相關地圖(百度、高德等)

2019-10-21 18:42:18
字體:
來源:轉載
供稿:網友

前言

最近項目關于地圖的,和朋友一起做的,他們用的高德地圖,他做到半路有事,我來接手,結果我手機上沒有安裝高德地圖,到我這邊點擊導航沒啥反應,后來就查了一下,簡單處理下,最終實現以下的需求:

點擊導航,底部彈框,顯示用戶設備上所有的地圖(一般就蘋果自帶的地圖、百度地圖、高德地圖,當然了還有其他地圖,個人感覺就這幾個用的人比較多,其他的其實也類似),下面話不多說了,來一起看看詳細的介紹吧。

具體做法如下:

1、plist文件進行相關的配置

LSApplicationQueriesSchemes (這個一定不要寫錯,一定不要寫錯,一定不要寫錯,這個我是有教訓的,說多了都是淚)這是一個數組,可以添加各地圖的相關url Scheme

常見的地圖對應如下:

  • 百度地圖:baidumap
  • 高德地圖:ios/116540.html">iosamap
  • 谷歌地圖:comgooglemaps
  • 騰訊地圖:qqmap

ios,判斷app是否安裝,判斷應用是否安裝,ios判斷有沒有安裝app

你也可以直接直接復制以下代碼到plist文件

<key>LSApplicationQueriesSchemes</key> <array>  <string>baidumap</string>  <string>iosamap</string>  <string>comgooglemaps</string>  <string>qqmap</string> </array>

2.使用系統的API判斷設備是否安裝相關的地圖應用程序

- (BOOL)canOpenURL:(NSURL *)url NS_AVAILABLE_IOS(3_0);

具體寫發如下:

百度地圖

 [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"baidumap://"]]

高德地圖

[[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"iosamap://"]]

谷歌地圖

[[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"comgooglemaps://"]]

騰訊地圖

[[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"qqmap://"]]

該方法返回的bool值即可判斷該設備有沒有安裝相關的地圖應用

備注:蘋果自帶的地圖是不需要判斷的

這里貼一段代碼,需要的時候稍微修改下即可

-(void)doNavigationWithEndLocation:(NSArray *)endLocation{ 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",endLocation[0],endLocation[1]] 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://navi?sourceApplication=%@&backScheme=%@&lat=%@&lon=%@&dev=0&style=2",@"導航功能",@"nav123456",endLocation[0],endLocation[1]] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];  gaodeMapDic[@"url"] = urlString;  [maps addObject:gaodeMapDic]; }  //谷歌地圖 if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"comgooglemaps://"]]) {  NSMutableDictionary *googleMapDic = [NSMutableDictionary dictionary];  googleMapDic[@"title"] = @"谷歌地圖";  NSString *urlString = [[NSString stringWithFormat:@"comgooglemaps://?x-source=%@&x-success=%@&saddr=&daddr=%@,%@&directionsmode=driving",@"導航測試",@"nav123456",endLocation[0], endLocation[1]] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];  googleMapDic[@"url"] = urlString;  [maps addObject:googleMapDic]; }  //騰訊地圖 if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"qqmap://"]]) {  NSMutableDictionary *qqMapDic = [NSMutableDictionary dictionary];  qqMapDic[@"title"] = @"騰訊地圖";  NSString *urlString = [[NSString stringWithFormat:@"qqmap://map/routeplan?from=我的位置&type=drive&tocoord=%@,%@&to=終點&coord_type=1&policy=0",endLocation[0], endLocation[1]] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];  qqMapDic[@"url"] = urlString;  [maps addObject:qqMapDic]; }  //選擇 UIAlertController * alert = [UIAlertController alertControllerWithTitle:@"選擇地圖" message:nil preferredStyle:UIAlertControllerStyleActionSheet];  NSInteger index = maps.count;  for (int i = 0; i < index; i++) {    NSString *  //蘋果原生地圖方法  if (i == 0) {   UIAlertAction * action = [UIAlertAction actionWithTitle:title style:(UIAlertActionStyleDefault) handler:^(UIAlertAction * _Nonnull action) {    [self navAppleMapnavAppleMapWithArray:endLocation];   }];   [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 * action = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {   }];  [alert addAction:action];  [[CPBaseViewController getCurrentVC] presentViewController:alert animated:YES completion:nil];// [self presentViewController:alert animated:YES completion:nil]; }//蘋果地圖- (void)navAppleMapnavAppleMapWithArray:(NSArray*) array{ float lat = [NSString stringWithFormat:@"%@", array[0]].floatValue; float lon = [NSString stringWithFormat:@"%@", array[1]].floatValue; //終點坐標 CLLocationCoordinate2D loc = CLLocationCoordinate2DMake(lat, lon);  //用戶位置 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)       }; //第二個,都可以用 // NSDictionary * dic = @{MKLaunchOptionsDirectionsModeKey: MKLaunchOptionsDirectionsModeDriving, //       MKLaunchOptionsShowsTrafficKey: [NSNumber numberWithBool:YES]};  [MKMapItem openMapsWithItems:items launchOptions:dic]; }

使用記得導入需要的頭文件,比如蘋果自帶地圖

import <MapKit/MapKit.h>...

備注:

-(void)doNavigationWithEndLocation:(NSArray *)endLocation;該方法中的數組傳的其實就是經緯度,到時候根據自己的需求修改下就可以直接使用

基本的使用就只這樣,希望可以幫到有需求的小伙伴。。。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品调教chinesegay| 亚洲一区av在线播放| 日韩av中文字幕在线播放| 亚洲人成在线观| 国产视频在线一区二区| 亚洲美女精品成人在线视频| 欧美怡春院一区二区三区| 欧美日韩电影在线观看| 日韩av不卡电影| 亚洲男人天堂网| 亚洲视频一区二区三区| 国产精品久久二区| 日韩欧美在线网址| 国产精品网红福利| 亚洲精品久久视频| 国产suv精品一区二区三区88区| 久久久久亚洲精品| 欧美裸体xxxx极品少妇| 久久天天躁日日躁| 最新69国产成人精品视频免费| 亚洲a区在线视频| 国产精品综合久久久| 岛国视频午夜一区免费在线观看| 亚洲香蕉成视频在线观看| 51视频国产精品一区二区| 国产精品亚洲美女av网站| 日韩av片免费在线观看| 日韩av快播网址| 欧美亚洲视频一区二区| 国产精品久久久久久久久久| 中国人与牲禽动交精品| 国产精品久久久久久久av大片| 国产suv精品一区二区三区88区| 欧美成人剧情片在线观看| 国产美女搞久久| 国产日韩欧美夫妻视频在线观看| 亚洲成人av在线| 日本国产高清不卡| 国产国语刺激对白av不卡| 欧美日韩国产综合视频在线观看中文| 久久久久久国产精品三级玉女聊斋| 国产在线观看一区二区三区| 色播久久人人爽人人爽人人片视av| 亚洲欧美国产精品| 久久亚洲精品中文字幕冲田杏梨| 亚洲一区国产精品| 日韩精品久久久久| 欧美与欧洲交xxxx免费观看| 久久九九热免费视频| 久久免费观看视频| 久久6精品影院| 日韩二区三区在线| 国产精品香蕉av| 日韩精品极品视频| 久热在线中文字幕色999舞| 在线播放国产精品| 亚洲色在线视频| 亚洲天堂成人在线| 欧美激情视频免费观看| 中文字幕自拍vr一区二区三区| 亚洲欧美国内爽妇网| 亚洲精品wwwww| 97在线观看免费| 国产免费一区二区三区在线能观看| 欧美成人网在线| 久久中文久久字幕| 91沈先生在线观看| 欧美理论电影网| 国产啪精品视频| 久久人体大胆视频| 97成人精品区在线播放| 亚洲久久久久久久久久久| 在线播放国产一区中文字幕剧情欧美| 中文字幕一区二区三区电影| 欧美成人精品一区二区| 国模极品一区二区三区| 日本免费一区二区三区视频观看| 在线观看国产精品91| 欧美一级淫片aaaaaaa视频| 亚洲一区国产精品| 国产欧美日韩中文字幕在线| www.久久久久| 国产精品中文在线| 国色天香2019中文字幕在线观看| 国产精品美女久久久久av超清| 欧美精品久久久久久久免费观看| 国产精品老女人精品视频| 久久精品人人做人人爽| 精品伊人久久97| 色系列之999| 国产色综合天天综合网| 久久精品91久久久久久再现| 亚洲欧美中文日韩在线| 97在线日本国产| 日韩成人在线免费观看| 成人国内精品久久久久一区| 欧美激情视频一区二区三区不卡| 久久视频在线直播| 日韩精品免费在线播放| 日本精品一区二区三区在线播放视频| 欧美在线视频一二三| 欧美精品videos| 欧美一区二区影院| 亚洲精品理论电影| 久久夜精品香蕉| 亚洲欧洲日产国码av系列天堂| 福利视频一区二区| 日韩中文视频免费在线观看| 欧美孕妇与黑人孕交| 欧美成人网在线| 免费99精品国产自在在线| 成人免费福利视频| 亚洲xxxx3d| 91麻豆桃色免费看| 欧美精品激情在线观看| 欧美大片欧美激情性色a∨久久| 久久黄色av网站| 亚洲最大的免费| 久久在线视频在线| 国产欧美精品一区二区三区介绍| 亚洲国产中文字幕久久网| 欧洲s码亚洲m码精品一区| 一级做a爰片久久毛片美女图片| 成人免费激情视频| 欧美第一黄色网| 成人av电影天堂| 亚洲毛片一区二区| 国产精品com| 尤物yw午夜国产精品视频明星| 欧美日韩人人澡狠狠躁视频| 亚洲一二在线观看| 欧美影院久久久| 欧美俄罗斯性视频| 欧美激情一级二级| 在线免费观看羞羞视频一区二区| 国产成人一区二区在线| 久久久久久久影院| 91视频国产精品| 最近2019中文免费高清视频观看www99| 日韩精品在线看| 日韩中文av在线| 国产精品久久久久久久久久尿| 国产999视频| 国产精品99免视看9| 性色av一区二区三区免费| 欧美中文字幕在线| 欧美成人免费一级人片100| 久久久久久久久久亚洲| 国产91精品最新在线播放| 深夜福利91大全| 国产91精品久久久久久| 欧美一级淫片丝袜脚交| 九九视频直播综合网| 日韩欧美成人区| 青草青草久热精品视频在线观看| 日韩欧美精品网址| www.欧美免费| 欧美视频一区二区三区…| 国产美女搞久久| 国产亚洲精品久久久优势| 亚洲欧美国产视频| 91亚洲精品一区| 奇米4444一区二区三区| 欧美亚洲国产成人精品|