精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

URI跳轉方式地圖導航的代碼實踐

移動開發
之前介紹了我正在做的是一款定位主打的應用 然后最近我們需要做一個定位導航的功能 能夠讓用戶從當前位置導航到指定目的地(默認以駕車的方式導航)手機上的導航方式 分應用內導航和應用外導航

[[145108]]

前言

之前介紹了我正在做的是一款定位主打的應用 然后最近我們需要做一個定位導航的功能 能夠讓用戶從當前位置導航到指定目的地(默認以駕車的方式導航)

手機上的導航方式 分應用內導航和應用外導航

  • 應用內導航
    是指使用地圖服務提供的SDK(比如高德,百度等等) 直接將導航功能嵌入到我們自己的APP內部
    但是這個方案我個人不喜歡 一是接入要一定的時間 二是增加APP的內存占用
  • 應用外導航
    是以URI跳轉的方式(在iOS中就是以URL Scheme的方式) 直接跳到對應的地圖APP中 直接利用對方的功能來導航
    這樣的優點 一是接入方便 二是不增加自己APP的開銷 缺點就是如果用戶沒有裝這個地圖應用就沒辦法使用這個地圖的服務

說起應用內導航 當年是被圖吧坑慘了 兩年前 高德和百度都沒有推出導航SDK的時候 市面上好像就只有圖吧有應用內導航SDK 所以不得已用了圖吧SDK 如今圖吧SDK仍是我心中最難用的地圖SDK(話說百度的SDK和圖吧的SDK設計感覺上是一脈相承的 不曉得是不是百度做地圖時挖了一大批圖吧的人?) 而且就是這個難用的SDK 竟然還是收費的

而今天要說的 就是第二種 因為網上說的都不是很全面 所以今天把對這種方式的研究結果總結一下

 

研究

先來看一下我們要達到什么效果 就是當我們點導航的時候 會彈出下面這個選擇列表

當然 如果沒有安裝某個地圖APP 那么對應的選項是不會出現的 檢測APP是否安裝 只要調用下面這個方法就可以了

  1. [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"appurlscheme://"

 

關于APP的URL Scheme相關內容這里就不介紹了 大家可以自行去研究

那么我們上圖提到了4個地圖應用 分別是

  1. 蘋果地圖
  2. 百度地圖
  3. 高德地圖
  4. 谷歌地圖

這些也是當前我們用得最多的幾種地圖了(什么 你們說還有騰訊地圖? 可惜騰訊地圖暫時還不支持URI的方式打開 所以這里就沒列出來 等可以用了我會補上)

下面來對比一下幾種地圖

地圖 URL Scheme 文檔 是否可以跳回到APP
蘋果地圖   文檔                  否
百度地圖 baidumap:// 文檔                  否
高德地圖 iosamap:// 文檔                  是
谷歌地圖 comgooglemaps:// 文檔                  是

蘋果地圖是系統自帶的(而且蘋果地圖最好的方式也不是用URI的方式開打) 所以無需URL Scheme就可以打開的
其次 當跳到地圖APP之后可以跳回是一種很好的體驗(參考微信的跳轉) 但是遺憾的是 蘋果地圖和百度地圖都不支持跳回

接下來我們就回到正題 說一說每種地圖的跳轉方式

假設我們有一個指定的目的坐標coordinate 而我們自己的APP的URL Scheme是urlScheme 名稱是appName

  1. CLLocationCoordinate2D coordinate; 
  2. NSString *urlScheme; 
  3. NSString *appName; 

蘋果地圖

蘋果地圖可以通過openURL的方式打開

 

  1. NSString *urlString = [[NSString stringWithFormat:@"http://maps.apple.com/?daddr=%f,%f&saddr=slat,slng",coordinate.latitude, coordinate.longitude] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding] 
  2.  
  3. [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]]; 

但是這種方式 不能以當前位置為起點 所以不符合我們的要求 網上說可以用下面這種方式 但是我沒成功

  1. NSString *urlString = [[NSString stringWithFormat:@"http://maps.apple.com/?daddr=%f,%f&saddr=Current+Location",coordinate.latitude, coordinate.longitude] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

 

但是蘋果提供了另一種方式 使用MKMapItem

 

  1. MKMapItem *currentLocation = [MKMapItem mapItemForCurrentLocation]; 
  2. MKMapItem *toLocation = [[MKMapItem alloc] initWithPlacemark:[[MKPlacemark alloc] initWithCoordinate:coordinate addressDictionary:nil]]; 
  3.                                               
  4. [MKMapItem openMapsWithItems:@[currentLocation, toLocation]  
  5.                launchOptions:@{MKLaunchOptionsDirectionsModeKey: MKLaunchOptionsDirectionsModeDriving, 
  6.                                MKLaunchOptionsShowsTrafficKey: [NSNumber numberWithBool:YES]}]; 

效果如下

百度地圖

  1. NSString *urlString = [[NSString stringWithFormat:@"baidumap://map/direction?origin={{我的位置}}&destination=latlng:%f,%f|name=目的地&mode=driving&coord_type=gcj02",coordinate.latitude, coordinate.longitude] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
  2.                                               
  3. [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]]; 

要注意幾點

  1. origin=
    這個是不能被修改的 不然無法把出發位置設置為當前位置
  2. destination=latlng:%f,%f|name=目的地
    name=XXXX name這個字段不能省略 否則導航會失敗 而后面的文字則可以隨便填
  3. coord_type=gcj02
    coord_type允許的值為bd09ll、gcj02、wgs84 如果你APP的地圖SDK用的是百度地圖SDK 請填bd09ll 否則 就填gcj02 wgs84你基本是用不上了(關于地圖加密這里也不多談 請自行學習)

效果如下

#p#

高德地圖

  1. NSString *urlString = [[NSString stringWithFormat:@"iosamap://navi?sourceApplication=%@&backScheme=%@&lat=%f&lon=%f&dev=0&style=2",appName,urlScheme,coordinate.latitude, coordinate.longitude] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
  2.  
  3. [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]]; 

要注意幾點

  1. sourceApplication=%@&backScheme=%@
    sourceApplication代表你自己APP的名稱 會在之后跳回的時候顯示出來 所以必須填寫 backScheme是你APP的URL Scheme 不填是跳不回來的喲
  2. dev=0
    這里填0就行了 跟上面的gcj02一個意思 1代表wgs84 也用不上

效果如下

退出導航后 會提示是否跳回到APP

谷歌地圖

  1. NSString *urlString = [[NSString stringWithFormat:@"comgooglemaps://?x-source=%@&x-success=%@&saddr=&daddr=%f,%f&directionsmode=driving",appName,urlScheme,coordinate.latitude, coordinate.longitude] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
  2.  
  3. [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]]; 

要注意幾點

  1. x-source=%@&x-success=%@
    跟高德一樣 這里分別代表APP的名稱和URL Scheme
  2. saddr=
    這里留空則表示從當前位置觸發

效果如下 在有多條路線的時候 谷歌地圖會讓你選擇其中一條

選擇之后就進入了導航頁面

騰訊地圖

既然提到了騰訊地圖 那么還是說一下 從網上和官方文檔可以得知 大概調用的URI如下

  1. NSString *urlString = [[NSString stringWithFormat:@"qqmap://map/routeplan?type=drive&fromcoord=CurrentLocation&tocoord=%f,%f&coord_type=1&policy=0",coordinate.latitude, coordinate.longitude] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
  2.  
  3. [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]]; 

但是很遺憾 調用之后出錯了 無法導航

效果如下

小結

文中的demo可以在這里找到

相對來說 高德地圖做得更用心一點 畢竟也是蘋果的服務提供商 而百度相對來說則差一點 谷歌的話 不翻墻還是用不了 而蘋果自帶的地圖則不多說了 功能還是太簡單了

這里只是用最簡單的方式對導航功能進行了調用 各家的地圖其實還有很多參數和功能沒有使用到 需要知道的同學可以在文章開頭的文檔鏈接中找到詳細的描述

責任編輯:倪明 來源: 里脊串的開發隨筆
相關推薦

2014-12-30 11:26:00

地圖

2010-08-05 09:39:17

Flex頁面跳轉

2012-03-14 10:13:39

諾基亞地圖導航

2023-07-07 12:26:39

攜程開發

2010-08-13 13:25:53

Flex頁面跳轉

2010-08-25 08:58:32

HTML

2014-12-22 16:14:22

高德地圖

2011-09-26 10:05:19

百度地圖API

2014-11-13 10:46:30

高德地圖APEC出行

2014-10-29 17:53:00

高德地圖

2009-12-02 19:08:19

PHP跳轉代碼

2011-10-24 14:01:29

API

2011-09-16 14:39:02

百度地圖API

2020-08-20 11:14:19

高德地圖AR駕車新版本

2012-11-27 10:19:22

手機地圖導航應用導航犬

2016-12-07 10:02:54

移動應用開發底部導航android

2020-03-09 14:10:48

代碼開發工具

2015-07-23 10:09:45

后臺定位代碼

2023-04-28 08:06:04

低代碼AI智能

2014-10-29 13:52:38

程序員
點贊
收藏

51CTO技術棧公眾號

日韩黄色影院| 中文字幕一区二区免费| 欧美激情极品| 在线观看国产91| 日本女人高潮视频| 天堂v在线观看| 日本网站在线观看一区二区三区 | 51成人做爰www免费看网站| 一区二区三区免费高清视频 | 中文网丁香综合网| 免费a级片在线观看| 可以看av的网站久久看| 欧美理论电影在线观看| 一道本在线观看| 视频欧美一区| 在线视频观看一区| 18禁裸男晨勃露j毛免费观看 | 免费91麻豆精品国产自产在线观看| 完美搭档在线观看| 亚洲欧美综合久久久久久v动漫| 亚洲午夜久久久久| 亚洲韩国在线| 青青草在线播放| 国产suv精品一区二区6| 要久久电视剧全集免费| 成人欧美一区二区三区小说| 国产一区二区三区黄| 一级特黄色大片| 久久成人精品| 91精品国产91久久久久久吃药| 日韩不卡av在线| 色狼人综合干| 精品久久久久久无| 三级性生活视频| 成人av观看| 亚洲高清免费在线| 久久天天东北熟女毛茸茸| 国产美女视频一区二区三区| 91在线视频免费91| 粉嫩av一区二区三区免费观看| 一本色道久久综合熟妇| 日精品一区二区| 欧美亚洲国产精品| 成人免费区一区二区三区| 在线成人av| 欧美激情一区二区三区久久久| 日韩欧美国产成人精品免费| 日本成人小视频| 国产一区二区三区高清在线观看| 日韩精品卡通动漫网站| 婷婷激情久久| 亚洲乱码国产乱码精品精天堂| 中国一级特黄录像播放| 国内精品免费| 亚洲精品国产精品久久清纯直播 | 亚洲人成亚洲精品| 日韩精品黄色网| 一区二区三区免费在线观看视频 | 国产成人在线播放视频| 在线看片成人| 欧美亚洲成人网| 手机看片久久久| 久久精品道一区二区三区| 日本中文字幕不卡免费| 波多野结衣激情视频| 日韩av在线发布| 国产精品欧美一区二区| 在线观看xxxx| 国产精品一区免费在线观看| 99热99热| 欧美色18zzzzxxxxx| 久久你懂得1024| 亚洲高清视频在线观看| 黄色成人影院| 亚洲第一搞黄网站| 欧美视频第三页| 免费成人毛片| 日韩一区二区不卡| 精品人妻一区二区免费视频| 亚洲人成亚洲精品| 久久久国产成人精品| 精品无码久久久久| 久久尤物视频| 92裸体在线视频网站| 蜜桃在线一区二区| 国产三级欧美三级日产三级99 | 成人毛片网站| 久蕉依人在线视频| 国产精品传媒视频| 欧洲精品在线播放| 精品欧美一区二区三区在线观看| 7777精品伊人久久久大香线蕉完整版| 无码人妻久久一区二区三区蜜桃| 国内露脸中年夫妇交换精品| 在线成人激情黄色| 久久老司机精品视频| 日韩中文字幕一区二区三区| 91精品视频大全| 四虎影视在线观看2413| 综合在线观看色| 国产主播在线看| 亚洲ww精品| 亚洲毛片在线看| 日本一级二级视频| 日韩黄色在线观看| 成人xxxxx色| 在线观看麻豆蜜桃| 午夜精品福利久久久| 色戒在线免费观看| 亚瑟一区二区三区四区| 精品自拍视频在线观看| 久久这里只有精品9| 成人免费av资源| 手机在线视频你懂的| 爱情电影社保片一区| 欧美大胆人体bbbb| 国产在视频线精品视频| 免费看黄裸体一级大秀欧美| 99porn视频在线| 91官网在线| 色先锋aa成人| 亚洲国产精品无码久久久久高潮| 婷婷综合五月| 国产精品一区二区久久精品| 蝌蚪视频在线播放| 午夜天堂影视香蕉久久| 日本55丰满熟妇厨房伦| 国产精品久久久久久久久久10秀| 国产999在线观看| 天堂在线中文字幕| 亚洲电影一区二区| 女女调教被c哭捆绑喷水百合| 欧美国产偷国产精品三区| 日韩免费在线播放| 青青草视频在线免费观看| 五月综合激情婷婷六月色窝| 9.1在线观看免费| 欧美一区高清| 91精品国产综合久久久久久丝袜 | 午夜欧美不卡精品aaaaa| www.av黄色| 亚洲欧美精品午睡沙发| 中文字幕永久有效| 三上亚洲一区二区| 国产美女91呻吟求| 男人的天堂在线视频免费观看| 欧美专区日韩专区| 老司机福利在线观看| 老司机午夜精品视频在线观看| 久久综合一区二区三区| 三级中文字幕在线观看| 日韩精品在线免费播放| 亚洲国产精一区二区三区性色| 国产不卡免费视频| 免费看欧美一级片| 美国十次av导航亚洲入口| 538国产精品视频一区二区| 午夜视频福利在线| 91国产视频在线观看| 欧美亚洲色综久久精品国产| 捆绑调教一区二区三区| 偷拍盗摄高潮叫床对白清晰| 精品视频在线观看免费观看| 欧美精品性视频| 国产1区在线观看| 精品久久中文字幕| 黄色片网站免费| 国产在线精品视频| 久久99久久久久久| 亚洲香蕉视频| 国产综合色香蕉精品| 羞羞的视频在线看| 亚洲精品自拍第一页| 日本精品入口免费视频| 综合分类小说区另类春色亚洲小说欧美| www.日本久久| 中文日韩欧美| 亚洲午夜久久久影院伊人| 久久国产精品美女| 国内外成人免费激情在线视频 | 欧美成人自拍视频| 亚洲av成人无码网天堂| 欧美日韩综合一区| 久久激情免费视频| 久久精品人人做人人爽97| 涩涩网站在线看| 99人久久精品视频最新地址| 深夜福利成人| 综合激情五月婷婷| 国产精品成人免费电影| 日本高清在线观看| 亚洲视频在线观看视频| 国产丝袜在线视频| 日韩欧美一区二区在线| 欧美 日韩 国产 一区二区三区| 波多野结衣一区二区三区| 日本激情视频在线播放| 伊人精品视频| 一卡二卡3卡四卡高清精品视频| 99久久免费精品国产72精品九九| 国产精品99久久久久久白浆小说| bt在线麻豆视频| 亚洲视频欧洲视频| 午夜老司机福利| 欧美熟乱第一页| 久久夜色精品亚洲| 亚洲欧美区自拍先锋| 久久精品国产亚洲AV熟女| 国产高清亚洲一区| 杨幂毛片午夜性生毛片| 一本不卡影院| 国产制服91一区二区三区制服| 欧洲乱码伦视频免费| 国产91亚洲精品一区二区三区| se69色成人网wwwsex| 欧美制服第一页| heyzo一区| 欧美床上激情在线观看| 欧美尤物美女在线| 国产亚洲精品一区二区| 亚洲日本国产精品| 精品精品欲导航| 精品人妻一区二区三区含羞草| 欧美三级电影一区| av片免费观看| 日韩欧美成人免费视频| 日韩xxx高潮hd| 亚洲一区二区不卡免费| 欧美在线视频第一页| 国产精品美女久久久久高潮| 久久久久久国产精品无码| 91在线播放网址| 免费看毛片的网站| 波多野结衣一区二区三区| av免费观看不卡| 成人性生交大片免费看中文| 免费观看黄网站| 国产成人午夜高潮毛片| 波多野结衣在线免费观看| 精品一二三四区| 在线看免费毛片| 狠狠色2019综合网| 亚洲天堂网2018| 激情六月婷婷久久| 中文字幕色网站| 国产一区二区三区在线观看免费| 成人亚洲免费视频| 国产激情视频一区二区在线观看| 一区二区三区国产好的精华液| 精品一二三四在线| 交换做爰国语对白| 国产99精品国产| 中文字幕影片免费在线观看| 99这里只有久久精品视频| 日韩av无码一区二区三区不卡| 人九九综合九九宗合| 精产国品一区二区三区| 57pao成人永久免费| 国产在线观看精品一区二区三区| 福利一区和二区| 国产中文字幕91| 日韩区欧美区| 狠狠色综合色区| 亚洲瘦老头同性70tv| 日韩av高清| 天天做天天爱综合| www.日本三级| 亚洲一区激情| 精品日韩久久久| 国模娜娜一区二区三区| 久久久久亚洲av无码专区首jn| 成人午夜精品在线| 爱爱的免费视频| 国产精品久久久久久久久晋中 | 精品国产欧美日韩| 一区二区三区av| 欧美天天在线| 久久久久狠狠高潮亚洲精品| 久久精品国产免费看久久精品| wwwxxxx在线观看| 久久久五月婷婷| 国产日韩欧美在线观看视频| 亚洲成人高清在线| 做爰无遮挡三级| 欧美变态凌虐bdsm| 韩国免费在线视频| 九色91av视频| 一区在线影院| 国精产品一区二区| 色婷婷热久久| 伊人成色综合网| 精品一区二区在线看| 熟女人妻在线视频| 亚洲欧美日韩国产成人精品影院| 99热在线观看免费精品| 欧美群妇大交群的观看方式| 免费观看国产视频| 中文字幕国产亚洲| 一二三四视频在线中文| 亚洲在线视频观看| 精品国产精品久久一区免费式| 亚洲成人动漫在线| 日本怡春院一区二区| 国产精品无码电影| 亚洲另类色综合网站| 波多野结衣黄色| 日韩高清a**址| 最爽无遮挡行房视频在线| 国产精品夫妻激情| 蜜桃久久久久| 麻豆映画在线观看| 六月丁香婷婷色狠狠久久| 欧美成人三级伦在线观看| 亚洲日本在线视频观看| 波多野结衣一区二区三区在线| 亚洲激情第一页| 四季久久免费一区二区三区四区| 国产欧美一区二区三区久久| 西野翔中文久久精品国产| 日韩一级免费看| 国产美女精品在线| a一级免费视频| 欧美日韩在线观看一区二区 | 国产成人一区二区三区小说| 久久男人av| av网站手机在线观看| 国产精品99久久久久久宅男| 蜜桃av.com| 欧美日韩亚洲综合一区| 成人在线播放视频| 国产精品99导航| 欧美理论视频| youjizzxxxx18| 国产人成一区二区三区影院| 最近免费中文字幕大全免费版视频| 亚洲精品一区二区三区蜜桃下载| 污视频在线免费观看网站| 91免费看网站| 亚洲特色特黄| 久久精品aⅴ无码中文字字幕重口| 依依成人精品视频| 黄色小视频免费观看| 久久人人爽人人爽人人片av高请| caoporn成人| 日本在线xxx| 久久这里都是精品| 五月婷婷六月婷婷| 中文字幕亚洲国产| 日韩毛片免费看| 2025韩国大尺度电影| 韩国毛片一区二区三区| 欧美黑人一级片| 精品福利一二区| 日韩伦理福利| 日韩.欧美.亚洲| 久久国产精品72免费观看| 久久中文免费视频| 精品欧美久久久| 中文字幕资源网在线观看免费| 欧美午夜精品理论片a级大开眼界 欧美午夜精品久久久久免费视 | 日本a级片在线播放| 成人一区在线看| 色屁屁影院www国产高清麻豆| 在线观看欧美视频| 成人噜噜噜噜| 国产视频九色蝌蚪| 国产欧美中文在线| a天堂视频在线| 久久久久久亚洲| 国产区精品区| 欧美性猛交乱大交| 欧美性猛交xxxxx水多| 日本网站在线免费观看视频| 亚洲曰本av电影| 免费一区视频| 日日噜噜夜夜狠狠久久波多野| 精品美女一区二区| 欧美色999| 中文字幕在线中文| 久久久久久免费| 99久久精品国产成人一区二区 | 一本色道久久88亚洲精品综合 | 欧美精品中文字幕一区二区| 精品亚洲免费视频| 国产午夜视频在线播放| 在线播放日韩av| 国产精品xxxav免费视频| 我要看一级黄色大片| 亚洲.国产.中文慕字在线| av大片在线看| 精品无码久久久久久久动漫| 久久精品噜噜噜成人av农村| 日本中文字幕免费| 久久精品国产亚洲| 免费av一区| 免费黄视频在线观看| 欧美唯美清纯偷拍| 深夜av在线| 成人毛片100部免费看| 国产日韩精品久久久|