精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

亚洲色图视频免费播放| 首页国产欧美久久| 亚洲精品狠狠操| 99热成人精品热久久66| 午夜激情在线观看| 成人免费观看av| 国产精品亚洲综合天堂夜夜| 国产亚洲色婷婷久久99精品| 国产探花一区| 亚洲成av人片在线观看香蕉| 亚洲天堂av线| 欧美xxxx黑人又粗又长| 久久精品亚洲麻豆av一区二区| 国产在线日韩在线| 成人毛片18女人毛片| 一本一道久久a久久精品蜜桃| 亚洲国产天堂久久国产91| 手机看片一级片| 午夜影院在线观看国产主播| 亚洲日本中文字幕区| 欧美动漫一区二区| 精品国产99久久久久久宅男i| 亚洲资源av| 久久久久久国产精品| 亚洲图片第一页| 日本亚洲不卡| 精品久久久影院| 日本国产一级片| 日韩欧美看国产| 性欧美大战久久久久久久久| 天堂av免费看| 3d成人动漫在线| 国产亚洲成av人在线观看导航| 成人动漫视频在线观看免费| 国产又粗又猛又爽又黄的| 噜噜噜在线观看免费视频日韩 | 最新日韩免费视频| 国产精品亚洲二区| 亚洲另类图片色| 一级欧美一级日韩片| 99ri日韩精品视频| 欧美videos大乳护士334| 亚洲网中文字幕| 超碰国产精品一区二页| 欧美日韩免费观看一区三区| 欧美性猛交久久久乱大交小说 | 亚洲天堂偷拍| 欧美丰满少妇xxxx| 久久久精品国产sm调教| 欧美全黄视频| 欧美高清激情视频| 久草免费在线观看视频| 激情文学一区| 国自产精品手机在线观看视频| 九九精品在线观看视频| 国一区二区在线观看| 欧美日本高清一区| 国产主播在线播放| 夜夜精品视频| 欧美综合在线观看| 中文字幕在线播| 日本成人在线视频网站| 国产精品久久一| 97超碰人人模人人人爽人人爱| 麻豆国产91在线播放| 国产日韩欧美综合| 99国产精品久久久久久久成人 | 欧美综合一区二区三区| 日韩一级理论片| 日韩福利影视| 欧美一区二区视频在线观看| 成人欧美精品一区二区| 精品久久ai电影| 亚洲欧美日韩久久久久久 | 亚洲精品欧美二区三区中文字幕| 亚洲在线色站| 欧美黑人xx片| 色天使久久综合网天天| 亚洲 激情 在线| 久久久久久亚洲精品美女| 精品国产电影一区二区| 波多野结衣 在线| 99成人超碰| 欧美激情精品在线| www.久久精品视频| 狠狠色丁香久久婷婷综| 国产精品手机视频| 国产粉嫩一区二区三区在线观看| 亚洲天堂a在线| 噜噜噜久久亚洲精品国产品麻豆| av有声小说一区二区三区| 欧美精品视频www在线观看| 国产综合内射日韩久| 啪啪亚洲精品| 欧美激情视频一区| 91麻豆精品在线| 国产成a人无v码亚洲福利| 欧美二区在线| 牛牛精品视频在线| 在线看日韩精品电影| 免费看91视频| 日本女优一区| 久久免费观看视频| 亚洲熟妇无码久久精品| www.色综合.com| 一区二区不卡在线视频 午夜欧美不卡' | 一区二区小视频| 成人爽a毛片一区二区免费| 视频一区视频二区视频三区视频四区国产| 色呦呦在线观看视频| 欧美在线短视频| 亚洲麻豆一区二区三区| 99九九热只有国产精品| 欧美一级免费看| 国产高清免费av| 国产精品久久久一本精品| 人人妻人人添人人爽欧美一区| 伊人久久大香伊蕉在人线观看热v| 日韩毛片在线看| 青青草原在线免费观看视频| 毛片av一区二区| 蜜桃av久久久亚洲精品| av在线不卡免费| 日韩精品专区在线| 成人做爰视频网站| 日韩一区欧美二区| 欧美精品亚洲精品| 色吧亚洲日本| 精品国产乱码久久久久久1区2区| 手机在线免费看片| 久久99蜜桃精品| 亚洲v日韩v欧美v综合| 345成人影院| 亚洲国产精品成人精品| 久久精品第一页| 国产乱码精品一区二区三区五月婷| 亚洲精品日韩在线观看| 欧美色网一区| 亚洲乱码国产乱码精品精天堂| 国产无码精品在线观看| 国产成人精品aa毛片| 99视频精品全部免费看| 精品国产亚洲一区二区三区大结局| 中文字幕亚洲无线码a| 亚洲精品久久久久久久蜜桃| 久久亚洲二区三区| 黄色片视频在线播放| 中文字幕伦av一区二区邻居| 欧美一级大片在线免费观看| 日本一二三区在线视频| 精品久久中文字幕久久av| 亚洲图片综合网| 国产日韩欧美一区在线| 欧美h视频在线| 欧美成人免费电影| 原创国产精品91| 中文无码精品一区二区三区| 国产精品女主播av| 久国产精品视频| 欧美全黄视频| 久久久久久久久久久久久9999| 日韩伦理福利| 中国人与牲禽动交精品| 一级片在线免费观看视频| 亚洲欧洲日本在线| 少妇熟女视频一区二区三区 | 中文字幕日韩欧美一区二区三区| 男生操女生视频在线观看| 亚洲91视频| 粉嫩av免费一区二区三区| 激情影院在线| 日韩黄色高清视频| 亚洲午夜在线播放| 亚洲精品免费播放| 丰满大乳奶做爰ⅹxx视频| 日韩黄色小视频| 日本丰满大乳奶| 欧美交a欧美精品喷水| 国产91精品最新在线播放| 日韩黄色影院| 亚洲国产精久久久久久| 无码人妻丰满熟妇区五十路| 亚洲欧洲99久久| 日韩av手机在线播放| 日本网站在线观看一区二区三区| 宅男在线精品国产免费观看| 成人资源在线| 国产精品日韩久久久久| 好吊日av在线| 中文字幕日韩欧美| 欧美性猛交 xxxx| 欧美色老头old∨ideo| 精品视频在线观看免费| 国产精品美女久久久久aⅴ| 精品国产免费久久久久久婷婷| 久久久蜜桃一区二区人| 可以在线看黄的网站| 国产成人短视频在线观看| 亚洲综合在线做性| 春暖花开亚洲一区二区三区| 欧美激情视频在线| 午夜在线视频播放| 日韩成人在线视频观看| 国产免费不卡av| 在线视频你懂得一区| 精品无码人妻一区二区三区品| 欧美国产精品一区| 午夜久久久久久久| 国产一区二区导航在线播放| 日韩精品一区二区三区久久| 欧美体内she精视频在线观看| 欧美下载看逼逼| 国产精品115| 91在线视频九色| 国产精品一区二区免费福利视频| 久久人人爽国产| 国产精品实拍| 国产亚洲精品va在线观看| 亚洲 美腿 欧美 偷拍| 欧美一级高清片| 亚洲综合免费视频| 在线观看视频一区二区| 国产精品久久久久久久久久精爆| 亚洲国产视频网站| 欧美黄色免费在线观看| 亚洲男同性视频| www.99热| 国产色爱av资源综合区| 国产高潮呻吟久久| 久久婷婷国产综合精品青草| 久久久高清视频| 成人免费视频网站在线观看| 少妇丰满尤物大尺度写真| 久久99精品国产麻豆不卡| www.日本一区| 日本中文一区二区三区| 亚洲狼人综合干| 七七婷婷婷婷精品国产| 亚洲三级视频网站| 日本aⅴ精品一区二区三区 | 日韩成人精品一区二区三区| 国产精品美女午夜av| 亚洲精品一区三区三区在线观看| 日韩免费不卡av| 日韩天堂在线| 国产精品老女人视频| 日本成人福利| 国产男女猛烈无遮挡91| 四虎国产精品免费久久| 国产日韩欧美中文在线播放| 北岛玲精品视频在线观看| 亚洲aaa激情| 无人区乱码一区二区三区| 超碰97国产在线| 波多野结衣欧美| 久久人人爽爽人人爽人人片av| 亚洲精品合集| 神马影院一区二区| 久久久久免费av| 日韩一区二区高清视频| 亚洲美女啪啪| 日本美女高潮视频| 丝袜脚交一区二区| 午夜精品久久久久久久99热影院| 国产精品一二三在| 高清中文字幕mv的电影| 97国产一区二区| 国产精品美女高潮无套| 亚洲天堂网中文字| 日韩女同强女同hd| 色爱区综合激月婷婷| 国产尤物在线观看| 精品国产乱码91久久久久久网站| 日产精品久久久久久久性色| 色偷偷偷综合中文字幕;dd| 精品176二区| 91成人在线播放| 日韩欧美专区| 国模精品娜娜一二三区| 欧洲专线二区三区| 成年丰满熟妇午夜免费视频| 国产精品久久久久9999高清| 182午夜在线观看| 白白色 亚洲乱淫| 成人黄色a级片| 亚洲一卡二卡三卡四卡五卡| 中文字幕一区二区人妻视频| 欧美一区二区视频免费观看| 邻家有女韩剧在线观看国语| 久久久97精品| 亚洲黄色中文字幕| 91色p视频在线| 蜜臀av免费一区二区三区| 日本在线视频www色| 新67194成人永久网站| 国产美女视频免费看| 91欧美一区二区| 国产一二三区精品| 欧美在线综合视频| 五月婷婷久久久| 欧美另类高清videos| 亚洲天堂一区二区| 精品久久久久久乱码天堂| 午夜精品视频一区二区三区在线看| 亚洲熟妇av日韩熟妇在线| 精品一区二区三区在线观看国产| 亚洲成av人片在线观看无| ㊣最新国产の精品bt伙计久久| 天天干天天干天天操| 日韩精品中文字幕在线一区| 免费看美女视频在线网站| 欧洲成人免费视频| 超碰成人在线免费| 九一免费在线观看| 免费人成黄页网站在线一区二区 | 亚洲第一色网站| 日韩在线中文视频| 性欧美超级视频| 久久精品成人一区二区三区蜜臀| 欧美69视频| 超碰在线超碰在线| 国产精品视频线看| 中文字幕在线天堂| 精品视频偷偷看在线观看| 成全电影大全在线观看| 97人人模人人爽人人喊38tv| 亚洲综合专区| 午夜国产福利在线观看| 国产精品毛片无遮挡高清| 亚洲精品成人在线视频| 亚洲精品成a人在线观看| wwww亚洲| 国产伦精品一区二区三| 欧美日一区二区三区在线观看国产免| 中文字幕66页| 亚洲天堂久久久久久久| 91精品视频免费在线观看 | а_天堂中文在线| av免费观看久久| 国语精品一区| 亚洲成a人无码| 洋洋成人永久网站入口| 亚洲成人第一区| 久久久欧美一区二区| jizzjizzjizz欧美| 蜜臀av无码一区二区三区| av在线免费不卡| 天堂网中文字幕| 国产亚洲欧美日韩一区二区| 99久久久国产精品免费调教网站 | 蜜芽在线免费观看| 91精品视频免费| 中文字幕日韩一区二区不卡| 欧美人与性动交α欧美精品| 亚洲最大成人综合| 天堂在线资源库| 国产成人97精品免费看片| 不卡av一区二区| 在线观看中文av| 亚洲第一在线综合网站| 日本护士...精品国| 国产精品久在线观看| 欧美在线三区| www国产视频| 91成人看片片| 里番在线观看网站| 成人自拍网站| 久久成人国产| 三级黄色片在线观看| 欧美xfplay| 香蕉久久免费电影| 尤物一区二区三区| 大尺度一区二区| 日韩色图在线观看| 日韩一区二区三区在线播放| 超碰在线成人| 中文久久久久久| 亚洲午夜视频在线观看| 精品影院一区| 成人黄色免费看| 国产日本精品| 日韩激情综合网| 亚洲精品www久久久| 欧美综合影院| 欧美精品99久久| 亚洲乱码日产精品bd| 欧美精品少妇| 亚洲xxx视频| 日日摸夜夜添夜夜添国产精品| 日本高清一二三区| 日韩精品免费在线播放| 精品国产麻豆| 丰满少妇在线观看| 亚洲成人激情av| 免费av网站在线看| 欧美日韩国产不卡在线看| 国产成人综合亚洲网站| 中文字幕 国产精品| 欧美激情性做爰免费视频| 日本一区二区高清不卡|