App內(nèi)根據(jù)手機(jī)上裝載的地圖App將其顯示在彈出的選擇框,選擇對應(yīng)地圖跳轉(zhuǎn)進(jìn)入地圖導(dǎo)航。需要用到- (BOOL)canOpenURL:(NSURL *)url NS_AVAILABLE_IOS(3_0);方法判斷手機(jī)是否已安裝相應(yīng)地圖App。
創(chuàng)新互聯(lián)專注于倉山網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供倉山營銷型網(wǎng)站建設(shè),倉山網(wǎng)站制作、倉山網(wǎng)頁設(shè)計(jì)、倉山網(wǎng)站官網(wǎng)定制、成都小程序開發(fā)服務(wù),打造倉山網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供倉山網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
要進(jìn)行跳轉(zhuǎn)需要先在xcode的plist文件內(nèi)將目標(biāo)App的url Scheme加入白名單(LSApplicationQueriesSchemes)。
樓主你好,一般我們安裝的地圖軟件都可以選擇2D和3D模式來查詢地圖的,相對來說2D數(shù)據(jù)比較小顯示的就比較快。一般我們使用2D就可以滿足了不過3D看上去效果會(huì)更直觀一下。你可以安裝騰訊地圖軟件呀,它覆蓋了全國400個(gè)城市的離線地圖下載,下載后查詢3D地圖更快速。而且它還有零流量地圖共功能,開啟后可以讓手機(jī)離線實(shí)現(xiàn)地點(diǎn)搜索、公交/駕車路線規(guī)劃、步行導(dǎo)航、駕車語音導(dǎo)航等功能,基本上日常所需的功能全部可以滿足,而且全程零流量。
用過微信的應(yīng)該都知道這個(gè)功能,對方發(fā)一個(gè)位置給你,點(diǎn)進(jìn)去地圖展示對方跟你的當(dāng)前位置,界面提供了選擇各個(gè)地圖應(yīng)用進(jìn)行導(dǎo)航,更好這次需求也要搞這個(gè)功能。
這個(gè)功能實(shí)現(xiàn)不難,個(gè)人感覺比應(yīng)用內(nèi)嵌入第三方地圖導(dǎo)航SDK用起來更舒服,更接地氣,逼格也高點(diǎn),主要要的是簡單(畢竟人家啥都處理好了)。
上項(xiàng)目效果圖(還是想吐槽下傻逼的產(chǎn)品,為啥不直接照搬微信的界面,至少比自己的好看)
這里有一個(gè)重點(diǎn),主要是彈出的選擇框的選項(xiàng)并不是固定的,而是根據(jù)你手機(jī)上有沒有安裝這個(gè)地圖應(yīng)用,沒有就不會(huì)出現(xiàn)。
這里就要用到
- (BOOL)canOpenURL:(NSURL*)urlNS_AVAILABLE_IOS(3_0);
判斷手機(jī)上有沒有安裝該地圖應(yīng)用。
所以要知道地圖應(yīng)用的url?Scheme。
這里提供了幾個(gè)常用地圖應(yīng)用的url?Scheme:
baidumap//百度地圖
iosamap//高德地圖
comgooglemaps//谷歌地圖
qqmap//騰訊地圖
….//其他地圖省略
蘋果地圖不需要,因?yàn)樗翘O果地圖啊,這樣也好,能保證沒有安裝其他地圖app,至少還有一個(gè)蘋果地圖,而且蘋果地圖在IOS9也做的越來越好了,本身API提供了一個(gè)跳轉(zhuǎn)打開方法。
這里插入一個(gè)小細(xì)節(jié),在IOS9之后,蘋果進(jìn)一步完善了安全機(jī)制,必須在plist里面設(shè)置url scheme白名單,不然無法打開對應(yīng)的應(yīng)用
前方高能,重點(diǎn)來了?。。。?/p>
這里我抽了個(gè)方法返回支持導(dǎo)航的地圖信息數(shù)組:
這里只要傳入提供的坐標(biāo)點(diǎn),就打包好了需要的信息。
什么,你說彈出?那玩意自己去寫,不想寫,自己去找,不然就用系統(tǒng)的actionSheet。
最后結(jié)尾還有個(gè)小插曲,由于我們后臺(tái)給的目標(biāo)經(jīng)緯度是百度坐標(biāo)系,項(xiàng)目用的也是百度地圖,界面上展示是沒啥問題了,但是由于不同的地圖有自己的坐標(biāo)系,而要用它們進(jìn)行導(dǎo)航,那傳給它們的必須是標(biāo)準(zhǔn)的經(jīng)緯度坐標(biāo),這就蛋疼了,百度這坑爹只有提供了標(biāo)準(zhǔn)的轉(zhuǎn)成它自己的坐標(biāo)系,而沒有提供反轉(zhuǎn)的方法,去官網(wǎng)開發(fā)者社區(qū)發(fā)帖,也沒用,只是回答你沒有提供,所以我猜傳言百度地圖SDK是實(shí)習(xí)生寫的還是有一定的可靠性。
沒辦法,只能求爺爺告奶奶,去查找對應(yīng)的資料,還是找到一個(gè)第三方的轉(zhuǎn)換方法 ,但是仍然有一定的偏差,能接受的就接受吧。
demo:
demo中有兩處這樣的判斷
原因是如下
1,App 調(diào)起百度地圖路線規(guī)劃進(jìn)行導(dǎo)航。百度 URL API :
2,App 調(diào)起高德地圖路線規(guī)劃進(jìn)行導(dǎo)航。高德 URL API:
LSApplicationQueriesSchemes
1,App 調(diào)起系統(tǒng)自帶高德地圖路線規(guī)劃進(jìn)行導(dǎo)航。